定時備份mysql數據

原文詳見: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
定時備份mysql數據sql

添加系統的定時任務數據庫

1.開始菜單—搜索「任務計劃程序」—建立任務—服務器

2.建立任務:常規中設置任務名稱ide

觸發器添加任務執行的時間和週期測試

操做中,選擇啓動程序-》選擇mysqlAutobackup.bat的腳本文件,保存便可。
定時備份mysql數據3d

定時備份mysql數據

定時備份mysql數據

定時備份mysql數據

**上面的批處理文件是關鍵日誌

相關文章
相關標籤/搜索