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

Windows 下 MySQL 自動備份與還原腳本實戰(批處理 + 計劃任務)

     編輯:MySQL 資料庫相關知識

方案概覽

利用 Windows 批處理腳本調用 mysqldump,配合「任務計劃程序」實現每日定時自動備份;還原時直接通過 mysql 客戶端導入 SQL 文件。無需第三方工具,輕量可控。

一、自動備份腳本(backup_mysql.bat)

@echo off
REM 設置時間戳格式:YYYYMMDDHHMMSS
set timestamp=%date:~0,4%%date:~5,2%%date:~8,2%%time:~1,1%%time:~3,2%%time:~6,2%

REM 替換為實際值
set DB_USER=root
set DB_PASS=your_password
set DB_NAME=your_database
set BACKUP_DIR=D:\mysql_backup

REM 執行備份
mysqldump -u %DB_USER% -p%DB_PASS% %DB_NAME% > "%BACKUP_DIR%\%DB_NAME%_%timestamp%_bak.sql"

REM 可選:壓縮備份文件(需安裝 7-Zip)
REM "C:\Program Files\7-Zip\7z.exe" a -tzip "%BACKUP_DIR%\%DB_NAME%_%timestamp%_bak.zip" "%BACKUP_DIR%\%DB_NAME%_%timestamp%_bak.sql"
REM del "%BACKUP_DIR%\%DB_NAME%_%timestamp%_bak.sql"

echo [%date% %time%] Backup completed: %DB_NAME%_%timestamp%_bak.sql

關鍵點說明

  • 時間戳解析:%date% 格式取決於系統區域設置(上述代碼假設 YYYY-MM-DD),建議用 wmic os get localdatetime 獲取標準格式更穩健。
  • 密碼安全:腳本中明文密碼有風險,生產環境建議:
    ① 使用 --defaults-extra-file 指向受保護的配置文件
    ② 或配置 Windows 凭據管理器
  • 目錄權限:確保運行任務的用戶對 BACKUP_DIR 有寫入權限。

二、配置 Windows 計劃任務

  1. 打開「任務計劃程序」→「創建基本任務」
  2. 觸發器:每天 → 凌晨 02:00(業務低峰期)
  3. 操作:啟動程序 → cmd.exe → 參數 /c D:\scripts\backup_mysql.bat
  4. 勾選「不管用戶是否登錄都要運行」+「使用最高權限運行」
  5. 條件/設置:根據需要勾選「僅在網絡可用時啟動」、「超過 1 小時停止」等

三、數據庫還原操作

命令行還原(最通用)

mysql -u root -p your_database < D:\mysql_backup\your_database_20240115020000_bak.sql

輸入密碼後等待完成,無輸出即成功。

大文件優化還原技巧

  • 禁用自動提交:在 SQL 文件開頭加 SET autocommit=0; 結尾加 COMMIT;(mysqldump 默認已包含)
  • 關閉二進制日志:還原前執行 SET sql_log_bin=0;(需 SUPER 權限),避免產生大量 Binlog
  • 並行導入:將大表拆分為多個文件,多線程並行導入(需應用層支持)

四、進階增強建議

需求實現方案
多庫備份腳本中循環數組 for %%d in (db1 db2 db3) do mysqldump ...
異地備份備份完成後調用 rclone / scp / ftp 上傳至對象存儲/異地服務器
保留策略腳本末尾加入 forfiles /p "%BACKUP_DIR%" /m *_bak.sql /d -7 /c "cmd /c del @path" 刪除 7 天前文件
備份驗證定期腳本自動還原至測試庫,校驗核心表行數/校驗和

五、常見問題排查

  • 備份文件為 0 字節:密碼錯誤、用戶無權限、mysqldump 路徑不在 PATH 中
  • 計劃任務不執行:查看任務歷史記錄 → 檢查「上次運行結果」代碼(0x0 成功,其他為失敗)
  • 還原報錯「Unknown database」:目標庫不存在,先 CREATE DATABASE 或在 mysqldump 時加 --databases 參數

總結

「批處理 + 計劃任務」是 Windows 環境下成本最低、可控性最強的 MySQL 自動備份方案。核心在於:腳本參數化、密碼安全化、備份驗證常態化、保留策略自動化。建議每季度演練一次全量還原,確保備份真正可用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved