Centos6.0系统lvs+keepalived+mysql实现mysql数据库热备主主复制

今天这篇文章接着昨天的相关知识,一样是为了前天刚做的mysql热备;

大家知道实现mysql_Ha的方案有很多,服务器空间,常见的heartbeat、keepalived,这里说的就是keepalived,优点就是简单,快速,下面就是详情了;

1、系统:Centos6.0;lamp平台(lamp平台是我一个习惯,非必须)

vip:192.168.135.200

master:192.168.135.134

slave:192.168.135.135

实现134实时复制135,135实时复制134,也就是说修改每一个数据库都会数据统一,master机器配置好点,我这边配置preempt(抢占),也就说134挂了以后,135提供服务,134恢复以后,继续134为master提供服务;

master(192.168.135.134)操作:

yum install http mysql* php* ipvsadm keepalived -y

1>、修改MySQL配置文件

两台MySQL均要开启binlog日志功能,在MySQL配置文件[MySQLd]段中加上log-bin=mysql-bin选项

两台MySQL的server-ID不能一样,默认情况下两台MySQL的serverID都是1,、其中一台修改为2;

2>、初始化下服务

service httpd restart

service mysqld restart

关闭服务:service iptables stop

修改selinux

3>、首先先将两台机器的同步做好;

master:同步slave上的数据库

授权用户;grant replication slave on *.* to 'leo'@'%' identified by 'leo123';

然后两台机器同时启动slave

start slave

查看slave状态

检查主从同步,如果您看到Slave_IO_Running和Slave_SQL_Running均为Yes,则主从复制连接正常。

show slave status\G

重点查看圈住的地方

在slave机器上同样查看是否正常

test:现在在两台服务器上其中一台,修改下数据,看看另一台的状况是否也修改,比如:

在另一台发现已经同步过去了;

2、接下来配置keepalived

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived全局定义(global definition)配置global_defs { notification_email { coffee_lanshan@sina.com 故障联系人 } notification_email_from admin@example.com 故障发送人 smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id Mysql_ha}global_defs全局配置标识 notification_email { coffee_lanshan@sina.com lansgg@sina.com } VRRP实例(instance)vrrp_instance mysql{ state MASTER state 指定instance(Initial)的初始状态,实质是经过优先级决定 interface eth0 实例绑定的网卡,因为在配置虚拟IP的时候必须是在已有的网卡上添加的 virtual_router_id 50 这里设置VRID,这里非常重要,相同的VRID为一个组,他将决定多播的MAC地址 priority 100 设置本节点的优先级,优先级高的为master advert_int 1 检查间隔,默认为1秒 preempt 设置抢占,这里只能设置在state为master的节点上,而且这个节点的优先级必须别另外的高 authentication { auth_type PASS 认证方式,可以是PASS或AH两种认证方式 auth_pass 123456 认证密码 } virtual_ipaddress { 192.168.152.200 这里设置的就是VIP,也就是虚拟IP地址,他随着state的变化而增加删除, }}virtual_server 192.168.135.200 3306 { 设置一个virtual server: VIP:Vport delay_loop 2 service polling的delay时间,即服务轮询的时间间隔 lb_algo wrr LVS调度算法 rr|wrr|lc|wlc|lblc|sh|dh lb_kind DR LVS集群模式 NAT|DR|TUN persistence_timeout 60 会话保持时间(秒为单位),即以用户在120秒内被分配到同一个后端realserver protocol TCP 健康检查用的是TCP还是UDP real_server 192.168.135.134 3306 { 后端真实节点主机的权重等设置,主要,后端有几台这里就要设置几个 weight 3 给每台的权重,0表示失效(不知给他转发请求知道他恢复正常),默认是1# notify_up <STRING> | <QUOTED-STRING> #检查服务器正常(UP)后,要执行的脚本 notify_down /usr/local/Mysql/bin/mysql.sh 检查服务器失败(down)后,要执行的脚本#下面是常用的健康检查方式,健康检查方式一共有HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK这些方式 TCP_CHECK { connect_timeout 10 nb_get_retry 3 delay_before_retry 3 connect_port 3306}}}

编写检测服务down后所要执行的脚本

#!/bin/shpkill keepalived

简单吧,只要mysqld进程不见了,就杀掉keepalived,让备机顶替

3、在备机操作keepalived

上master的基本一样,只是几个地方修改下而已

只有经历过地狱般的折磨,才有征服天堂的力量。

Centos6.0系统lvs+keepalived+mysql实现mysql数据库热备主主复制

相关文章:

你感兴趣的文章:

标签云: