MySQL:Windows下分庫備份指令碼

Ryan_Bai發表於2024-01-17

新獲取到一個需求,就是要按庫進行備份,寫了份指令碼和大家分享一下吧

@echo off
for /f "Tokens=1-3 Delims=/ " %%i in ('date /t') do set dt=%%i-%%j-%%k-
for /f "Tokens=1-2 Delims=: " %%i in ('time /t') do set tm=%%i-%%j
set tm=%dt%%tm%
set bkupdir=D:\back
set mysql_host=127.0.0.1
set mysql_user=backup
set mysql_password=backup123
set expir_date=7
 
rem 獲取所有資料庫名稱並逐個備份
e:
cd %bkupdir%
for /f "tokens=*" %%i in ('mysql -h %mysql_host% -u %mysql_user% -p%mysql_password% --skip-column-names -e "show databases;"') do (
    if "%%i" equ "mysql" (
        echo mysql:系統庫不備份
    ) else if "%%i" equ "information_schema" (
        echo information_schema:系統庫不備份
    ) else if "%%i" equ "performance_schema" (
        echo performance_schema:系統庫不備份
    ) else if "%%i" equ "sys" (
        echo sys:系統庫不備份
    ) else (
        echo 開始備份%dbname%資料庫
        if exist %bkupdir%\%mysql_host% (
            echo 目錄%bkupdir%\%mysql_host%已存在,無需建立
        ) else (
            echo 建立%bkupdir%\%mysql_host%目錄
            mkdir %bkupdir%\%mysql_host%
        )
        rem 匯出資料庫內容到sql檔案
        mysqldump -u%mysql_user% -p%mysql_password% -h%mysql_host% %%i>%bkupdir%\%mysql_host%\%%i-%tm%.sql
        
    ) 
)
rar a -r -s -m1 %mysql_host%-%tm%.rar %mysql_host% && (
    rd /s/q %mysql_host%
    forfiles /p "%bkupdir%" /s /m %mysql_host%*.rar /d -%expir_date% /c "cmd /c del @path
    forfiles /p "%mysql_log%" /s /m *.* /d -%expir_date% /c "cmd /c del @path
)


來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/31490526/viewspace-3004199/,如需轉載,請註明出處,否則將追究法律責任。

相關文章