Технология построения защищенных распределенных приложений



Pdf көрінісі
бет11/30
Дата05.02.2024
өлшемі0.74 Mb.
#490871
түріРеферат
1   ...   7   8   9   10   11   12   13   14   ...   30
Хадуп

2.2.4 Задержка репликации 
MySQL реализует асинхронную репликацию. Это означает, что данные на 
ведомом сервере могут появиться с небольшой задержкой. Поэтому, в 
последовательных операциях необходимо использовать чтение с ведущего 
сервера, чтобы получить актуальные данные: 
$master = mysql_connect('10.10.0.1', 'root', 'pwd'); 
$slave = mysql_connect('10.10.0.2', 'root', 'pwd'); 
# ... 
mysql_query('UPDATE users SET age = 25 WHERE id = 7', $master); 
$q = mysql_query ('SELECT * FROM users WHERE id = 7', $master); 
# При обращении к изменяемым данным, необходимо использовать 
# соединение с ведущим сервером 
# ... 
$q = mysql_query('SELECT * FROM photos ...', $slave); 
2.2.5 Выход из строя сервера при master-slave репликации 
При выходе из строя ведомого сервера, достаточно просто переключить 
все приложения на работу с ведущим. После этого восстановить репликацию на 
ведомом сервере и снова его запустить. 
Если выходит из строя ведущий сервер, нужно переключить все операции 
(и чтения и записи) на ведомый. Таким образом, он станет новым ведущим. 
После восстановления старого ведущего, настроить на нем реплику, и он станет 
новым ведомым. 
2.2.6 Резервирование 
Намного 
чаще 
репликацию master-slave используют 
не 
для 
масштабирования, а для резервирования. В этом случае, ведущий сервер 
обрабатывает все запросы от приложения. Ведомый сервер работает в 


24 
пассивном режиме. Но в случае выхода из строя ведущего, все операции 
переключаются на ведомый. 
2.2.7 Master-master репликация 
В этой схеме, любой из серверов может использоваться как для чтения
так и для записи (рисунок 5).
Рисунок 5 — Master-master репликация 
При использовании такого типа репликации достаточно выбирать 
случайное соединение из доступных мастеров: 
$masters = [ 
'10.10.0.1', 
'10.10.0.2', 
'10.10.0.3', 
]; 
$master = mysql_connect($masters[array_rand($masters)], 'root', 'pwd'); 
# ... 
mysql_query('INSERT INTO users ...', $master); 
# Выбор случайного Мастера для обработки соединений 


Достарыңызбен бөлісу:
1   ...   7   8   9   10   11   12   13   14   ...   30




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет