查询mysql主从复制状态和延迟的shell脚本,要求主从复制状态异常可以通过邮件发送到管理员
时间: 2024-05-02 10:20:19 浏览: 98
以下是查询mysql主从复制状态和延迟的shell脚本,可以通过邮件发送异常状态给管理员:
```
#!/bin/bash
# MySQL主从复制状态检测脚本
# 配置MySQL连接参数,根据实际情况修改
MYSQL_HOST="localhost"
MYSQL_PORT="3306"
MYSQL_USER="root"
MYSQL_PASSWORD="password"
# 配置邮件发送参数,根据实际情况修改
MAIL_FROM="admin@example.com"
MAIL_TO="admin@example.com"
MAIL_SUBJECT="MySQL主从复制状态异常"
MAIL_CONTENT="MySQL主从复制状态异常,请及时处理!"
# 获取MySQL主从复制状态
STATUS=$(mysql -h $MYSQL_HOST -P $MYSQL_PORT -u $MYSQL_USER -p$MYSQL_PASSWORD -e "show slave status\G" | grep "Slave_IO_Running\|Slave_SQL_Running\|Seconds_Behind_Master")
# 检测主从复制状态是否正常
if echo "$STATUS" | grep -q "Slave_IO_Running: Yes" && echo "$STATUS" | grep -q "Slave_SQL_Running: Yes"; then
# 获取主从延迟时间
DELAY=$(echo "$STATUS" | grep "Seconds_Behind_Master" | awk '{print $2}')
if [ "$DELAY" -gt 0 ]; then
# 发送邮件提醒管理员
echo "$MAIL_CONTENT" | mail -s "$MAIL_SUBJECT" -r "$MAIL_FROM" "$MAIL_TO"
fi
else
# 发送邮件提醒管理员
echo "$MAIL_CONTENT" | mail -s "$MAIL_SUBJECT" -r "$MAIL_FROM" "$MAIL_TO"
fi
```
使用方法:
1. 将上述脚本保存为文件,例如`check_mysql_replication.sh`;
2. 修改脚本中的MySQL连接参数和邮件发送参数;
3. 将脚本添加到定时任务中,例如每分钟执行一次:
```
* * * * * /bin/bash /path/to/check_mysql_replication.sh
```
阅读全文