MySQL 8.0 FAQ: Replication Set up one server as the source and direct all writes to it. Then configure as many replicas as you have the budget and rackspace for, and distribute the reads among the source and the replicas. You can also start the replicas with the  --skip-innodb  option, enable the low_priority_updates  system variable, and set the  delay_key_write  system variable to ALL  to get speed improvements on the replica end. In this case, the replica uses nontransactional MyISAM  tables instead of  InnoDB  tables to get more speed by eliminating transactional overhead. See the guide to using replication as a scale-out solution, Section 17.4.5, “Using Replication for Scale-Out” . MySQL replication is most beneficial for a system that processes frequent reads and infrequent writes. In theory, by using a single-source/multiple-replica setup, you can scale the system by adding more replicas until you either run out of network bandwidth, or your update load grows to the point that the source cannot handle it. To determine how many replicas you can use before the added benefits begin to level out, and how much you can improve performance of your site, you must know your query patterns, and determine empirically by benchmarking the relationship between the throughput for reads and writes on a typical source and a typical replica. The example here shows a rather simplified calculation of what you can get with replication for a hypothetical system. Let  reads  and  writes  denote the number of reads and writes per second, respectively. Let’s say that system load consists of 10% writes and 90% reads, and we have determined by benchmarking that  reads  is 1200 - 2 *  writes . In other words, the system can do 1,200 reads per second with no writes, the average write is twice as slow as the average read, and the relationship is linear. Suppose that the source and each replica have the same capacity, and that we have one source and  N  replicas. Then we have for each server (source or replica): reads  = 1200 - 2 *  writes reads  = 9 *  writes  / ( N  + 1) (reads are split, but writes replicated to all replicas) 9 *  writes  / ( N  + 1) + 2 *  writes  = 1200 writes  = 1200 / (2 + 9/( N  + 1)) The last equation indicates the maximum number of writes for  N  replicas, given a maximum possible read rate of 1,200 per second and a ratio of nine reads per write. This analysis yields the following conclusions: •If  N  = 0 (which means we have no replication), our system can handle about 1200/11 = 109 writes per second. •If  N  = 1, we get up to 184 writes per second. •If  N  = 8, we get up to 400 writes per second. •If  N  = 17, we get up to 480 writes per second. 5272 A.14.7. What should I do to prepare client code in my own applications to use performance-enhancing replication? A.14.8. When and how much can MySQL replication improve the performance of my system?