贝利信息

如何使用crontab定时备份_mysql定时任务设置

日期:2026-01-16 00:00 / 作者:P粉602998670
可靠的MySQL备份需封装脚本并正确配置crontab:设置变量、创建目录、mysqldump加--single-transaction、压缩与清理旧文件;注意权限、PATH、密码安全(用~/.my.cnf)、日志记录及非交互环境测试。

crontab 定时备份 MySQL 数据库,核心是写好备份脚本 + 正确配置定时任务。关键点在于权限、路径、环境变量和错误处理,很多失败是因为脚本在 cron 环境下执行时找不到命令或连不上数据库。

写一个可靠的 MySQL 备份脚本

不要把

mysqldump 命令直接塞进 crontab 里,先封装成 shell 脚本,方便调试和复用:

#!/bin/bash
# 设置变量(按需修改)
DB_USER="root"
DB_PASS="your_password"
DB_NAME="myapp"
BACKUP_DIR="/home/user/backups/mysql"
DATE=$(date +%Y%m%d_%H%M%S)

创建备份目录(如果不存在)

mkdir -p "$BACKUP_DIR"

执行备份(加 --single-transaction 避免锁表,适合 InnoDB)

mysqldump -u"$DB_USER" -p"$DB_PASS" --single-transaction "$DB_NAME" > "$BACKUP_DIR/${DBNAME}$DATE.sql"

可选:压缩备份文件节省空间

gzip "$BACKUP_DIR/${DBNAME}$DATE.sql"

可选:只保留最近 7 天的备份

find "$BACKUP_DIR" -name "${DBNAME}*.sql.gz" -mtime +7 -delete

配置 crontab 定时任务

用当前用户(如非 root,推荐用数据库操作用户)编辑定时任务:

30 2 * * * /home/user/bin/backup_mysql.sh >> /home/user/logs/backup_mysql.log 2>&1

验证与排错要点

很多备份“看似运行了”,实则静默失败。重点关注这几项:

进阶建议

提升稳定性和运维效率的小技巧: