原文详见:https://www.jianshu.com/p/3e050aad75d9
定时备份mysql数据步骤:
1.编辑自动备份的脚本文件:copyDB.bat:
@REM 版本 1.4
@REM 要测试是否能成功运行,请在配置好如下参数后,直接运行,看可否正常备份MySQL数据。若是能正常备份,那么就能够配置到计划任务中了。mysql
@REM 注意:运行计划任务的用户,须要有访问备份文件夹和临时目录读写的权限。 @REM 若是有运行异常,请将 @ECHO OFF 删除,并在最后添加一行加入 PAUSE 好观察在哪步出了错。 @ECHO OFF REM *************************************************************************** REM 参数配置(参数先后不能有空格) REM 设置dbhost为主机名或IP地址 SET dbhost=58.213.83.82 ------------------------------改成你须要备份的服务器的ip SET dbport=3306 REM 设置登录mysql数据库的用户名。若是用户名中有"号,请用""代替。 SET dbuser=root --------------------------须要备份数据的数据库账号 REM 设置登录mysql的密码。若是密码中有"号,请用""代替。 SET dbpwd=123456 ---------------------------------须要备份数据的数据库密码 REM 设置backupPath为备份文件存放的路径。注意:文件夹名存在空格不须要引号括起来。警告:此文件夹应为专用目录,最好独立使用,避免删除历史备份时误删数据。 SET backupPath=E:\timeCopyDB\copyData ---------------------------------备份下来的文件存放位置 REM 备份文件夹前缀。 SET backupFolderPrefix=MyBackup_ REM 设置删除历史备份文件。删除多少次备份以前的备份文件。0--不删除历史备份文件;1,表示一次,2,表示2次,以此类推。如set deleteHistorySkips=30表示删除30次之前的备份文件; SET deleteHistorySkips=1 REM 设置备份时发生错误是否删除历史备份文件。yes--删除;no--不删除。 SET onErrorDeleteBackFile=no REM 是否启用压缩功能。yes--开启压缩功能。no--禁用压缩功能。默认值:no,不开启。 SET enableCompress=yes REM 设置WinRAR压缩级别。取值0到5。0--无压缩;5--最高压缩比;默认值:3 SET compressLevel=3 REM 压缩类型。cab--系统内置cab压缩功能。rar--启用RAR压缩功能,须要安装RAR压缩软件支持 SET compressType=cab REM 设置WinRAR安装路径。 SET rarPath=C:\Program Files (x86)\360\360SafeuA\360zip ---------------你本地的压缩文件安装路径 REM 设置分卷大小。0--表示不分卷;1--表示1k,1024--表示1M,2048--表示2M;默认值:102400,表示100M SET volumePackSize=0 REM 设置压缩密码。{empty}表示没有密码。其余字符表示压缩文件密码 SET rarPwd={empty} REM 设置临时目录。若是备份时系统默认临时目录所在分区空间过小,能够经过这里调整该脚本运行的临时目录。默认值:%TEMP% REM 启用压缩时,零时目录占用空间较大,大约是备份数据库的1.2倍。不启用压缩,占用临时目录空间很小。 REM 若是启用了CAB压缩,临时目录最好和备份文件夹在同一个分区。请保证指定的临时目录存在。 SET TEMP=%TEMP% REM 完成参数配置 REM *************************************************************************** REM *************************************************************************** REM 环境检测,参数检测和初始化 REM 设置%myDate%为当前日期(2013-01-02)。由于日期后可能跟一个空格和星期几,而且日期中多是”/"分割,因此要去除掉星期几和斜线。 FOR /F "tokens=1,2* delims= " %%i IN ('ECHO %date:/=-%') DO SET "myDate=%%i" REM 设置%MyTime%为当前时间。格式:20.56.30.99 SET myTime=%TIME::=.% SET myTime=%myTime: =0% REM 设置零时目录 SET myTempDir=%TEMP%\MySQLBack_%myDate%_%MyTime% REM 设置备份日志文件 SET backupLogFile=%backupPath%\MySQLBackLog.txt REM 用于环境检测的零时文件名 SET checkFileName=_1_2_3_backup_mysql_check_%myDate%_%MyTime% REM ****目录权限检测**** REM 检查备份目录是否存在,不存在则建立 :CheckAndMakeBackupFolder IF exist "%backupPath%" GOTO CheckBackupFolderCreatFile MD "%backupPath%" IF %errorlevel%==0 GOTO CheckBackupFolderCreatFile ECHO 建立数据库备份目录失败。请检测您是否具备写入"%backupPath%"的权限,或者驱动器是否存在。 PAUSE GOTO END REM 检查备份目录是否有建立文件的权限 :CheckBackupFolderCreatFile ECHO. > "%backupPath%\%checkFileName%" IF EXIST "%backupPath%\%checkFileName%" del "%backupPath%\%checkFileName%" /Q /F & GOTO CheckBackupFolderCreateFolder ECHO 请检查对备份文件夹"%backupPath%"是否有文件写入权限。 PAUSE GOTO END REM 检查备份目录是否有建立文件夹的权限 :CheckBackupFolderCreateFolder MD "%backupPath%\%checkFileName%" && ( RD /S /Q "%backupPath%\%checkFileName%" & GOTO CheckTempFolderAccess ) ECHO %myDate% %TIME% 请检查对备份文件夹"%backupPath%"是否有建立文件夹的权限。>>"%backupLogFile%" GOTO END REM 检测临时目录访问权限 :CheckTempFolderAccess ECHO. > "%temp%\%checkFileName%" IF EXIST "%temp%\%checkFileName%" DEL "%temp%\%checkFileName%" /Q /F & GOTO MakeTempFolder ECHO %myDate% %TIME% 没有临时目录写入权限。请用具备权限的用户执行备份脚本。>>"%backupLogFile%" GOTO END REM 建立零时目录 :MakeTempFolder MD "%myTempDir%" && GOTO CheckMySQLInstalled ECHO %myDate% %TIME% 没法建立临时目录"%myTempDir%"。请检查临时目录权限。>>"%backupLogFile%" GOTO END REM ****完成目录权限检测**** REM 检测MySQL是否安装 :CheckMySQLInstalled mysql --help > NUL && GOTO CheckMySQLConnect ECHO %myDate% %TIME% 没法检测到mysql,请确保已经正确安装MySQL.或者将MySQL的Bin目录的路径添加到系统变量Path中。>>"%backupLogFile%" GOTO CheckParmsFailed REM 验证数据库链接 :CheckMySQLConnect ECHO exit | mysql -h"%dbhost%" -u"%dbuser%" -p"%dbpwd%" > NUL && GOTO CheckdeleteHistorySkips ECHO %myDate% %TIME% 没法链接到%dbhost%。请检服务是否启动,链接的用户名和密码是否正确。>>"%backupLogFile%" GOTO CheckParmsFailed REM 验证删除历史备份配置参数 :CheckdeleteHistorySkips ECHO %deleteHistorySkips%| findstr /be "[0-9]*" > nul && GOTO CheckOnErrorDeleteBackFile ECHO %myDate% %TIME% 删除历史备份文件"deleteHistorySkipsFailed"配置错误,只能配置整数。>>"%backupLogFile%" GOTO CheckParmsFailed REM 验证删除历史备份配置参数 :CheckOnErrorDeleteBackFile IF %onErrorDeleteBackFile%==no GOTO CheckCompressConfig IF %onErrorDeleteBackFile%==yes GOTO CheckCompressConfig ECHO %myDate% %TIME% 备份错误时是否删除历史文件"onErrorDeleteBackFile"配置参数错误。>>"%backupLogFile%" GOTO CheckParmsFailed REM 检查压缩软件配置 :CheckCompressConfig IF %enableCompress%==no GOTO CheckSuccess IF %enableCompress%==yes GOTO CheckCompressLevel ECHO %myDate% %TIME% 是否启用压缩变量"enableCompress"的参数只能是"yes"或者"no".请检查配置。>>"%backupLogFile%" GOTO CheckParmsFailed REM 检查压缩级别 :CheckCompressLevel ECHO %compressLevel%| findstr /be "[0-5]" > nul && GOTO CheckVolumePackSize ECHO %myDate% %TIME% 压缩级别"compressLevel"配置错误,参数只能是0~5的数字>>"%backupLogFile%" GOTO CheckParmsFailed REM 验证RAR分卷大小设置 :CheckVolumePackSize ECHO %volumePackSize%| findstr /be "[0-9]*" > nul && GOTO CheckCompressType ECHO %myDate% %TIME% 压缩包分卷大小"volumePackSize"配置错误。请检查设置。>>"%backupLogFile%" GOTO CheckParmsFailed REM 检查压缩类型 :CheckCompressType IF %compressType%==rar GOTO CheckRarPath IF %compressType%==cab GOTO CheckMakeCab ECHO %myDate% %TIME% 压缩类型"compressType"设置错误.值只能是"cab"或者"rar".请检查设置。>>"%backupLogFile%" GOTO CheckParmsFailed REM 验证RAR配置目录 :CheckRarPath IF exist "%rarPath%\Rar.exe" GOTO CheckSuccess ECHO %myDate% %TIME% WinRAR安装路径"rarPath"设置错误.请检查设置。>>"%backupLogFile%" GOTO CheckParmsFailed REM 验证makecab :CheckMakeCab makecab /? >NUL && GOTO CheckSuccess ECHO %myDate% %TIME% 系统内置MakeCab压缩功能没法使用,请使用RAR进行压缩。>>"%backupLogFile%" GOTO CheckParmsFailed REM 参数验证没法经过时 :CheckParmsFailed ECHO 没法完成初始化。请查看日志文件:%backupLogFile% RD /S /Q "%myTempDir%" GOTO END REM 验证成功 :CheckSuccess REM 完成环境检测和初始化 REM *************************************************************************** REM *************************************************************************** REM 备份数据库 ECHO %myDate% %TIME% 启动数据库备份脚本...>>"%backupLogFile%" REM 当前备份使用的文件夹 set backupName=%backupFolderPrefix%%myDate% %myTime% REM 根据须要建立专属目录。在分卷压缩或者不压缩时,须要专属目录 IF %enableCompress%==no MD "%backupPath%\%backupName%" IF %enableCompress%==yes ( IF NOT %volumePackSize%==0 MD "%backupPath%\%backupName%" ) IF "%enableCompress%"=="yes" MD "%myTempDir%\%backupName%" REM 设置数据库备份使用的直接目录 IF "%enableCompress%"=="no" SET backDbTmpPath=%backupPath%\%backupName% IF "%enableCompress%"=="yes" SET backDbTmpPath=%myTempDir%\%backupName% SET errorFile=%backDbTmpPath%\##BackupFailDbs.txt SET dbList=%myTempDir%\dblist.txt SET backmysqlbat=%myTempDir%\bakmysql.bat REM 生成数据库列表文件 ECHO show databases; | mysql -h"%dbhost%" -u"%dbuser%" -p"%dbpwd%" > "%dblist%" SET isExistError=no REM 建立备份MySQL数据库的脚本。 ECHO ECHO 未成功备份的数据库: ^> "%errorFile%" > "%backmysqlbat%" FOR /f "usebackq skip=1 tokens=*" %%i in ("%dblist%") DO ECHO mysqldump --no-defaults --single-transaction "%%i" -h"%dbhost%" -P"%dbport%" -u"%dbuser%" -p"%dbpwd%" ^> "%backDbTmpPath%\%%i.sql" >>"%backmysqlbat%" && ECHO if not %%errorlevel%%==0 (ECHO %%i ^>^> "%errorFile%" ^& ECHO %myDate% %TIME% 数据库备份失败:%%i^>^>"%backupLogFile%" ^& SET isExistError=yes) >> "%backmysqlbat%" call "%backmysqlbat%" REM 若是不存在错误,删除错误文件。 IF %isExistError%==no DEL "%errorFile%" /Q /F > NUL IF %enableCompress%==yes GOTO CompressBackup GOTO BackupFinished REM ****压缩处理**** :CompressBackup IF %compressType%==rar GOTO RarCompress REM CAB压缩处理 REM 进行CAB压缩。注:makecab,不能在一个压缩包中建立目录。并且须要建立文件列表才能建立多文件压缩包。同时文件名不能重复。 FOR /f "tokens=1* delims=" %%i in ('DIR "%backDbTmpPath%" /S /B /A-D') do echo "%%i" >> "%myTempDir%\cab_files.lst" SET cabCompressLevel=18 IF %compressLevel%==0 SET cabCompressLevel=15 IF %compressLevel%==0 SET cabCompressLevel=21 REM 切换到零时目录 FOR /F "delims=:" %%i IN ('ECHO %myTempDir%') DO %%i: CD "%myTempDir%" IF NOT %volumePackSize%==0 GOTO CabSplitCompress makecab /f "%myTempDir%\cab_files.lst" /d compressiontype=lzx /d compressionmemory=%cabCompressLevel% /d maxdisksize=0 /d diskdirectorytemplate=cabdb /d cabinetnametemplate="%backupName%.cab" MOVE /Y "%myTempDir%\cabdb\%backupName%.cab" "%backupPath%\" GOTO BackupFinished :CabSplitCompress SET /A maxdisksize=%volumePackSize% * 1024 makecab /f "%myTempDir%\cab_files.lst" /d compressiontype=lzx /d compressionmemory=%cabCompressLevel% /d maxdisksize=%maxdisksize% /d diskdirectorytemplate=cabdb /d cabinetnametemplate="%backupName%.part*.cab" MOVE /Y "%myTempDir%\cabdb\*" "%backupPath%\%backupName%\" GOTO BackupFinished REM RAR 压缩处理 :RarCompress SET rarCommand="%rarPath%\rar.exe" a -r -ep1 -o+ -m%compressLevel% IF NOT %volumePackSize%==0 SET rarCommand=%rarCommand% -v%volumePackSize% IF NOT %rarPwd%=={empty} SET rarCommand=%rarCommand% -p%rarPwd% REM 若是未分卷,保存在备份目录的根目录 IF %volumePackSize%==0 SET rarCommand=%rarCommand% "%backupPath%\%backupName%.rar" REM 若是分卷,保存在根目录下的一个专属文件夹中 IF NOT %volumePackSize%==0 SET rarCommand=%rarCommand% "%backupPath%\%backupName%\%backupName%.rar" SET rarCommand=%rarCommand% "%backDbTmpPath%\" %rarCommand% REM ****完成压缩处理**** :BackupFinished ECHO %myDate% %TIME% 完成一次自动备份。备份目录:"%backupPath%\%backupName%" >> "%backupLogFile%" IF %isExistError%==yes ECHO 可是存在没有成功备份的数据库。查看没有成功备份的数据库,请查看文件备份文件夹中的"##BackupFailDbs.txt" >> "%backupLogFile%" REM 完成备份数据库 REM *************************************************************************** REM *************************************************************************** REM 删除历史备份 :RemoveHistoryBackup IF %isExistError%==yes ( IF %onErrorDeleteBackFile%==no GOTO ClearTmpFile ) IF %deleteHistorySkips%==0 GOTO ClearTmpFile IF %enableCompress%==no GOTO RemoveHistoryBackupFolder IF NOT %volumePackSize%==0 GOTO RemoveHistoryBackupFolder GOTO RemoveHistoryBackupFile :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 REM 完成删除历史备份 REM *************************************************************************** :ClearTmpFile CD \ RD /S /Q "%myTempDir%" > NUL :END ECHO. >> "%backupLogFile%"
2.配置定时任务:
在系统变量path中加入数据库的安装路径
打开计算机—属性—高级环境变量配置—pathsql
添加系统的定时任务数据库
1.开始菜单—搜索“任务计划程序”—建立任务—服务器
2.建立任务:常规中设置任务名称ide
触发器添加任务执行的时间和周期测试
操做中,选择启动程序-》选择mysqlAutobackup.bat的脚本文件,保存便可。3d
**上面的批处理文件是关键日志