22
ведущий сервер
отвечает за изменения данных, а
ведомый за чтение
(рисунок 3).
Рисунок 3 — Master-slave репликация
В приложении нужно использовать два соединения — одно для ведущего
сервера, второе для ведомого.
$master = mysql_connect('10.10.0.1', 'root', 'pwd');
$slave = mysql_connect('10.10.0.2', 'root', 'pwd');
# ...
mysql_query('INSERT INTO users ...', $master);
# ...
$q = mysql_query('SELECT * FROM photos ...', $slave);
# Используем два соединения для записи и чтения соответственно
2.2.3 Master-slave репликация на несколько slave серверов
Преимущество
этого типа репликации в том,
что можно использовать
более одного ведомого сервера. Обычно следует использовать не более 20
ведомых серверов при работе с одним ведущим (рисунок 4).
Рисунок 4 — Master-slave репликация на несколько slave серверов
запись
PHP
ведомый
MySQL
чтение
ведомый
MySQL
ведомый
MySQL
чтение
чтение
ведущий
MySQL
чтение
ведущий
MySQL
PHP
ведомый
MySQL
чтение
чтение
запись
10.10.0.1
10.10.0.2
23
Тогда в приложении один из ведомых серверов выбирается для обработки
запросов случайным образом:
$master = mysql_connect('10.10.0.1', 'root', 'pwd');
$slaves = [
'10.10.0.2',
'10.10.0.3',
'10.10.0.4',
];
$slave = mysql_connect($slaves[array_rand($slaves)], 'root', 'pwd');
# ...
mysql_query('INSERT INTO users ...', $master);
# ...
$q = mysql_query('SELECT * FROM photos ...', $slave);
Достарыңызбен бөлісу: