Я пытаюсь понять, как настроить репликацию и аварийное переключение в сценарии с 4 серверами (по 2 на каждое местоположение), где любой сервер может взять на себя роль мастера. Мой первоначальный сценарий следующий:
Для этого я думаю об использовании конфигурации Master-Master Active-Passive, предложенной в O'Reilly "High Performance MySQL", на всех из них, чтобы каждый мог стать Мастером, когда это необходимо.
Если Мастер "умирает", другой сервер из местоположения A принимает на себя роль Мастера, когда это возможно. Он всегда будет иметь больший приоритет, чем серверы в местоположении B. Сервер в местоположении B переключится на Master только в том случае, если ни один сервер в местоположении A не сможет это сделать.
Поскольку MySQL не может справиться с этим автоматически, мне нужен другой способ реализовать это. Я уже читал про сердцебиение и Мааткит. Это путь? Кто-нибудь использовал это в подобном сценарии? Есть ли другой способ добиться этого? Любые указатели на сбой будут оценены.
Я хочу, чтобы это было как можно проще, избегая таких вещей, как DRDB. Меня не беспокоит высокая доступность - это просто способ автоматического переключения ролей без лишних хлопот.
Я использую SuSe Enterprise 10 и MySQL 5.1.30-community.
Заранее спасибо,
Жуан
расположение A: два прокси-сервера HA MySQL (serv1 ip 192.168.0.1, serv2 ip 192.168.0.2)
расположение B: два мастер-мастера данных MySQL (serv1 ip 192.168.0.3, serv2 ip 192.168.0.4)
serv1
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
max_binlog_size = 200M
binlog_ignore_db = test
binlog_ignore_db = mysql
master-host = 192.168.0.4
master-user = replication
master-password = you_pass
master-port = 3306
mysql -u root -p
Enter password:
>grant replication slave on *.* to 'replication'@'192.168.0.4' identified by 'you_pass';
>flush privileges;
>quit;
/etc/init.d/mysql restart
serv2
server-id = 2
log_bin = /var/log/mysql/mysql-bin.log
max_binlog_size = 200M
binlog_ignore_db = test
binlog_ignore_db = mysql
master-host = 192.168.0.3
master-user = replication
master-password = you_pass
master-port = 3306
mysql -u root -p
Enter password:
>grant replication slave on *.* to 'replication'@'192.168.0.3' identified by 'you_pass';
>flush privileges;
>quit;
/etc/init.d/mysql restart
mysql —u root —p
Enter password:
>show slave status \G
loc a serv1 и serv2 установить mysql-proxy и heartbeat
mysql-proxy --proxy-backend-addresses=192.168.0.3 \
--proxy-backend-addresses=192.168.0.4 \
--proxy-address=:3306
—daemon
ключ авторизации
auth 2
2 sha1 your-strong-password
ha.cf
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 10
initdead 120
bcast eth0
udpport 694
auto_failback on
node mysql-proxy1
node mysql-proxy2
mysql-proxy1 и mysql-proxy1 uname -n на этом хосте
ресурсы
mysql-proxy1 192.168.0.5
192.168.0.5 виртуальный адрес mysql