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

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

1. 保存备份脚本

将脚本保存为mysql_backup.bat文件。

bat 复制代码
@echo off
setlocal enabledelayedexpansion

:: ================================================
:: 自动请求管理员权限
:: ================================================
:: 检查是否已管理员身份运行
net session >nul 2>&1
if %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>&1
	if !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 验证任务(可选)

  • 右键新建的任务选择运行测试。
  • 检查日志文件确认备份是否成功。
相关推荐
冷崖2 小时前
MySQL异步连接池的学习(五)
学习·mysql
CC__xy5 小时前
demo 通讯录 + 城市选择器 (字母索引左右联动 ListItemGroup+AlphabetIndexer)笔记
windows
妖灵翎幺6 小时前
Java应届生求职八股(2)---Mysql篇
数据库·mysql
HMBBLOVEPDX6 小时前
MySQL的事务日志:
数据库·mysql
weixin_419658319 小时前
MySQL数据库备份与恢复
数据库·mysql
wml000009 小时前
CentOS启动两个MySQL实例
mysql·centos·3406
LZQqqqqo12 小时前
C# 中 ArrayList动态数组、List<T>列表与 Dictionary<T Key, T Value>字典的深度对比
windows·c#·list
季春二九12 小时前
Windows 11 首次开机引导(OOBE 阶段)跳过登录微软账户,创建本地账户
windows·microsoft
苏婳66613 小时前
【最新版】怎么下载mysqlclient并成功安装?
数据库·python·mysql
芥子沫13 小时前
Jenkins常见问题及解决方法
windows·https·jenkins