最近项目上线后,有些数据丢失没有找回来。经过讨论后,决定加一个服务器数据库自动备份的功能。
通用实现步骤
整个过程可以概括为三步:
- 编写备份脚本:创建一个包含备份命令的脚本文件(.bat 批处理)。
- 测试脚本:手动运行脚本,确保它能成功生成备份文件。
- 配置任务计划程序:设置 Windows 任务计划程序,让它在指定时间自动执行这个脚本。
针对 MySQL 的详细配置
shell
1. 编写备份脚本 (backup_mysql.bat)
创建一个文本文件,将后缀名改为 .bat,写入以下内容:
@echo off
:: 设置数据库连接信息
set host=127.0.0.1
set username=root
set password=你的密码
set db_name=你的数据库名
:: 设置备份存放路径
set backup_path=C:\db_backup\
:: 生成带时间戳的文件名,例如:你的数据库名_20231027_030001.sql
set datetime=%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%
set datetime=%datetime: =0%
set backup_file=%backup_path%%db_name%_%datetime%.sql
:: 执行备份 (注意 mysqldump 的路径可能需要根据你的安装位置调整)
"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqldump.exe" -u%username% -p%password% -h%host% %db_name% > %backup_file%
:: (可选) 使用 7-Zip 压缩备份文件,需要先安装 7-Zip
:: "C:\Program Files\7-Zip\7z.exe" a %backup_file%.zip %backup_file%
:: del %backup_file%
:: (可选) 删除 7 天前的旧备份文件
forfiles /p %backup_path% /s /m *.sql /d -7 /c "cmd /c del @path"
echo Backup completed: %backup_file%
- 测试脚本
在命令行中直接运行这个 .bat 文件,检查指定的备份目录下是否生成了 .sql 文件。 - 设置任务计划程序
- 在服务器上按下 Win + R 键,输入 taskschd.msc 并回车,打开"任务计划程序"。
- 在右侧操作栏中,点击"创建基本任务..."。
- 名称:输入一个便于识别的名称,如 "Daily MySQL Backup"。
- 触发器:选择"每天",并设置一个业务低峰期的时间,例如凌晨 2:00。
- 操作:选择"启动程序",在"程序或脚本"框中,点击浏览选择你刚刚创建的 backup_mysql.bat 文件。
- 点击"完成"即可。
高级设置:创建完成后,你可以在任务列表中找到它,右键点击"属性"进行更精细的配置,例如:
● 勾选"不管用户是否登录都要运行"。
● 勾选"使用最高权限运行"