最近测试了一下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
router_id KeepAlive_Mysql
}
vrrp_instance VI_1 {
state BACKUP
nopreempt
interface eth0
virtual_router_id
priority
advert_int
authentication {
auth_type PASS
auth_pass
}
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 {
delay_loop
lb_algo wrr
lb_kind DR
persistence_timeout
protocol TCP
real_server 192.168.184.133 {
weight
notify_down /data/mysql/bin/MySQL.sh
TCP_CHECK {
connect_timeout
nb_get_retry
delay_before_retry
connect_port
}
}
}

从机keepalived.conf

global_defs {
notification_email{
XXXX
}
notification_email_from XXXX
smtp_server 127.0.0.1
smtp_connect_timeout
router_id KeepAlive_Mysql
}
vrrp_instance VI_1 {
state BACKUP
nopreempt
interface eth0
virtual_router_id
priority
advert_int
authentication {
auth_type PASS
auth_pass
}
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 {
delay_loop
lb_algo wrr
lb_kind DR
persistence_timeout
protocol TCP
real_server 192.168.184.128 {
weight
notify_down /data/mysql/bin/MySQL.sh
TCP_CHECK {
connect_timeout
nb_get_retry
delay_before_retry
connect_port
}
}
}

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

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

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

最新文章

  1. 安装Oracle 12c精简客户端(不带数据库)
  2. CSS基础3
  3. java修改图片大小
  4. retinajs 使用方法
  5. Redis 资源
  6. Python 学习笔记三
  7. 用命令实现SQLServerr的备份与还原
  8. [LeetCode]题解(python):053-Maximum Subarray
  9. PPTP --VPN配置
  10. RPi 2B Raspbian SD卡内部架构
  11. C# Generic(转载)
  12. 使用git pull时,项目没有更新?
  13. Csharp多态的实现(虚方法)
  14. PHP使用JPG生成GIF动画图片,基于php_imagick_st-Q8.dll
  15. 【Android Developers Training】 3. 构建一个简单UI
  16. ubuntu18.04安装搜狗拼音
  17. ubuntu/deepin 下 Sha 哈 dow 哈 socks 全局配置
  18. Linux下批量修改文件名(rename)
  19. js framework comparation
  20. 【小白的CFD之旅】20 计算区域的构建

热门文章

  1. Android 图片浏览器 从原来位置放大至全屏显示
  2. 类似qq的左滑菜单栏简单实现
  3. linux 下C语言学习路线
  4. [Python Fabric] [SSH] Mac OS X 10.9 + Vagrant虚拟环境使用Python Fabric进行SSH远程登录的简单实验
  5. 【C】二级指针探秘 & 星号的两种用法(1.与基本类型结合形成另一种类型,比如与int结合形成int* 2.取值操作)
  6. PyCharm 3.4.1注册码
  7. 领域设计之模型充血、Repository对象注入
  8. Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2 path 解决办法
  9. struts2 配置拦截器
  10. 页面上常用的一些小功能--QQ、回到顶部