MySQL集群架构全自动化实现切换(M-M-S-S)

2014-11-24 17:51:46 · 作者: · 浏览: 1

实现无人工干预下mysqlz中MM自动切换,S自动寻找存活的M同步数据,
图示如下:



1.正常情况下,写只有一个服务器在提供服务,另外一个备份,中间通过keepalived实现
2.只读服务器,可以多台服务器同时提供服务,也可以只有一台提供服务,keepalived都可以实现,我这边目前写的主要是一台提供服务。

环境搭建步骤:
1.给四台服务器安装mysql,keepalived。(版本一致)

2.master1中mysql,keepalived配置:



3.上面三个配置文件my.cnf文件每个机器都要server-id = 11此参数修改不一样即可
keepalived.conf 其中Slave1服务器跟Master1一样,其他两台去掉script "/opt/keepalived_check_mysql.sh"
vip也需要修改

4.mysql建立同步账号:
在Master1服务器上:


嫌麻烦就直接给整个网段授权:


在Master2上同样运行

5.Slave1,Slave2上建立同步


注意: master_log_file,master_log_pos参数是在master1上show master status;查到的。

6.Slave1,Slave2上检测脚本
checkmysql.sh :M1,M2状态检测
ChangeNode.sh:Slave对应远程Master服务器修改以及数据同步。
checkstatus.sh :修改Master后,停止再次修改,避免数据丢失。


修改Master脚本



#get the good master mysql status $Gip to tmp file



#check the changed is secussfull or fail



运行状态检测脚本:



分别把两个脚本放入crontab里面:



7.启动服务
在各个服务器上启动服务:



测试:
1.在Slave1上检查目前Master是哪台:



2.192.168.1.53上,停止MySQL



VIP自动漂移到Master2
Slave1,Slave2上状态如下:



3.在Master2插入数据:


查看Slave1,Slave2数据:


数据同步成功。

5.启动Master1 中mysql: