首页/数据/数据库速查/备份脚本与定时任务(cron + 告警)
本包目录(495 条)
MySQL 基础与连接36 条SQL 语法52 条用户与权限21 条
备份与恢复56 条
主从复制与高可用53 条性能与调优57 条Redis 命令96 条Redis 运维与场景124 条

备份脚本与定时任务(cron + 告警)

生产备份靠定时任务兜底:flock 防重入、日志留痕、退出码与文件大小双重校验,失败即告警,杜绝「以为在备、其实早挂了」。

数据库速查数据更新于 2026-10-12

crontab 与脚本骨架

crontab 与脚本骨架
# crontab:每天 02:15 备份,加锁防重入
15 2 * * * flock -n /var/lock/mysqldump.lock \
  /usr/local/bin/mysql_backup.sh >> /var/log/mysql_backup.log 2>&1

# /usr/local/bin/mysql_backup.sh(节选)
set -o pipefail
OUT=/data/backup/all_$(date +%F).sql.gz
mysqldump -uroot -p"$MYSQL_PWD" --single-transaction --all-databases \
  | gzip -6 > "$OUT" \
  || { echo "BACKUP FAILED rc=$?"; mail -s "MySQL backup FAILED" dba@example.com < /dev/null; exit 1; }
size=$(stat -c%s "$OUT")
[ "$size" -gt 104857600 ] || echo "WARN: backup too small: $size"
防重入flock -n 锁文件;上一次未跑完直接跳过并告警
双校验退出码 + 文件大小/尾标
告警mail / 企业微信机器人 / 监控系统回调
备份任务本身也要被监控:监控系统按「最近成功时间」出阈值告警,比脚本内告警更可靠。

易错点

  • 不加锁时前一天的备份没跑完、后一天的重叠启动,IO 雪崩甚至把实例拖慢
  • 只检查退出码不看产物:磁盘满时 mysqldump 可能退出 2(警告)而非 1,需要人工确认逻辑

数据来源与参考

  • MySQL 8.0 Reference Manual: mysqldump
  • crontab(5) man page

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌