MySQL 定时备份可以通过结合操作系统的定时任务工具(如 Linux 的 crontab、Windows 的任务计划程序)和 MySQL 备份命令(如 mysqldump)来实现。以下是具体实现方法:
首先创建一个备份脚本(.sh 文件),使用 mysqldump 命令导出数据库,并添加压缩、日志记录等功能。
#!/bin/bash
DB_USER="root"
DB_PASS="your_password"
DB_HOST="localhost"
DB_NAME="your_database"
BACKUP_DIR="/var/mysql_backup"
LOG_FILE="/var/mysql_backup/backup_log.txt"
DATE=$(date +%Y%m%d_%H%M%S)
RETENTION_DAYS=7
mkdir -p $BACKUP_DIR
mysqldump -h $DB_HOST -u $DB_USER -p$DB_PASS $DB_NAME | gzip > $BACKUP_DIR/${DB_NAME}_${DATE}.sql.gz
if [ $? -eq 0 ]; then
echo "[$DATE] 备份成功: ${DB_NAME}_${DATE}.sql.gz" >> $LOG_FILE
else
echo "[$DATE] 备份失败" >> $LOG_FILE
fi
find $BACKUP_DIR -name "${DB_NAME}_*.sql.gz" -type f -mtime +$RETENTION_DAYS -delete
-
替换
DB_USER、DB_PASS、DB_NAME 等参数为实际值。
-
使用
gzip 压缩备份文件,节省存储空间。
-
自动记录备份日志,便于排查问题。
-
自动删除超过
RETENTION_DAYS 天的备份文件,避免磁盘占满。
chmod +x /path/to/mysql_backup.sh
通过 crontab 配置定时执行备份脚本。
-
编辑定时任务:
-
添加定时规则(例如:每天凌晨 2 点执行备份):
0 2 * * * /path/to/mysql_backup.sh
-
时间格式说明:
分 时 日 月 周,* 表示任意值。
-
示例:
*/30 * * * * 表示每 30 分钟执行一次。
-
保存退出,crontab 会自动生效。
-
编写批处理脚本(mysql_backup.bat):
@echo off
set "DB_USER=root"
set "DB_PASS=your_password"
set "DB_HOST=localhost"
set "DB_NAME=your_database"
set "BACKUP_DIR=C:\mysql_backup"
set "DATE=%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%"
set "DATE=%DATE: =0%" # 处理时间中的空格
mkdir %BACKUP_DIR% 2>nul
# 执行备份(需将mysql安装目录的bin路径添加到环境变量)
mysqldump -h %DB_HOST% -u %DB_USER% -p%DB_PASS% %DB_NAME% > %BACKUP_DIR%\%DB_NAME%_%DATE%.sql
# 记录日志
echo %DATE% 备份完成 >> %BACKUP_DIR%\backup_log.txt
-
通过「任务计划程序」设置定时任务:
-
打开「控制面板 → 管理工具 → 任务计划程序」。
-
创建基本任务,设置触发时间(如每天凌晨 2 点),选择执行上述批处理脚本。
-
权限问题:
-
Linux 中,执行脚本的用户需要有
mysqldump 执行权限和备份目录的读写权限。
-
避免在脚本中明文存储数据库密码(可通过
~/.my.cnf 配置文件隐藏密码,见下方补充)。
-
备份验证:
-
定期检查备份文件是否生成,大小是否合理。
-
偶尔通过
gunzip < 备份文件.sql.gz | mysql -u 用户名 -p 数据库名 测试恢复流程。
-
远程备份:
-
若数据库在远程服务器,
DB_HOST 改为远程 IP,确保网络连通且 MySQL 允许远程连接。
-
隐藏密码(推荐):在 Linux 中创建 ~/.my.cnf 文件,避免脚本明文暴露密码:
[mysqldump]
user=root
password=your_password
然后脚本中可省略 -u 和 -p 参数:mysqldump -h $DB_HOST $DB_NAME | gzip > ...。
通过以上方法,可以实现 MySQL 数据库的自动化定时备份,保障数据安全。