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 分钟