4服务器scheme的故障转移策略

我想弄清楚如何设置复制和故障切换在4个服务器(每个位置2个)任何服务器可能承担主angular色的情况下。 我最初的情况是以下一个:

  • 位置A的2台服务器(One Master,One Slave);
  • 位置B(2个从站)中的2台服务器。

为此,我正考虑使用在O'Reilly的“高性能MySQL”上提出的configurationMaster-Master Active-Passive,以便每个人都可以在需要时成为Master。

如果主人“死亡”,地点A的其他服务器将尽可能承担主angular色。 它总是比地点B上的服务器具有更高的优先级。如果地点A上没有服务器能够这样做,位置B上的服务器将只切换到主服务器。

由于MySQL无法自动处理,我需要一些其他的方式来实现这一点。 我已经读过心跳和Maatkit。 这是要走的路吗? 有没有人在类似的情况下使用这个? 有没有其他的方式去实现这一目标? 任何关于失败的指针将不胜感激。

我希望尽可能简单的避免像DRDB这样的东西。 我并不担心高可用性只是自动切换angular色的一种方法,没有太多的麻烦。

我正在使用SuSe Enterprise 10和MySQL 5.1.30社区。

提前致谢,

若昂

位置A:两个HA MySQL代理(serv1 ip 192.168.0.1,serv2 ip 192.168.0.2)

位置B:两个MySQL数据master-master(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 

loc1 serv1和serv2安装mysql-proxy和心跳

 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

的haresources

 mysql-proxy1 192.168.0.5 

192.168.0.5虚拟的mysql地址