当前位置: 首页 > news >正文

MySQL双主Keepalived抢占配置手册

MySQL双主Keepalived抢占配置手册

  以下是为服务器(192.168.43.218 和 192.168.43.219)配置Keepalived高可用的完整手册,虚拟IP(VIP)为 192.168.43.222,并已按要求将虚拟路由器ID设置为 222。此配置能确保当一台MySQL服务器故障时,VIP自动漂移到另一台,实现高可用。

配置规划

组件

服务器 1 (Master-1)

服务器 2 (Master-2)

说明

真实IP

192.168.43.218

192.168.43.219

服务器的固定IP

虚拟IP (VIP)

192.168.43.222 (主)

192.168.43.222 (备)

对应用层提供服务的浮动IP

Keepalived角色

MASTER

BACKUP

初始状态

优先级 (priority)

150

100

MASTER优先级需高于BACKUP

虚拟路由器ID

222

222

关键修改点,确保全网唯一

网卡接口

需根据实际修改(如ens160、eth0)

需根据实际修改(如ens160、eth0)

使用ip a命令查看本机网卡名

安装Keepalived

在两台服务器上执行

# 安装Keepalived
yum install -y keepalived
#yum -y install keepalived ipvsadm mailx
systemctl enable keepalived
# 设置开机自启(暂不启动)
#systemctl enable keepalived
#groupadd -r keepalived_script
#useradd -r -g keepalived_script -s /sbin/nologin keepalived_script

 配置Keepalived  

主节点配置 (192.168.43.218)

编辑配置文件 /etc/keepalived/keepalived.conf,内容如下:

cat > /etc/keepalived/keepalived.conf << 'EOF'
# ================================================================
# db218 节点 keepalived 配置文件
# 角色:MASTER(初始写入节点)
# 虚拟 IP:192.168.43.222
# ================================================================global_defs {# 本机唯一标识,日志中便于定位router_id mysql_218# 启用性能优化选项max_auto_priority# 以 root 身份运行脚本,并启用脚本安全检查script_user rootenable_script_security# 跳过对通告地址的校验,加速切换vrrp_skip_check_adv_addr
}# ------------------------------------------------------------
# MySQL 健康检查脚本定义
# ------------------------------------------------------------
vrrp_script chk_mysql {# 检查脚本路径script "/etc/keepalived/check_mysql.sh"# 每 2 秒检查一次interval 2# 失败时优先级 -60,确保低于 BACKUPweight -60# 连续 2 次失败才判定为不可用fall 2# 连续 2 次成功才恢复rise 2
}# 实例名字(自定义),同一对主备须同名,否则互相认不到。
vrrp_instance VI_1 {state MASTER              # 初始状态:MASTERinterface ens160          # 绑定网卡,需与 ip a 看到的名称一致virtual_router_id 222     # 主备必须相同,范围 1-255priority 150              # 优先级,高于 BACKUP(100)advert_int 2              # 心跳间隔 2 秒# 优化ARP发送策略garp_master_delay 5        # 成为主节点后延迟5秒发送ARPgarp_master_repeat 3       # 成为主节点后发送3次ARP# 认证方式:简单密码(主备必须一致)authentication {auth_type PASSauth_pass 8888}# 虚拟 IP/掩码及标签(label 方便 ip addr 查看)virtual_ipaddress {192.168.43.222/24 dev ens160 label ens160:1}# 使用单播代替组播,防止交换机禁组播,指向对端unicast_src_ip 192.168.43.218  # 本地IPunicast_peer {192.168.43.219 # 对端IP}# 关联健康检查脚本track_script {chk_mysql}
}
EOF

备节点配置 (192.168.43.219)

配置文件路径相同,内容如下(注意修改router_id和优先级):

cat > /etc/keepalived/keepalived.conf << 'EOF'
# ================================================================
# db219 节点 keepalived 配置文件
# 角色:BACKUP(初始只读节点)
# 虚拟 IP:192.168.43.222(故障时漂移到本机)
# ================================================================global_defs {# 本机唯一标识,日志中便于定位router_id mysql_219# 启用性能优化选项max_auto_priority# 以 root 身份运行脚本,并启用脚本安全检查script_user rootenable_script_security# 跳过对通告地址的校验,加速切换vrrp_skip_check_adv_addr
}# ------------------------------------------------------------
# MySQL 健康检查脚本定义
# ------------------------------------------------------------
vrrp_script chk_mysql {# 检查脚本路径script "/etc/keepalived/check_mysql.sh"# 每 2 秒检查一次interval 2# 失败时优先级 -60,确保低于 BACKUPweight -60# 连续 2 次失败才判定为不可用fall 2# 连续 2 次成功才恢>复rise 2
}# 实例名字(自定义),同一对主备须同名,否则互相认不到。
vrrp_instance VI_1 {state BACKUP              # 初始状态:BACKUPinterface ens160          # 绑定网卡,需与 ip a 看到的名称一致virtual_router_id 222     # 主备必须相同,范围 1-255priority 100              # 优先级低于 MASTER (150)advert_int 2              # 心跳间隔 2 秒# 优化ARP发送策略garp_master_delay 5        # 成为主节点后延迟5秒发送ARPgarp_master_repeat 3       # 成为主节点后发送3次ARP# 认证方式:简单密码(主备必须一致)authentication {auth_type PASSauth_pass 8888}# 虚拟 IP/掩码及标签(label 方便 ip addr 查看)virtual_ipaddress {192.168.43.222/24 dev ens160 label ens160:1}# 使用单播代替组播,防止交换机禁组播,指向对端unicast_src_ip 192.168.43.219  # 本地IPunicast_peer {192.168.43.218  # 对端IP}# 关联健康检查脚本track_script {chk_mysql}
}
EOF

配置MySQL健康检查脚本(关键步骤)

为确保VIP仅在MySQL服务正常时切换,需创建健康检查脚本。在两台服务器上创建 /etc/keepalived/check_mysql.sh

# 创建专用账号
CREATE USER 'checkuser'@'localhost' IDENTIFIED BY 'xrvLovfnp$4%svbS';
GRANT USAGE ON *.* TO 'checkuser'@'localhost';
# 测试是否可以成功执行
mysql -hlocalhost -ucheckuser -p'xrvLovfnp$4%svbS' -e "select 1"
cat >/etc/keepalived/check_mysql.sh << 'EOF'
#!/bin/bash
# MySQL健康检查脚本:测试MySQL连接是否正常
MYSQL_CMD=$(which mysql)
MYSQL_HOST="localhost"
MYSQL_PORT="3306"
MYSQL_USER="checkuser"
CHECK_SQL="SELECT 1;"
if $MYSQL_CMD -h "$MYSQL_HOST" -P "$MYSQL_PORT" -u "$MYSQL_USER" -p'xrvLovfnp$4%svbS' -e "$CHECK_SQL" > /dev/null 2>&1; thenexit 0  # MySQL正常,脚本返回0
elseexit 1  # MySQL异常,脚本返回非0,触发优先级降低
fi
EOFchmod 755 /etc/keepalived/check_mysql.sh

启动服务与验证

验证keepalived服务

# 主节点(218)启动
systemctl start keepalived# 在备节点(219)启动
systemctl start keepalived

验证VIP绑定  

# 在主节点执行,应看到VIP绑定在网卡上
ip addr|grep 192
# 在备节点执行,不应看到VIP
ip addr|grep 192

检查服务状态 

systemctl status keepalived  # 查看服务是否活跃
tail -f /var/log/messages    # 监控Keepalived日志,确认无错误

故障转移测试 

模拟主节点故障-keepalived关闭

# 在主节点停止Keepalived:
systemctl stop keepalived#观察备节点日志:应看到VIP漂移到备节点.
tail -f /var/log/messages,在备节点执行,确认VIP已绑定。
ip addr|grep 192

恢复测试-keepalived开启

# 重启主节点的Keepalived:
systemctl start keepalived# 由于主节点优先级更高,VIP应自动漂回(抢占模式)。
ip addr|grep 192

模拟主节点故障-mysqld关闭

# 在主节点查看
systemctl stop mysqld
systemctl status mysqld
ip addr|grep 192
tail -f /var/log/messages# 在备节点查看
ip addr|grep 192
tail -f /var/log/messages

恢复测试-mysqld开启

# 在主节点查看
systemctl start mysqld
systemctl status mysqld
ip addr|grep 192
tail -f /var/log/messages# 在备节点查看
ip addr|grep 192
tail -f /var/log/messages

经多次测试,已经达到预期效果!

 

 
http://www.gsyq.cn/news/35556.html

相关文章:

  • LR专业胶片模拟调色预设合集 Film Everything – All Packs
  • Blender柔体布料无限循环游戏动画插件 Revolve Mesh Looper
  • 2025年有实力的人防镀锌风管高评价厂家推荐榜
  • 2025年可靠的石塑地板优质厂家推荐榜单
  • 2025年优秀的轴心加热农用榨油机厂家推荐及采购参考
  • 2025年浅拾(RIOSHINE)兰花双萃致臻精华油:权威深度解析水油双相修护抗衰机制
  • sdenv获取瑞数6后缀
  • 2025年口碑好的玻璃钢储罐行业内知名厂家排行榜
  • 2025年评价高的红木家具厂家推荐及选择参考
  • CF498D Traffic Jams in the Land
  • 2025年优秀的佛山负氧离子床垫行业内知名厂家排行榜
  • 2025年广东回收基恩士传感器公司权威推荐榜单:回收得利捷读码器/回收扫描平台/回收二维码读码器服务商精选
  • 2025年评价高的金属光纤槽厂家最新热销排行
  • 2025年优秀的绕线机厂家最新推荐权威榜
  • 2025年质量好的封边条优质厂家推荐榜单
  • 每日坚持读一段英文,熟悉英文表达-2025-10-30
  • 2025年诚信的上海天幕LED显示屏厂家最新实力排行
  • 2025 年铸铁井盖生产厂家最新推荐排行榜:聚焦球墨、五防、可调式等多类型产品,精选优质企业
  • 2025年比较好的立式明装风机盘管行业内口碑厂家排行榜
  • AI条形码插件制作条码脚本EAN13种标准Code交叉二五码支持Win/Mac
  • 2025年热门的岩棉板厂家推荐及采购参考
  • 2025年靠谱的滚筒输送机TOP实力厂家推荐榜
  • 10.31博客
  • [笔记]Manacher 算法
  • 2025年质量好的无尘起重机TOP实力厂家推荐榜
  • 2025年知名的无人化束带机厂家最新TOP实力排行
  • 2025年靠谱的侧插插入门厂家最新权威推荐排行榜
  • Java-函数式编程-实现分布式锁工具
  • 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-31- 操作日历时间控件-上篇(详细教程) - 北京
  • 2025年智能照明系统定做厂家权威推荐榜单:智能照明控制/智能灯控十大品牌/智能家居照明源头厂家精选