@echo off
rem 脚本使用配置开始=======================start
::设置数据库所在ip
setip=localhost
::设置数据库端口
setport=3306
::设置数据库连接用户(为了保证导出函数,视图,存储过程,触发器请给用户设置权限)
setuser=root
::设置数据库连接用户密码(密码中的%需要两个%%转义)
setpassword="E=eK*Y)gXI@2%%kCd-Atl~RS[[0"
::设置备份文件存储位置
setdataFolder=C:\Users\Administrator\Desktop\mysqlbak
::设置压缩软件WinRAR的安装目录
setwinrarPath="C:\Program Files\WinRAR"
rem 通过查询出数据库名称备份sql,可排除不需要备份的数据库
setsql="select schema_name from information_schema.schemata where schema_name in ('bk_sys')"
rem 脚本使用配置结束=======================end
rem 创建存储文件夹
IF NOT EXIST %dataFolder% (mkdir %dataFolder%
)
rem 创建时间
setdatevar=%date:~0,4%%date:~5,2%%date:~8,2%
rem 查询出需要备份的库名称并保存到alldataBaseName.txt文件
mysql -h %ip% -u%user% -p%password% -P %port% -e %sql% > %dataFolder%\alldataBaseName.txt
rem 创建日期文件夹
if not exist "%dataFolder%\%datevar%\" (
mkdir "%dataFolder%\%datevar%\"
)
rem 循环备份数据库
for /f "skip=1" %%i in(%dataFolder%\alldataBaseName.txt)do(echo 开始备份=======%%i
mysqldump -R -u%user% -p%password% -h%ip% -P%port% %%i > %dataFolder%\%datevar%\%%i_%datevar%.sql
)
rem 压缩备份文件
::若压缩文件存在,先删除
if exist "%dataFolder%\%datevar%.rar"(
del %dataFolder%\%datevar%.rar
)
::使用WinRAR压缩文件并删除源文件
%winrarPath%\Rar.exe a -k-r-s-m5-ep1-df %dataFolder%\%datevar%.rar %dataFolder%\%datevar%
rem 删除名称文件
del %dataFolder%\alldataBaseName.txt
echo 备份结束