Keepalived检测mysql 3306心跳的脚本
要编写一个用于 Keepalived 检测 3306 端口(MySQL 默认端口)心跳的脚本,你可以创建一个简单的 Bash 脚本,该脚本尝试连接到 MySQL 服务器并检查连接是否成功。如果连接成功,脚本返回 0(表示正常),如果连接失败,则返回非零值(表示异常)。
以下是一个示例脚本,你可以将其保存为 /path/to/check_mysql_health.sh,并根据需要修改 MYSQL_HOST 和 MYSQL_PORT 变量:
bash
!/bin/bash
MySQL 服务器的地址和端口
MYSQL_HOST="localhost"
MYSQL_PORT="3306"
MYSQL_USER="your_mysql_user"
MYSQL_PASSWORD="your_mysql_password"
MYSQL_CONNECTION_TIMEOUT="5"
尝试连接到 MySQL 服务器
mysqladmin -hMYSQLHOST−PMYSQLHOST−PMYSQL_PORT -uMYSQLUSER−pMYSQLUSER−pMYSQL_PASSWORD ping --silent --defaults-extra-file=/dev/null --connect-timeout=$MYSQL_CONNECTION_TIMEOUT
检查上一个命令的退出状态
if [ $? -eq 0 ]; then
# 如果 mysqladmin 返回 0,表示连接成功
exit 0
else
# 如果 mysqladmin 返回非 0,表示连接失败
exit 1
fi
确保该脚本具有执行权限:
bash
chmod +x /path/to/check_mysql_health.sh
然后,在 Keepalived 的配置文件中,你需要指定这个脚本作为健康检查的一部分。以下是如何在 keepalived.conf 中设置它的示例:
conf
vrrp_script chk_mysql_health {
script "/path/to/check_mysql_health.sh" # 指向你的脚本路径
interval 2 # 检查间隔
timeout 1 # 超时时间
weight 2 # 权重
}
vrrp_instance VI_1 {
# ... 其他配置 ...
track_script { chk_mysql_health # 引用刚才定义的脚本 } # ... 其他配置 ...
}
在这个配置中,vrrp_script 块定义了一个名为 chk_mysql_health 的脚本,该脚本会在每个 interval 时间间隔内运行一次。如果脚本执行成功(返回 0),则 Keepalived 会认为 MySQL 服务是健康的。如果脚本执行失败(返回非 0),则 Keepalived 会认为服务不健康,并根据配置进行故障转移。
请确保将 MYSQL_USER 和 MYSQL_PASSWORD 替换为你的 MySQL 用户名和密码,以便脚本能够成功连接到数据库。如果你不希望在脚本中硬编码用户名和密码,你可以考虑使用其他机制(如环境变量或配置文件)来安全地传递这些凭证。
最后,记得重启 Keepalived 服务以应用配置更改:
bash
sudo systemctl restart keepalived
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· 2分钟学会 DeepSeek API,竟然比官方更好用!
· .NET 使用 DeepSeek R1 开发智能 AI 客户端
· DeepSeek本地性能调优
· 一文掌握DeepSeek本地部署+Page Assist浏览器插件+C#接口调用+局域网访问!全攻略