

新闻资讯
技术学院Keepalived 通过 VRRP 实现 VIP 故障漂移,配合 MySQL 主从(GTID)、健康检查脚本与 notify 机制,构建轻量高可用架构;主库异常时自动切 VIP 至备库并提升,应用直连 VIP 无感切换。
Keepalived 本身不直接管理 MySQL,但它能通过 VRRP 协议实现 VIP(虚拟 IP)的故障自动漂移,配合脚本监控 MySQL 健康状态,从而构建轻量、可靠、免依赖第三方组件的高可用 MySQL 架构(主从 + VIP 切换)。
让 Keepalived 在主库节点上绑定一个对外服务的 VIP;当主库异常(如 mysqld 崩溃、复制中断、响应超时),Keepalived 检测失败后自动将 VIP 迁移到备库,同时触发提升操作(如 stop slave; reset master; grant replication 等可选),使备库快速接管读写流量。整个过程对应用透明,只需连接 VIP 即可。
换后业务异常在 keepalived.conf 中定义 vrrp_instance,关键项包括:
检测脚本示例(check_mysql.sh):
#!/bin/bash
MYSQL_CMD="mysql -uhealth -pPassw0rd -h127.0.0.1 -P3306 -e 'SELECT 1' &>/dev/null
if $MYSQL_CMD; then
# 检查是否为可写主库(非只读 + 无复制延迟)
WRITABLE=$(
mysql -uhealth -pPassw0rd -e "SHOW VARIABLES LIKE 'read_only'" 2>/dev/null | \
grep -v "read_only" | awk '{print $2}'
)
DELAY=$(
mysql -uhealth -pPassw0rd -e "SHOW SLAVE STATUS\G" 2>/dev/null | \
grep "Seconds_Behind_Master:" | awk '{print $2}'
)
if [[ "$WRITABLE" == "OFF" ]] && ([[ -z "$DELAY" ]] || [[ "$DELAY" == "0" ]] || [[ "$DELAY" == "NULL" ]]); then
exit 0
fi
fi
exit 1