...
The idea is to have MASTER/SLAVE(s) configuration. This will separate WRITE/READ database requests between 2+ servers (1 Master and 1+ Slaves replicated from Master).
- all Admin requests go to MASTER
- all Front READ requests go to SLAVE
- all Front WRITE requests go to MASTER
- all Front Search READ go to MASTER
To enable load balancing:
- add $_CONFIG['Database']['LoadBalancing'] = '1'; to /system/config.php file
create /system/db_servers.php file with following content:
Code Block <?php $_CONFIG['Databases'] = Array ( Array ( 'DBHost' => 'slave.host1', 'DBUser' => 'slave.user1', 'DBUserPassword' => 'slave.user.password1', 'DBLoad' => 1, ), Array ( 'DBHost' => 'slave.host2', 'DBUser' => 'slave.user2', 'DBUserPassword' => 'slave.user.password2', 'DBLoad' => 1, 'DBMaxLag' => 15, // optional, slave replication delay in seconds 'DBMaxThreads' => 100, // optional, when slave thread count is above this number, then it won't be used ), );
only Slave Servers are listed in file above, since database server defined in /system/config.php is considered as Master Server for backwards compatibility.
...