使用keepalived实现mysql主从复制的自动切换

最近测试了一下mysql+keepalived实现主从自动切换,主从都需要安装keepalived,使用vip漂移实现主从自动切换,这里主要记录的是keepalived的文件配置。

这里mysql搭建的是双主。

 

环境:

主:192.168.184.128

从:192.168.184.133

vip:192.168.184.132

两台服务器配置的均是BACKUP,主机优先级是100,从机优先级是90.均为非抢占模式nopreempt(只有BACKUP才可以设置为nopreempt),设置非抢占模式后,在原主机恢复并正常启动keepalived后,不会自动切回,若想切回master,只需去掉该节点的nopreempt选项并且将priority改的比其他节点大,然后重新加载配置文件即可(等MASTER切过来之后再将配置文件改回去再reload一下)。

主从配置文件除了优先级priority和virtual_server中的real_server不一样外,其他均一样。

notify_master 是切换为master时执行的脚本,主要用于判断主从是否已同步,并记录下主从切换时的日志位置。
notify_backup 是切换为backup时执行的脚本,主要是修改一些使用于从库的参数。
nofify_stop   是keepalived服务停掉后执行的脚本,主要是配置一些参数,并判断是否存在写操作。
notify_down /data/mysql/bin/MySQL.sh部分是在mysql 3306端口不通时执行的操作,脚本内容是:
#! /bin/sh
pkill keepalived

keepalived停掉后就会发生主从切换。

 

主机keepalived.conf
global_defs {
   notification_email{
   XXXX
}
   notification_email_from XXX
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id KeepAlive_Mysql
}
vrrp_instance VI_1 {
    state BACKUP
    nopreempt
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    notify_master /home/sh/master.sh
    notify_backup /home/sh/backup.sh
    nofify_stop  /home/sh/stop.sh
    smtp_alert
    virtual_ipaddress {
       192.168.184.132
    }
}
virtual_server 192.168.184.132 3306 {
      delay_loop 2
      lb_algo wrr
      lb_kind DR
      persistence_timeout 60
      protocol TCP
      real_server 192.168.184.133 3306 {
      weight 3
      notify_down /data/mysql/bin/MySQL.sh
      TCP_CHECK {
      connect_timeout 10
      nb_get_retry 3
      delay_before_retry 3
      connect_port 3306
      }
      }
}

 

 从机keepalived.conf

global_defs {
   notification_email{
   XXXX
}
   notification_email_from XXXX
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id KeepAlive_Mysql
}
vrrp_instance VI_1 {
    state BACKUP
    nopreempt
    interface eth0
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    notify_master /home/sh/master.sh
    notify_backup /home/sh/backup.sh
    nofify_stop  /home/sh/stop.sh
    smtp_alert
    virtual_ipaddress {
       192.168.184.132
    }
}
virtual_server 192.168.184.132 3306 {
      delay_loop 2
      lb_algo wrr
      lb_kind DR
      persistence_timeout 60
      protocol TCP
      real_server 192.168.184.128 3306 {
      weight 3
      notify_down /data/mysql/bin/MySQL.sh
      TCP_CHECK {
      connect_timeout 10
      nb_get_retry 3
      delay_before_retry 3
      connect_port 3306
      }
      }
}

 

关于keepalived相关参数的说明可参考:

http://outofmemory.cn/wiki/keepalived-configuration

http://www.keepalived.org/documentation.html

posted on 2016-05-05 10:56  Still water run deep  阅读(13407)  评论(0编辑  收藏  举报

导航