mysql 主从状态检查shell脚本
时间: 2023-06-14 18:03:40 浏览: 121
shell脚本监控mysql主从状态
以下是一个简单的 MySQL 主从状态检查的 shell 脚本:
```bash
#!/bin/bash
# MySQL 主服务器信息
MASTER_HOST="master.example.com"
MASTER_USER="root"
MASTER_PASS="password"
# MySQL 从服务器信息
SLAVE_HOST="slave.example.com"
SLAVE_USER="root"
SLAVE_PASS="password"
# 检查主服务器状态
MASTER_STATUS=$(mysql -h $MASTER_HOST -u $MASTER_USER -p$MASTER_PASS -e "SHOW MASTER STATUS")
MASTER_LOG_FILE=$(echo $MASTER_STATUS | awk '{print $1}')
MASTER_LOG_POS=$(echo $MASTER_STATUS | awk '{print $2}')
# 检查从服务器状态
SLAVE_STATUS=$(mysql -h $SLAVE_HOST -u $SLAVE_USER -p$SLAVE_PASS -e "SHOW SLAVE STATUS\G")
SLAVE_IO_RUNNING=$(echo $SLAVE_STATUS | grep "Slave_IO_Running" | awk '{print $2}')
SLAVE_SQL_RUNNING=$(echo $SLAVE_STATUS | grep "Slave_SQL_Running" | awk '{print $2}')
SLAVE_IO_ERROR=$(echo $SLAVE_STATUS | grep "Last_IO_Error" | awk '{print $2}')
SLAVE_SQL_ERROR=$(echo $SLAVE_STATUS | grep "Last_SQL_Error" | awk '{print $2}')
# 检查主从同步状态
if [ "$SLAVE_IO_RUNNING" == "Yes" ] && [ "$SLAVE_SQL_RUNNING" == "Yes" ]; then
echo "Replication is running. Master log file: $MASTER_LOG_FILE, position: $MASTER_LOG_POS"
else
echo "Replication is not running."
echo "Slave_IO_Running: $SLAVE_IO_RUNNING"
echo "Slave_SQL_Running: $SLAVE_SQL_RUNNING"
echo "Last_IO_Error: $SLAVE_IO_ERROR"
echo "Last_SQL_Error: $SLAVE_SQL_ERROR"
fi
```
该脚本会连接到主服务器和从服务器,分别检查它们的状态。如果主从同步正常运行,则会输出主服务器的日志文件和位置。如果主从同步出现问题,则会输出相关错误信息。请注意,这只是一个简单的示例脚本,您可能需要根据自己的需求进行修改。
阅读全文