自动备份数据库三种常见方案
一、结论
最简单可靠的方式是:
用 mysqldump 备份整个数据库(包含所有表)并配合定时任务(如 Windows 任务计划或 Linux cron)自动执行。
不需要单独枚举表名。
二、实现步骤
1. 用 mysqldump 备份全部表
mysqldump -u 用户名 -p密码 数据库名 > /backup/db_$(date +"%Y%m%d_%H%M%S").sql
说明:
-u:用户名-p:密码(可写为-pYourPassword)数据库名:要备份的数据库> ...:输出到带日期的文件
示例:
mysqldump -u root -p123456 mydb > /backup/mydb_20251017.sql
2. 在 Windows 下定时执行
新建批处理文件 backup.bat:
@echo off
set DATETIME=%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%
mysqldump -u root -p123456 mydb > D:\backup\mydb_%DATETIME%.sql
然后在「任务计划程序」里创建任务,设置每天自动运行。
3. 在 Linux 下定时执行
编辑 crontab:
crontab -e
添加:
0 2 * * * mysqldump -u root -p123456 mydb > /backup/mydb_$(date +\%F_\%H-\%M-\%S).sql
表示每天凌晨 2 点自动备份。
4. 如果想每个表单独保存
用 shell 或 Python 循环:
for t in $(mysql -u root -p123456 -Nse 'show tables from mydb'); do
mysqldump -u root -p123456 mydb $t > /backup/${t}_$(date +%F).sql
done
三、可选方案
| 方式 | 优点 | 缺点 |
|---|---|---|
mysqldump 整库备份 |
简单通用 | 文件大 |
mysqldump 按表备份 |
可恢复单表 | 生成多个文件 |
xtrabackup |
热备份、速度快 | 需安装额外工具 |
| Python/PowerShell 脚本 | 可定制 | 稍复杂 |
四、可执行摘要
- 安装好 MySQL 并配置
mysqldump环境变量。 - 建立备份目录。
- 写入备份脚本(整库或分表)。
- 设置系统定时任务。
- 定期测试恢复,确保文件可用。
评论