mysql主从复制监控脚本小工具,保证数据同步运维正常
mysql主从复制的监控,监控主从复制的状态,避免错误了也不知道。像常用的Prometheus + Grafana就可以监控到。
但有时候可能就临时用下,比如:数据库搬家。毕竟咱不是什么大项目,不至于费那么大劲儿去搞个监控。
所以,就写了一个小脚本,用于监控mysql的主从复制状态。
当然,这是我搬家的时候用的,可能不适合日常的运维使用,你可以修改修改,权当一个思路。
示例代码:
#!/bin/bash # 定义配置文件路径 CONFIG_FILE="/www/mysql.cnf" check_slave_status() { mysql --defaults-file=$CONFIG_FILE -e "SHOW SLAVE STATUS\G" | grep -E "Slave_IO_Running|Slave_SQL_Running|Last_SQL_Error" } STATUS=$(check_slave_status) while true; do STATUS=$(check_slave_status) if [[ "$STATUS" == *"Slave_SQL_Running: Yes"* ]]; then echo "SQL 线程运行正常。" sleep 1 # 正常运行时每秒检测一次 else echo "SQL 线程再次停止,立即跳过错误..." mysql --defaults-file=$CONFIG_FILE -e "STOP SLAVE;" mysql --defaults-file=$CONFIG_FILE -e "SET GLOBAL sql_slave_skip_counter = 1;" mysql --defaults-file=$CONFIG_FILE -e "START SLAVE;" STATUS=$(check_slave_status) while [[ "$STATUS" != *"Slave_SQL_Running: Yes"* ]]; do echo "SQL 线程未运行,再次尝试跳过错误..." mysql --defaults-file=$CONFIG_FILE -e "STOP SLAVE;" mysql --defaults-file=$CONFIG_FILE -e "SET GLOBAL sql_slave_skip_counter = 1;" mysql --defaults-file=$CONFIG_FILE -e "START SLAVE;" STATUS=$(check_slave_status) done fi done
上述代码保存 .sh 文件,然后SSH执行就行了。
mysql.cnf文件:
[client] user=root password=123456
有 0 位网友评论: