淘了一个mysql数据库的自动备份脚本,自己做了一些修改:
REM ***************************************************************************
REM 参数配置(参数前后不能有空格)
REM 设置dbhost为主机名或IP地址。设置MySQL数据库的地址,本机不用改。
SET dbhost=localhost
REM 设置端口号
SET port=3306
REM 设置登陆mysql数据库的用户名。如果用户名中有"号,请用""代替。
SET dbuser=
REM 设置登陆mysql的密码。如果密码中有"号,请用""代替。
SET dbpwd=
REM 设置backupPath为备份文件存放的路径。注意:文件夹名存在空格不需要引号括起来。警告:此文件夹应为专用目录,最好独立使用,避免删除历史备份时误删数据。
SET backupPath=d:\sql_backup
REM 备份文件夹前缀。
SET backupFolderPrefix=mysql_
REM 设置删除历史备份文件。删除多少次备份之前的备份文件。0--不删除历史备份文件;1,表示一次,2,表示2次,以此类推。如set deleteHistorySkips=30表示删除30次以前的备份文件;
SET deleteHistorySkips=10
REM 设置临时目录。如果备份时系统默认临时目录所在分区空间太小,可以通过这里调整该脚本运行的临时目录。默认值:%TEMP%
SET TEMP=e:\temp
REM 完成参数配置
REM ***************************************************************************
REM 备份开始
set hour=%time:~0,2%
if "%time:~0,1%"==" " set hour=0%time:~1,1%
set now=%Date:~0,4%%Date:~5,2%%Date:~8,2%%hour%%Time:~3,2%%Time:~6,2%
SET newDir=%backupPath%\%backupFolderPrefix%%now%
MD %newDir%\
set dblist=%temp%\dblist.txt
echo show databases; | mysql -h"%dbhost%" -P%port% -u"%dbuser%" -p"%dbpwd%" > "%dblist%"
for /f " usebackq skip=1 tokens=*" %%i in ("%dblist%") do mysqldump --single-transaction "%%i" -h"%dbhost%" -P%port% -u"%dbuser%" -p"%dbpwd%" > "%newDir%\%%i.sql"
REM 备份结束
REM ***************************************************************************
REM 删除历史备份
:RemoveHistoryBackupFolder
FOR /F "Skip=%deleteHistorySkips% tokens=*" %%i IN ('DIR "%backupPath%\%backupFolderPrefix%*" /TC /O-D /AD /B') DO RD "%backupPath%\%%i" /S /Q & ECHO %myDate% %TIME% 删除历史备份:%%i >> "%backupLogFile%"
GOTO ClearTmpFile
:RemoveHistoryBackupFile
FOR /F "Skip=%deleteHistorySkips% tokens=*" %%i IN ('DIR "%backupPath%\%backupFolderPrefix%*" /TC /O-D /A-D /B') DO DEL "%backupPath%\%%i" /Q /F & ECHO %myDate% %TIME% 删除历史备份:%%i >> "%backupLogFile%"
GOTO ClearTmpFile
:ClearTmpFile
DEL %dblist%
REM 完成删除历史备份
REM 备份结束