mysql主从复制监控脚本小工具,保证数据同步运维正常

阅读59评论0

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 位网友评论:

欢迎来评论

请填写验证码