自动备份数据库三种常见方案


一、结论

最简单可靠的方式是:
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 脚本 可定制 稍复杂

四、可执行摘要

  1. 安装好 MySQL 并配置 mysqldump 环境变量。
  2. 建立备份目录。
  3. 写入备份脚本(整库或分表)。
  4. 设置系统定时任务。
  5. 定期测试恢复,确保文件可用。