1 .解决atlas与mha结合使用解决方案
1.1 解决atlas与mha结合使用解决方案
问题点:
如果开启了MHA并且配置了Atlas读写分离。那么就会有一个问题。因为之前atlas都是配置好主库IP和从库IP的。一旦主库宕机,那么MHA就 会将VIP漂移到从库。那么atlas的读写分离就会出现问题。因为配置文件里面已经规定了写定了IP,谁是主谁是从。就算是有VIP,但是变为 主库的从库的IP该如何摘除???
解决思路:
所有mysql服务器都装atlas。一旦主库宕机(不管是服务宕还是主机宕),那么atlas就随之关闭(通过死循环检查是否有虚拟IP来判断, 主库是否宕机)。从库一旦检查到自己有VIP那么角色就成为主库,那么atlas就启动(通过死循环来检测是否有vip。如果有就启动atlas) 每台的atlas配置文件不相同,只需要将自己的ip从从库中去除即可
1.2 实际操作步骤:
- 所有MySQL主机安装Atlas。
- 修改Atlas配置文件
- 启动mha。实现MySQL高可用
- 配置VIP(主库配置)
- 开启监控脚本
- 故障模拟测试
#所有MySQL主机安装Atlas(之前db01已经安装过就不需要在安装了) [root@mysql-db02 tools]# ll total 4972 -rw-r--r-- 1 root root 4963681 Jul 2 23:44 Atlas-2.2.1.el6.x86_64.rpm [root@mysql-db02 tools]# rpm -ivh Atlas-2.2.1.el6.x86_64.rpm Preparing... ########################################### [100%] 1:Atlas ########################################### [100%] #安装db03 [root@mysql-db03 tools]# ll total 4972 -rw-r--r-- 1 root root 4963681 Jul 2 23:44 Atlas-2.2.1.el6.x86_64.rpm [root@mysql-db02 tools]# rpm -ivh Atlas-2.2.1.el6.x86_64.rpm Preparing... ########################################### [100%] 1:Atlas ########################################### [100%] #修改Atlas配置文件,只需要修改从库即可 [root@mysql-db02 ~]# vim /usr/local/mysql-proxy/conf/test.cnf ………… #Atlas后端连接的MySQL主库的IP和端口,可设置多项,用逗号分隔 proxy-backend-addresses=118.190.201.25:3307 #Atlas后端连接的MySQL从库的IP和端口,@后面的数字代表权重,用来作负载均衡,若省略则默认为1,可设置多项,用逗号分隔 proxy-read-only-backend-addresses=118.190.201.70:3307 ………… [root@mysql-db03 ~]# vim /usr/local/mysql-proxy/conf/test.cnf ……… #Atlas后端连接的MySQL主库的IP和端口,可设置多项,用逗号分隔 proxy-backend-addresses=118.190.201.25:3307 #Atlas后端连接的MySQL从库的IP和端口,@后面的数字代表权重,用来作负载均衡,若省略则默认为1,可设置多项,用逗号分隔 proxy-read-only-backend-addresses=118.190.201.69:3307 ……… PS:这里只需要将从库地址填写为其他从库地址即可。连接IP因为使用的是VIP所以不需要进行修改 #启动mha。实现MySQL高可用 #检查mha配置文件 [root@mysql-db03 ~]# cat /etc/mha/app1.cnf [server default] manager_log=/var/log/mha/app1/manager manager_workdir=/var/log/mha/app1 master_binlog_dir=/application/mysql/data master_ip_failover_script=/usr/local/bin/master_ip_failover password=mha ping_interval=2 repl_password=123456 repl_user=rep ssh_user=root user=mha [server1] hostname=118.190.201.68 port=3307 [server2] hostname=118.190.201.69 port=3307 [server3] hostname=118.190.201.70 port=3307 [binlog1] hostname=118.190.201.70 master_binlog_dir=/data/mysql/binlog/ no_master=1 #拉取binlog日志,(因为配置了binlog-server) [root@mysql-db03 binlog]# cd /data/mysql/binlog/ [root@mysql-db03 binlog]# mysqlbinlog -R --host=10.0.0.51 --port=3307 --user=mha --password=mha --raw --stop-never mysql-bin.000001 & #启动mha [root@mysql-db03 binlog]# nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/mha/app1/manager.log 2>&1 #配置VIP(主库配置) [root@mysql-db01 ~]# ifconfig eht0:0 118.190.201.25/24 up #启动监控脚本 #脚本内容 [root@mysql-db01 ~]# cat switch_atlas.sh #!/bin/bash while true do Vip=`ifconfig eth0:0|awk -F"[ :]+" 'NR==2{print $4}'` Status=`ps -ef|grep mysql-proxy|grep -v "grep mysql-proxy"|wc -l` if [ "$Vip" == '118.190.201.25' ] then if [ "$Status" != '2' ] then /usr/local/mysql-proxy/bin/mysql-proxyd test start 2>&1 >/dev/null fi else if [ "$Status" == '2' ] then /usr/local/mysql-proxy/bin/mysql-proxyd test stop 2>&1 >/dev/null fi fi sleep 1 done #启动脚本(所有MySQL服务器都开启) [root@mysql-db01 ~]# sh switch_atlas.sh & [root@mysql-db02 ~]# sh switch_atlas.sh & [root@mysql-db03 ~]# sh switch_atlas.sh & #下面就可以进行测试了 #模拟主库宕机 [root@mysql-db01 ~]# /etc/init.d/mysqld stop Shutting down MySQL...... SUCCESS! #检查atlas状态,atlas有两个进程,如果是2代表开启。 [root@mysql-db01 ~]# ps -ef|grep mysql-proxy|grep -v "grep mysql-proxy"|wc -l 0 #新主库上查看atlas状态 [root@mysql-db02 ~]# ps -ef|grep mysql-proxy|grep -v "grep mysql-proxy"|wc -l 2 #检查VIP是否漂移 [root@mysql-db02 ~]# ifconfig eth0:0 eth0:0 Link encap:Ethernet HWaddr 00:50:56:28:F8:72 inet addr:118.190.201.25 Bcast:118.190.201.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 #登录atlas管理界面,查看后端代理的库 [root@mysql-db02 ~]# mysql -uuser -ppwd -h127.0.0.1 -P2345 mysql> SELECT * FROM backends; +-------------+------------------------+-------+------+ | backend_ndx | address | state | type | +-------------+------------------------+-------+------+ | 1 | 118.190.201.25:3307 | up | rw | #主库读写 | 2 | 118.190.201.70:3307 | up | ro | #从库只读(read-only) +-------------+------------------------+-------+------+ 2 rows in set (0.00 sec)
如无特殊说明,文章均为本站原创,转载请注明出处
- 转载请注明来源:解决atlas与mha结合使用方案
- 本文永久链接地址:https://www.xionghaier.cn/archives/474.html