帮我写一个shell脚本,监控MySQL中运行超过10s的慢SQL
时间: 2024-09-25 10:05:20 浏览: 27
在Shell脚本中监控MySQL运行时间超过10秒的慢查询,可以使用`mysqladmin`命令和`while`循环结合。这里提供一个基本的示例,你可以保存这个脚本到一个文件比如`monitor_slow_sql.sh`:
```bash
#!/bin/bash
# 设置检查间隔,单位为秒
SLEEP_TIME=5
# 定义慢查询阈值
THRESHOLD_SECONDS=10
# MySQL配置信息,如主机名、用户名、密码和数据库名
MYSQL_HOST="localhost"
MYSQL_USER="your_username"
MYSQL_PASS="your_password"
MYSQL_DB="your_database"
# 检查慢查询的函数
check_slow_queries() {
# 查询超过阈值的慢查询
slow_qry=$(mysqladmin -h $MYSQL_HOST -u $MYSQL_USER -p$MYSQL_PASS --execute="SHOW SLOW QUERY" | grep -v "Time:" | awk '{if ($4 > '$THRESHOLD_SECONDS') print}')
if [ "$slow_qry" ]; then
echo "Detected slow queries:"
echo "$slow_qry"
else
echo "No slow queries found."
fi
}
# 主循环开始监控
echo "Starting slow SQL monitor..."
while true; do
check_slow_queries
sleep $SLEEP_TIME
done
#
阅读全文