keepalived mysql脚本_Mysql检查脚本控制keepalived(2)

该脚本用于检查MySQL状态,如果连接失败则停止keepalived服务,并记录日志。反之,当MySQL正常且keepalived未运行时,会启动keepalived服务。日志信息保存在/etc/keepalived/action.log中。

#!/bin/bash

mysql -uphpmyadmin -proot -e "select version();" >/dev/null 2>&1

#mysql -uphpmyadmin -proot -e "show status;"#

if [ $? -ne 0 ] ;then

#echo $(date)". mysql error!" >>/etc/keepalived/action.log

sudo service keepalived stop

if [ $? -ne 0 ] ;then

echo $(date +'%Y-%m-%d %H:%M:%S')". mysql error.but ACTION keepalived-stop failed." >>/etc/keepalived/action.log

else

echo $(date +'%Y-%m-%d %H:%M:%S')". mysql error.ACTION keepalived-stop success." >>/etc/keepalived/action.log

fi

else

keepalivedcheck=`ps -C keepalived --no-header | wc -l`

if [ $keepalivedcheck -eq 0 ] ;then

sudo  service keepalived start

if [ $? -ne 0 ] ;then

echo $(date +'%Y-%m-%d %H:%M:%S')". mysql normal,keepalived already stopped.but ACTION keepalived-start failed" >>/etc/keepalived/action.log

else

echo $(date +'%Y-%m-%d %H:%M:%S')". mysql normal,keepalived already stopped.ACTION keepalived-start success" >>/etc/keepalived/action.log

fi

###test code

#else

#echo $(date)". keepalived is running!" >>/etc/keepalived/action.log

##test code

fi

#echo $(date)". mysql running!" >>/etc/keepalived/action.log

fi

### Keepalived 配置 MySQL 健康检查脚本 在高可用架构中,Keepalived 通常与 MySQL 搭配使用,以确保数据库服务的可用性。通过 Keepalived 的 `vrrp_script` 功能,可以定义一个脚本MySQL 服务进行健康检查,并根据检查结果控制 Keepalived 进程和虚拟 IP 的漂移。 #### Keepalived 主节点配置 Keepalived 的配置文件通常位于 `/etc/keepalived/keepalived.conf`。以下是一个示例配置,用于定义 MySQL 健康检查脚本: ```bash global_defs { # 禁用严格的 VRRP 模式,避免某些网络环境下的兼容性问题 vrrp_strict } vrrp_script check_mysql { # 定义 VRRP 脚本,名称为 check_mysql script "/etc/keepalived/check_mysql.sh" # 指定 MySQL 健康检查脚本的路径 interval 1 # 脚本执行间隔时间(单位:秒) } vrrp_instance VI_1 { state MASTER # 当前节点状态为 MASTER interface ens33 # 绑定到的网络接口名称 virtual_router_id 51 # 虚拟路由标识,确保集群内唯一 priority 100 # 优先级,数值越高优先级越高 advert_int 1 # VRRP 广播间隔时间(单位:秒) authentication { auth_type PASS # 认证类型 auth_pass 1111 # 认证密码 } virtual_ipaddress { 192.168.189.181 # 虚拟 IP 地址 } track_script { check_mysql # 执行之前定义的 check_mysql 脚本 } } ``` #### MySQL 健康检查脚本 MySQL 健康检查脚本通常放在 `/etc/keepalived/` 目录下,命名为 `check_mysql.sh`。该脚本负责检测 MySQL 服务是否正常运行,并根据检测结果控制 Keepalived 进程。 ```bash #!/bin/bash # 检查 MySQL 服务的端口(3306)是否在监听 port_num=$(ss -ntl | grep -wc 3306) # 如果端口未监听,说明 MySQL 服务异常,停止 Keepalived 进程 if [ $port_num -eq 0 ]; then pkill keepalived fi ``` 脚本完成后,需要赋予执行权限: ```bash chmod +x /etc/keepalived/check_mysql.sh ``` #### 脚本功能说明 1. **端口检查**:脚本通过 `ss` 命令检查 MySQL 的默认端口(3306)是否处于监听状态。 2. **异常处理**:如果端口未监听,表示 MySQL 服务不可用,脚本会终止 Keepalived 进程,触发虚拟 IP 漂移到备用节点。 3. **日志记录**:可以扩展脚本功能,将检测结果记录到日志文件中,方便后续排查问题。 #### 可选扩展功能 - **日志记录**:可以在脚本中添加日志记录功能,例如: ```bash echo "$(date +'%Y-%m-%d %H:%M:%S') MySQL 服务异常,停止 Keepalived 进程" >> /var/log/keepalived/mysql_health_check.log ``` - **邮件通知**:结合邮件服务,当 MySQL 服务异常时发送通知给运维人员。 - **自动恢复**:当 MySQL 服务恢复正常后,脚本可以重新启动 Keepalived 进程并恢复虚拟 IP。 #### 双主架构下的健康检查 在双主架构中,除了检查本地 MySQL 服务外,还可以使用 `MISC_CHECK` 来检测远程 MySQL 节点的状态。以下是一个配置示例: ```bash real_server 172.16.0.66 3306 { weight 1 TCP_CHECK { connect_timeout 3 retry 3 delay_before_retry 3 connect_port 3306 } MISC_CHECK { misc_path "/etc/keepalived/mysql_check.sh 172.16.0.66" misc_timeout 3 } } ``` 对应的脚本文件 `mysql_check.sh` 可以包含更复杂的逻辑,例如检查 MySQL 的主从复制状态: ```bash #!/bin/bash CHECK_IP=$1 Slave_status=$(mysql -u guoyabin -p'password' -h $CHECK_IP -e "show slave status\G" | grep -wE 'Slave_SQL_Running|Slave_IO_Running' | awk -F": " '{print $2}' | wc -l) if [ $Slave_status -ne 2 ]; then pkill keepalived fi ``` #### 总结 通过 Keepalived 的健康检查脚本功能,可以实现对 MySQL 服务的监控,并在服务异常时触发故障转移,确保数据库服务的高可用性。同时,脚本可以灵活扩展,满足不同场景下的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值