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 / 企业微信机器人 / 监控系统回调 |
备份任务本身也要被监控:监控系统按「最近成功时间」出阈值告警,比脚本内告警更可靠。