You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

新手MySQL DBA项目需求:剩余空间<20MB时发送邮件告警

MySQL磁盘空间不足告警实现方案

Nice first DBA project—disk space monitoring is critical to avoid unexpected outages, so this is a great place to start! Let’s walk through a practical, easy-to-implement solution for your 100MB database.

1. 先明确监控目标

我们需要监控MySQL数据目录所在磁盘分区的剩余空间,而不是数据库本身的大小(因为数据库文件所在分区的剩余空间才是决定能否写入的关键)。

2. 编写告警脚本

下面是一个bash脚本示例,你可以直接修改配置参数适配你的环境:

#!/bin/bash

# -------------------------- 配置参数 --------------------------
MYSQL_DATA_DIR="/var/lib/mysql"  # 替换为你的MySQL实际数据目录
ALERT_THRESHOLD=20               # 告警阈值(单位:MB)
OPS_EMAIL="ops@yourdomain.com"   # 运维人员接收告警的邮箱
# -------------------------------------------------------------

# 获取目标分区的剩余可用空间(转换为纯数字MB)
FREE_SPACE=$(df -BM "$MYSQL_DATA_DIR" | grep -v "Filesystem" | awk '{print $4}' | sed 's/M//')

# 判断是否触发告警条件
if [ "$FREE_SPACE" -lt "$ALERT_THRESHOLD" ]; then
    ALERT_SUBJECT="⚠️ SQL Low Disk Space Alert: Only $FREE_SPACE MB Remaining"
    ALERT_BODY="
    Warning: The disk partition hosting MySQL data ($MYSQL_DATA_DIR) is running low on space.
    - Current free space: $FREE_SPACE MB
    - Alert threshold: $ALERT_THRESHOLD MB
    Please take action immediately to avoid database write failures.
    "
    # 发送告警邮件(确保系统已安装mailx/mailutils)
    echo -e "$ALERT_BODY" | mailx -s "$ALERT_SUBJECT" "$OPS_EMAIL"
fi

3. 脚本初始化与测试

  • 给脚本添加执行权限:
    chmod +x /opt/scripts/mysql_disk_alert.sh
    
  • 安装邮件工具(如果系统没有):
    • Debian/Ubuntu:sudo apt install mailutils
    • RHEL/CentOS:sudo yum install mailx
  • 测试脚本:临时把ALERT_THRESHOLD改得比当前剩余空间大,运行脚本检查是否能收到告警邮件。

4. 设置定时任务自动检查

用cron定期执行脚本,确保实时监控。比如每10分钟检查一次:

  1. 打开crontab编辑:
    crontab -e
    
  2. 添加以下内容(替换为你的脚本路径):
    */10 * * * * /opt/scripts/mysql_disk_alert.sh >> /var/log/mysql_disk_alert.log 2>&1
    
    (末尾的日志输出可以帮你排查脚本执行问题)

额外建议

  • 如果你不确定MySQL数据目录路径,可以登录MySQL执行SHOW VARIABLES LIKE 'datadir';查看
  • 可以扩展脚本,添加数据库总大小统计(用du -sh $MYSQL_DATA_DIR),让告警信息更全面
  • 确保cron服务处于运行状态:systemctl status cron(Debian/Ubuntu)或systemctl status crond(RHEL/CentOS)

内容的提问来源于stack exchange,提问作者maxwell Owusu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:43:14