Windows MySQL备份bat脚本

bat mysql
Updated: 2025-11-06

Windows MySQL备份bat脚本 🔗

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
@echo off
rem ========== 可维护参数 ==========
set SRC_HOST=127.0.0.1
set SRC_PORT=3306
set SRC_USER=root
set SRC_PWD=SrcPass
set SRC_DB=src_db

set DST_HOST=127.0.0.1
set DST_PORT=3307
set DST_USER=root
set DST_PWD=DstPass
set DST_DB=dst_db

set MYSQL_HOME=C:\Program Files\MySQL\MySQL Server 8.0
set BAK_DIR=C:\scripts\backup
set LOG_DIR=C:\scripts\logs
rem =================================

:: 1. 生成带时分秒的文件名
set NOW=%date:~0,4%%date:~5,2%%date:~8,2%-%time:~0,2%%time:~3,2%%time:~6,2%
set NOW=%NOW: =0%          &:: 补零(处理 08:09:05 中的空格)
set SQL_FILE=%BAK_DIR%\%SRC_DB%_%NOW%.sql
set LOG_FILE=%LOG_DIR%\mysql_sync_%date:~0,4%%date:~5,2%%date:~8,2%.log

:: 2. 确保目录存在
if not exist "%BAK_DIR%" md "%BAK_DIR%"
if not exist "%LOG_DIR%" md "%LOG_DIR%"

echo === %date% %time% 开始同步 [%SRC_DB%] -> [%DST_DB%] === >> "%LOG_FILE%"
echo           备份文件: %SQL_FILE% >> "%LOG_FILE%"

:: 3. 导出
"%MYSQL_HOME%\bin\mysqldump" -h%SRC_HOST% -P%SRC_PORT% -u%SRC_USER% -p"%SRC_PWD%" ^
     --single-transaction --routines --triggers --events --databases %SRC_DB% ^
     > "%SQL_FILE%"
if errorlevel 1 (
   echo === %date% %time% 导出失败 === >> "%LOG_FILE%"
   exit /b 1
)

:: 4. 导入
"%MYSQL_HOME%\bin\mysql" -h%DST_HOST% -P%DST_PORT% -u%DST_USER% -p"%DST_PWD%" ^
     %DST_DB% < "%SQL_FILE%"
if errorlevel 1 (
   echo === %date% %time% 导入失败 === >> "%LOG_FILE%"
   exit /b 1
)

echo === %date% %time% 同步完成 === >> "%LOG_FILE%"

新建计划任务 🔗

Win+R → taskschd.msc → 创建任务:

  • 常规:勾选“使用最高权限运行”
  • 触发器:每天 02:00
  • 操作:启动程序 → C:\scripts\mysql_sync.bat
  • 条件:取消“仅 AC 电源”
  • 设置:允许按需运行、失败重试 3 次,间隔 10 分钟