Windows Server 设置MySQL自动备份任务(每日凌晨2点执行)
Windows Server 设置MySQL自动备份任务(每日凌晨2点执行)
1. 保存备份脚本
将脚本保存为mysql_backup.bat
文件。
@echo offsetlocal enabledelayedexpansion:: ================================================:: 自动请求管理员权限:: ================================================:: 检查是否已管理员身份运行net session >nul 2>&1if %ERRORLEVEL% NEQ 0 ( echo 正在请求管理员权限... powershell -Command \"Start-Process \'%~s0\' -Verb RunAs\" exit /b):: ================================================:: 数据库备份脚本:: 功能:自动备份MySQL数据库,保留7天历史备份:: 特点:WinRAR压缩、并行执行、错误日志、权限控制:: 配置日期:2025-07-22:: ================================================:: ------------------------------:: 配置区域(根据实际环境修改):: 初始化变量:: ------------------------------set \"MYSQL_BIN=C:\\Program Files\\MySQL\\MySQL Server 8.0\\bin\\mysqldump\"set \"DATABASE_USER=root\"set \"DATABASE_PASSWORD=123456\"set \"BACKUP_ROOT=%~dp0\" set \"DATABASES=app,client\"set \"Ymd=%date:~,4%%date:~5,2%%date:~8,2%\":: 日志目录set \"LOG_DIR=%BACKUP_ROOT%logs\":: 备份日志文件set \"LOGFILE=%BACKUP_ROOT%logs/backup_%Ymd%.log\"set ERROR_FLAG=0:: 创建日志目录if not exist \"%LOG_DIR%\" ( mkdir \"%LOG_DIR%\")echo ====================================================================================================================== >> %LOGFILE%echo [%date% %time%] === 备份开始 === >> %LOGFILE%:: ------------------------------:: 目录检查与创建:: ------------------------------for /l %%i in (1,1,7) do ( if not exist %BACKUP_ROOT%D%%i ( mkdir %BACKUP_ROOT%D%%i echo [%date% %time%] 提示:创建目录: D%%i >> %LOGFILE% )):: ------------------------------:: 清理旧备份(保留7天):: ------------------------------if exist %BACKUP_ROOT%D1/*.sql ( del /Q \"%BACKUP_ROOT%\\D1\\*.sql\" >> \"%LOGFILE%\" 2>&1if !ERRORLEVEL! NEQ 0 (echo [%date% %time%] 错误: 删除D1旧备份失败 >> %LOGFILE%set ERROR_FLAG=1))else (echo [%date% %time%] 警告: D1无SQL文件可删除 >> %LOGFILE%):: ------------------------------:: 目录轮转:: ------------------------------for /l %%i in (2,1,7) do ( set /a j=%%i-1 if exist \"%BACKUP_ROOT%D%%i\\*.sql\" ( move /Y \"%BACKUP_ROOT%D%%i\\*.sql\" \"%BACKUP_ROOT%D!j!\\\" >> %LOGFILE% 2>&1 if !ERRORLEVEL! NEQ 0 ( echo [%date% %time%] 错误: 移动D%%i到D!j!失败(错误码: !ERRORLEVEL!) >> %LOGFILE% set ERROR_FLAG=1 ) )else (echo [%date% %time%] 警告: D%%i无SQL文件可移动 >> %LOGFILE%)):: ------------------------------:: 顺序备份数据库:: ------------------------------for %%d in (%DATABASES%) do ( echo [%date% %time%] 开始备份数据库: %%d >> %LOGFILE% :: 执行备份\"%MYSQL_BIN%\" -u%DATABASE_USER% -p%DATABASE_PASSWORD% %%d > \"%BACKUP_ROOT%D7\\%%d_%Ymd%.sql\" :: 错误检查 if !ERRORLEVEL! NEQ 0 ( echo [%date% %time%] 严重错误: 数据库 %%d 备份失败 >> %LOGFILE% set ERROR_FLAG=1 ) else ( echo [%date% %time%] 数据库成功备份: %%d >> %LOGFILE% )):: ------------------------------:: 最终状态检查:: ------------------------------if %ERROR_FLAG% NEQ 0 ( echo [%date% %time%] === 备份完成(有错误)=== >> %LOGFILE% exit /b 1) else ( echo [%date% %time%] === 备份完成(成功)=== >> %LOGFILE% exit /b 0)endlocal
2. 创建定时任务
2.1 打开任务计划程序
- 按
Win+R
,输入taskschd.msc
回车。 - 或通过控制面板 > 管理工具 > 任务计划程序。
2.2 创建基本任务
- 右侧点击
创建任务
。 - 名称输入
MySQL定时备份
。 - 描述可填写
MSQL定时备份:每日凌晨两点备份app、plat数据库库,保留最近7天的数据库数据
。 - 高级配置(可选):勾选
不管用户是否登录都要运行
。 - 高级配置(可选):勾选
使用最高权限运行
。
2.3 设置触发器
- 选择
每天
。 - 开始时间设置为
02:00:00
。 - 重复间隔保持
1天
。
2.4 设置操作
- 选择
启动程序
。 - 程序或脚本浏览选择
mysql_backup.bat
。 - 起始位置填写脚本所在目录(如
C:\\scripts\\
)。
2.5 完成设置
- 点击
完成
创建任务。
2.6 验证任务(可选)
- 右键新建的任务选择
运行
测试。 - 检查日志文件确认备份是否成功。