@echo off
:: ------- 配置项 -------
:: 要执行的文件名
set FILE=C:\web\mysqlback\mysqlbackup.bat
:: 计划频率类型
set FREQUENCY=DAILY
:: 频率,与上面的计划频率类型对应
set MODIFIER=1
:: 该计划执行的时间(24 小时制)
set DATETIME=00:30:00
:: 计划的名字
set NAME="Backup Mysql Job"
:: 计划执行用户,不建议修改
set USER="System"
:: ------- 以下请勿修改 -------
schtasks /Create /RU %USER% /SC %FREQUENCY% /MO %MODIFIER% /ST %DATETIME% /TN %NAME% /TR %FILE%
pause
@title MySQL backup start
@echo off
setlocal enabledelayedexpansion
@color 0a
:: --------------------参数设置------------------------
:: 设置时间变量
set YEAR=%date:~0,4%
set MONTH=%date:~5,2%
set DAY=%date:~8,2%
:: 如果在 dos 下输入 time 返回的不是 24 小时制(没有 0 填充),请自行修改此处
set HOUR=%time:~0,2%
set MINUTE=%time:~3,2%
set SECOND=%time:~6,2%
set "Ymd=%YEAR%%MONTH%%DAY%"
:: 要备份的数据库名称,多个用空格分隔
set DATABASES= 数据库名称
:: HOST IP
set HOST=127.0.0.1
:: PROT 端口
set PROT=3306
:: MySQL 用户名
set USERNAME=root
:: MySQL 密码
set PASSWORD= mysql密码
:: MYSQLDUMP 安装目录
set MYSQLDUMP="C:\Progra~1\MySQL\MySQL Server 5.7\bin\mysqldump.exe"
:: WinRAR 自带命令行工具的可执行文件路径,长文件名注意用 Dos 长文件名书写方式
set WINRAR=C:\Progra~1\WinRAR\Rar.exe
:: 备份天数,会自动删除30天之前的数据
set DT=30
:: 备份放置的盘,加 \
set BACKUP_PATH=C:\
:: 备份放置的路径,加 \
set FILE=Backup\
:: --------------------开始备份------------------------
for %%D in (%DATABASES%) do (
if exist %BACKUP_PATH%%FILE%%%D (
echo 目录%BACKUP_PATH%%FILE%%%D已存在,无需创建
) else (
echo 创建%BACKUP_PATH%%FILE%%%D
md %BACKUP_PATH%%FILE%%%D
)
:: 删除
forfiles /p "%BACKUP_PATH%%FILE%%%D" /m %%D_*.sql -d -%DT% /c "cmd /c del /f @path"
:: 备份
%MYSQLDUMP% --opt --single-transaction=TRUE --user=%USERNAME% --password=%PASSWORD% --host=%HOST% --protocol=tcp --port=%PROT% --default-character-set=utf8mb4 --single-transaction=TRUE --routines --events "%%D" >"%BACKUP_PATH%%FILE%%%D\%%D_%Ymd%.sql"
)
:: --------------------结束备份------------------------
@echo on