使用keepalived实现mysql主从复制的自动切换
2024-08-25 07:26:43
最近测试了一下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
最新文章
- 安装Oracle 12c精简客户端(不带数据库)
- CSS基础3
- java修改图片大小
- retinajs 使用方法
- Redis 资源
- Python 学习笔记三
- 用命令实现SQLServerr的备份与还原
- [LeetCode]题解(python):053-Maximum Subarray
- PPTP --VPN配置
- RPi 2B Raspbian SD卡内部架构
- C# Generic(转载)
- 使用git pull时,项目没有更新?
- Csharp多态的实现(虚方法)
- PHP使用JPG生成GIF动画图片,基于php_imagick_st-Q8.dll
- 【Android Developers Training】 3. 构建一个简单UI
- ubuntu18.04安装搜狗拼音
- ubuntu/deepin 下 Sha 哈 dow 哈 socks 全局配置
- Linux下批量修改文件名(rename)
- js framework comparation
- 【小白的CFD之旅】20 计算区域的构建
热门文章
- Android 图片浏览器 从原来位置放大至全屏显示
- 类似qq的左滑菜单栏简单实现
- linux 下C语言学习路线
- [Python Fabric] [SSH] Mac OS X 10.9 + Vagrant虚拟环境使用Python Fabric进行SSH远程登录的简单实验
- 【C】二级指针探秘 &; 星号的两种用法(1.与基本类型结合形成另一种类型,比如与int结合形成int* 2.取值操作)
- PyCharm 3.4.1注册码
- 领域设计之模型充血、Repository对象注入
- Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2 path 解决办法
- struts2 配置拦截器
- 页面上常用的一些小功能--QQ、回到顶部