利用 mysqldump + WinRAR + 計劃任務,實現 Windows 環境下 MySQL 定時備份、壓縮、日志記錄全流程自動化。
@echo off
rem 需將 WinRAR 目錄加入系統 PATH
rem 切換工作目錄
f:
cd f:\DBBAK
rem 變量:備份文件名(含日期)與日志文件
SET BAK_FILE=MY_DBBAK_%date:~0,4%%date:~5,2%%date:~8,2%.sql
SET LOG_FILE=MY_DBBAK.log
rem 記錄開始時間
echo "%date% %time%" >> %LOG_FILE%
rem 執行備份:UTF8、存儲過程/觸發器、單事務一致性、指定庫
mysqldump --default-character-set=utf8 -h localhost -u root -R --triggers --single-transaction -B mydb > %BAK_FILE%
rem 壓縮並刪除源文件
rar a %BAK_FILE%.rar %BAK_FILE%
del /F %BAK_FILE%
rem 記錄結束
echo "%date% %time%" >> %LOG_FILE%
echo. >> %LOG_FILE%
cmd.exe,參數 /c f:\DBBAK\backup_mysql.bat。| 參數 | 作用 |
|---|---|
--single-transaction | InnoDB 熱備份,不鎖表,保證一致性視圖 |
-R --triggers | 導出存儲過程、函數、觸發器 |
-B mydb | 指定數據庫,輸出包含 CREATE DATABASE |
rar a | 創建/更新壓縮包,預設最佳壓縮率 |
findstr /V "OK" %LOG_FILE% 檢查異常並發郵件告警。forfiles /p f:\DBBAK /m *.rar /d -30 /c "cmd /c del @path" 定期清理 30 天前備份。robocopy 同步至 NAS/雲存儲。