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)
如无特殊说明,文章均为本站原创,转载请注明出处
本文永久链接地址:https://www.xionghaier.cn/archives/474.html
该文章由
这货来去如风,什么鬼都没留下!!!