> 技术文档 > Windows Server 设置MySQL自动备份任务(每日凌晨2点执行)

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 验证任务(可选)

  • 右键新建的任务选择运行测试。
  • 检查日志文件确认备份是否成功。