原文詳見: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中加入數據庫的安裝路徑
打開計算機—屬性—高級環境變量配置—path
sql
添加系統的定時任務數據庫
1.開始菜單—搜索「任務計劃程序」—建立任務—服務器
2.建立任務:常規中設置任務名稱ide
觸發器添加任務執行的時間和週期測試
操做中,選擇啓動程序-》選擇mysqlAutobackup.bat的腳本文件,保存便可。
3d
**上面的批處理文件是關鍵日誌