4 台服务器场景的故障转移策略

4 台服务器场景的故障转移策略

我正在尝试弄清楚如何在具有 4 台服务器(每个位置 2 台)的场景中设置复制和故障转移,其中任何服务器都可以承担主服务器角色。我的初始场景如下:

  • 位置 A 有 2 台服务器 (一台主服务器,一台从服务器);
  • 位置 B 有 2 台服务器 (两个从属服务器)。

为此,我正在考虑在所有这些服务器上使用 O'Reilly 的“高性能 MySQL”中建议的 Master-Master Active-Passive 配置,以便每个服务器在需要时都可以成为 Master。

如果主服务器“死亡”,则位置 A 上的其他服务器将尽可能承担主服务器角色。它始终比位置 B 上的服务器具有更高的优先级。只有当位置 A 上的服务器都无法切换为主服务器时,位置 B 上的服务器才会切换为主服务器。

由于 MySQL 无法自动处理这个问题,我需要其他方法来实现它。我已经阅读了有关 heartbeat 和 Maatkit 的文章。这是可行的方法吗?有人在类似情况下使用过它吗?还有其他方法可以实现这一点吗?任何有关故障的指示都将不胜感激。

我希望尽可能保持简单,避免使用诸如 DRDB 之类的东西。我并不关心高可用性,只是希望能够自动切换角色,而不会带来太多麻烦。

我正在使用 SuSe Enterprise 10 和 MySQL 5.1.30-community。

提前致谢,

若昂

答案1

位置 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

哈夫

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地址

相关内容