利用KEEPALIVED构建mysql主主复制
-
概述:
MYSQL-HA有很多的实现方案,比较常见的是master+keepalived来实现MySQL-HA,来进行实现;两台MYSQL互为主从关系,通过Keepalived配置虚拟IP,实现当其中的一台MYSQL数据库宕机后,应用能够自动切换到另外一台MYSQL数据库,保证系统的高可用;在实际的生产环境中,也是通过这个方案来部署的,相信应该有值得借鉴的地方;
-
环境说明
搭建mysql的主主复制步骤(请看链接http://blog.itpub.net/12679300/viewspace-1313645/)
主机名 |
IP地址 |
虚拟ip(VIP) |
Mysql01 |
192.168.47.149 |
192.168.47.140 |
Mysql02 |
192.168.47.148 |
192.168.47.140 |
两台数据库上面设置相应的host文件
vim /etc/hosts 127.0.0.1 Mysql01 localhost Mysql01 192.168.47.149 Mysql01 192.168.47.148 Mysql02 |
-
Keepalived的安装
3.1 #yum install keepalived –y
cat /etc/keepalived/keepalived.conf
#! Configuration File for keepalived global_defs { router_id Mysql01 #修改为自己的主机名 } ##################第一部分################### vrrp_instance VI_1 { state BACKUP #都修改成BACKUP interface eth0 virtual_router_id 60 #默认51 主从都修改为60 priority 100 #优先级(1-254之间),另一台改为90,备用节点必须比主节点优先级低。 advert_int 1 nopreempt #不抢占资源,意思就是它活了之后也不会再把主抢回来 authentication { #设置验证信息,两个节点必须一致 auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.47.140 } } ##################第二部分################### virtual_server 192.168.47.140 3306 { delay_loop 6 lb_algo wrr #LVS算法 lb_kind DR #LVS模式 nat_mask 255.255.255.0 persistence_timeout 50 #会话保持时间 protocol TCP real_server 192.168.47.149 3306 { weight 1 notify_down /usr/local/script/mysql.sh #检测到服务down后执行的脚本 TCP_CHECK { connect_timeout 10 #连接超时时间 nb_get_retry 3 #重连次数 connect_port 3306 #健康检查端口 } } } |
3.3 Mysql02进行参数文件的修改
cat /etc/keepalived/keepalived.conf
#! Configuration File for keepalived global_defs { router_id Mysql02 #修改为自己的主机名 } ##################第一部分################### vrrp_instance VI_1 { state BACKUP #都修改成BACKUP interface eth0 virtual_router_id 60 #默认51 主从都修改为60 priority 80 #在mysql-ha1上LVS上修改成100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.47.140 } } ##################第二部分################### virtual_server 192.168.47.140 3306 { delay_loop 6 lb_algo wrr lb_kind DR nat_mask 255.255.255.0 persistence_timeout 50 protocol TCP real_server 192.168.47.140 3306 { weight 1 notify_down /usr/local/script/mysql.sh #进行数据库状态的判断 TCP_CHECK { connect_timeout 10 nb_get_retry 3 connect_port 3306 } } } |
参数说明:
virtual_ipaddress:虚拟IP地址(VIP)
interface :网卡设备名称
virtual_server VIP:及Mysql服务端口
real_server :真实服务器地址
3.4 分别走两台mysql数据库上面创建以下脚本,用于判断数据库的状态
vim /usr/local/script/mysql.sh #!/bin/bash /etc/init.d/keepalived stop /etc/init.d/keepalived start |
3.5 keepalived的常用脚本
启动keepalived服务:service keepalived start
查看keepalived服务:service keepalived status
停止keepalived服务:service keepalived stop
3.6 进行测试
a) 使用PS命令检测服务运行状态
Ps -ef|grep keepalived
Ps -ef|grep mysql
b) 查看系统日志,确定keepalived运行正确
less /var/log/message
c) ip a查看keepalived的运行情况
注意事项:先启动mysql后启动keepalived。
********************************************************************************************************本文作者:JOHN QQ:1916066696 (请备注数据库)
ORACLE技术博客:ORACLE 猎人笔记 http://blog.itpub.net/12679300/
请扫描加微信号!
******************************************************************************************