mysql自动备份,且预设备份脚本保留时长

编写bat脚本,在服务器中添加定时任务,设定执行时间间隔


@echo off

: basedata
set ip=数据库所在服务器IP
set user=用户名
set password=密码
set databaseName=库名


set /a backupDays=183(备份文件保留时间,超过自动删除,单位天)
set mysqlBinPath=D:\mysql\bin\(mysql路径)
set mysqlBackupPath=D:\test\(备份文件夹路径)


set logs=%mysqlBackupPath%\logs.txt
set day=%date:~8,2%
set month=%date:~5,2%
set /a year=%date:~0,4%


if not exist %mysqlBackupPath% md %mysqlBackupPath%
echo %year%-%month%-%day% >> %logs%


set backupingFilePath=%mysqlBackupPath%\%databaseName%_%year%-%month%-%day%.sql
cd /d %mysqlBinPath%


echo backupdata >> %logs%
mysqldump -h%ip% -u%user% -p%password% --default-character-set=utf8 --opt --extended-insert=false --triggers -R --hex-blob -x %databaseName%>%backupingFilePath%


if exist %backupingFilePath% (
? echo backupcomplete %databaseName%_%year%-%month%-%day%.sql
? echo? backupcomplete %databaseName%_%year%-%month%-%day%.sql >> %logs%
) else (
? echo backupfaile
? echo backupfaile >> %logs%
? pause
? exit
)


rem delete backupDays's backup


call :daysOfLastMonth "%year%-%month%-%day%" %backupDays% newday
set day=%newday:~6,2%
set month=%newday:~4,2%
set /a year=%newday:~0,4%
set deleteBackupFilePath=%databaseName%_%year%-%month%-%day%.sql


echo %databaseName%_%year%-%month%-%day%.sql
echo %mysqlBackupPath%%deleteBackupFilePath% >> %logs%
if exist %mysqlBackupPath%%deleteBackupFilePath% (
? del %mysqlBackupPath%%deleteBackupFilePath%
?
? echo delcomplete >> %logs%
) else (


? echo the document isn't exist >> %logs%
)
echo -----------------------------------------------------end >> %logs%




:daysOfLastMonth
@echo off&setlocal
for /f "tokens=1-3 delims=/-:\, " %%a in ('echo/%~1') do (
set /a yy=%%a,mm=100%%b%%100,dd=100%%c%%100)
set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633
set /a i=j-%~2,a=i+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a
set /a d=4*c+3,d/=1461,e=-1461*d,e/=4,e+=c,m=5*e+2,m/=153,dd=153*m+2,dd/=5
set /a dd=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10
(if %mm% LSS 10 set mm=0%mm%)&(if %dd% LSS 10 set dd=0%dd%)
endlocal&set %~3=%yy%%f%%mm%%f%%dd%&goto :EOF

猜你喜欢

转载自www.cnblogs.com/sqlservertongbu/p/11013764.html
今日推荐