首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Windows 下 MySQL 自動定時備份最佳實踐(批次檔 + 排程器)

     編輯:MySQL 資料庫相關知識

針對 Windows 伺服器,本文提供最簡單、可靠的 MySQL 自動備份方案:編寫批次檔停止服務 → 複製資料檔 → 重啟服務,再透過 Windows 工作排程器定時執行。

環境假設

  • MySQL 安裝路徑:D:\Program Files\MySQL\MySQL Server 5.0\data
  • 資料庫名稱:952game
  • 備份目的地:D:\db_bak\

資料目錄結構

建立備份批次檔 (db_bak.bat)

net stop mysql
xcopy D:\Program Files\MySQL\MySQL Server 5.0\data\952game\*.* D:\db_bak\952game\%date:~0,3%\ /y
net start mysql

指令解析:

  • net stop mysql / net start mysql:停止/啟動服務,確保資料檔一致性(冷備份)。
  • xcopy ... /y:覆蓋複製,不提示確認。
  • %date:~0,3%:擷取星期幾(如 Mon、Tue),自動建立以星期命名的子目錄,實現 7 天輪轉備份。

批次檔內容示意

常用日期時間變數擷取語法

語法輸出範例用途
%date:~0,10%2024-01-15建立每日日期目錄
%date:~-3%Mon建立每週輪轉目錄(本文採用)
%time:~0,5%14:30時分
%time:~0,-3%14:30:15時分秒

設定 Windows 工作排程器

  1. 執行 control schedtasks 或「控制台」→「系統管理工具」→「工作排程器」。
  2. 右側選「建立基本工作」,名稱輸入 MySQL_Auto_Backup。
  3. 觸發條件選「每天」,時間設為離峰時段(如凌晨 03:00)。
  4. 動作選「啟動程式」,程式路徑指向 D:\db_bak\db_bak.bat。
  5. 完成嚮導,必要時在「一般」頁籤勾選「不管使用者是否登入都要執行」並輸入帳號密碼。

開啟排程器 建立基本工作 設定觸發時間 指定執行程式 完成設定

進階建議與替代工具

  • 熱備份替代方案:若不想停機,改用 mysqldump --single-transaction 邏輯備份(參考方案一)。
  • 免費圖形化工具:
    • 護衛神好備份軟體(支援 SQL Server、檔案備份)
    • P8Net MyAdmin(MySQL 專用定時備份工具)
  • 異地備份:配合 robocopy 或雲端同步工具將 D:\db_bak 複製至遠端/雲端。
  • 備份驗證:定期在測試機執行還原演練,確保備份檔可用。

常見問題 FAQ

Q: 批次檔執行閃退、無備份檔產生?
A: 以系統管理員身分執行 CMD 測試批次檔,觀察錯誤訊息;確認路徑含空格時已加雙引號,服務名稱正確(net stop mysql 或 net stop MySQL57)。
Q: %date% 格式在不同系統語言下不同?
A: 建議改用 wmic os get localdatetime 取得統一格式,或使用 PowerShell Get-Date -Format 'yyyyMMdd' 更穩健。
Q: 大資料庫停機時間過長?
A: 改用 LVM 快照(Linux)、xtrabackup 熱備份或主從複制架構離線備份從庫。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved