在 Windows 環境下,結合 mysqldump 與工作排程器,可輕鬆實現 MySQL 定時備份。適用於中小型資料庫,大型資料庫建議考慮實體備份或複制方案。
@echo off
echo -------------------------
echo MySQL 自動備份
echo %date%
echo -------------------------
:: 解析日期變數 (格式 YYYYMMDD)
set year=%date:~0,4%
set month=%date:~5,2%
set day=%date:~8,2%
:: 設定備份檔名
set db1_backup=db1_%year%%month%%day%.sql
set db2_backup=db2_%year%%month%%day%.sql
:: 切換至 MySQL bin 目錄
cd /d "D:\Program Files\phpStudy\MySQL\bin"
:: 執行備份 (請依實際帳密、資料庫名稱修改)
mysqldump -uroot -proot db1 > "d:\backup\%db1_backup%"
mysqldump -uroot -proot db2 > "d:\backup\%db2_backup%"
:: 可選:壓縮備份檔 (需安裝 7-Zip 或類似工具)
:: "C:\Program Files\7-Zip\7z.exe" a "d:\backup\%db1_backup%.7z" "d:\backup\%db1_backup%"
echo 備份完成!
:: pause <-- 測試時可取消註解查看結果
-u / -p:帳號密碼(生產環境建議使用 --defaults-extra-file 避免明文)--single-transaction:InnoDB 熱備份必加,保證一致性不鎖表--flush-logs:備份前切換 binlog,利於增量備份--master-data=2:在輸出檔記錄 binlog 位置,便於時間點恢復cmd.exe,引數填 /c "D:\scripts\mysql_backup.bat"robocopy 或雲端同步工具將備份檔推送至遠端forfiles /p "d:\backup" /m *.sql /d -7 /c "cmd /c del @path" 自動刪除 7 天前檔案mysqldump 輸出檔大小、CRC32 或嘗試還原測試