利用Keepalived构建MySQL主主复制

2014-11-24 17:11:33 · 作者: · 浏览: 0

概述:


MySQL-HA有很多的实现方案,比较常见的是master+keepalived来实现MySQL-HA,来进行实现;两台MySQL互为主从关系,通过Keepalived配置虚拟IP,实现当其中的一台MySQL数据库宕机后,应用能够自动切换到另外一台MySQL数据库,保证系统的高可用;在实际的生产环境中,也是通过这个方案来部署的,相信应该有值得借鉴的地方;


2.环境说明


两台数据库上面设置相应的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



3.2 Mysql01进行参数文件的修改


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


tail -f /var/log/messages


c) ip a查看keepalived的运行情况



注意事项:先启动mysql后启动keepalived。