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

MySQL 快速備份與 Windows 排程自動化:BAT 腳本、mysqldump 參數全解析

     編輯:MySQL 資料庫相關知識

Windows 環境下 MySQL 自動備份最輕量方案:mysqldump + .bat + 任務排程器。本文提供生產可用腳本模板,並系統整理 mysqldump 常用參數與還原指令速查表。

生產級備份 BAT 腳本

@echo off
REM ========== 配置區 ==========
SET MYSQL_BIN="C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqldump.exe"
SET DB_USER=root
SET DB_PASS=your_strong_password
SET DB_NAME=my_database
SET BACKUP_ROOT=D:\MySQL_Backup
SET CHARSET=utf8mb4
REM ==============================

SET YMD=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%
SET HMS=%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%
SET HMS=%HMS: =0%
SET BACKUP_DIR=%BACKUP_ROOT%\%YMD%
SET BACKUP_FILE=%BACKUP_DIR%\%DB_NAME%_%YMD%_%HMS%.sql

mkdir "%BACKUP_DIR%" 2>nul

echo [%DATE% %TIME%] 開始備份 %DB_NAME% ...
%MYSQL_BIN% --opt --single-transaction --routines --triggers --events \
  --default-character-set=%CHARSET% -u%DB_USER% -p%DB_PASS% %DB_NAME% > "%BACKUP_FILE%"

IF %ERRORLEVEL% NEQ 0 (
  echo [%DATE% %TIME%] 備份失敗,錯誤碼 %ERRORLEVEL%
  exit /b 1
)

REM 可選:壓縮備份檔(需 7-Zip 安裝)
REM "C:\Program Files\7-Zip\7z.exe" a -tzip "%BACKUP_FILE%.zip" "%BACKUP_FILE%" && del "%BACKUP_FILE%"

echo [%DATE% %TIME%] 備份完成:%BACKUP_FILE%
echo 檔案大小: 
dir /-c "%BACKUP_FILE%" | findstr /v "Volume Directory"

關鍵參數解析

參數作用建議
--opt啟用快速導出組合(含 --add-drop-table、--lock-tables 等)預設開啟,保留
--single-transactionInnoDB 熱備份,不鎖表,保證一致性InnoDB 必加
--routines --triggers --events備份存儲過程、觸發器、事件生產環境必加
--default-character-set指定連線字符集,防止中文亂碼設為 utf8mb4
--master-data=2輸出 CHANGE MASTER TO 註解,支援從庫搭建主庫備份加上
--compress客戶端-伺服器傳輸壓縮遠端備份啟用

任務排程器設定步驟

  1. 控制台 → 系統與安全 → 管理工具 → 工作排程器。
  2. 右側「建立基本工作」→ 名稱:MySQL_Daily_Backup → 每日 → 時間:凌晨 03:00(低峰)。
  3. 動作:啟動程式 → 程式:cmd.exe → 引數:/c "D:\Scripts\backup_mysql.bat"。
  4. 完成後右鍵任務 → 內容 → 條件/設定:勾選「如果工作失敗,每 10 分鐘重試 3 次」。
  5. 以最高權限執行(避免寫入備份目錄權限不足)。

mysqldump 進階用法速查表

需求指令
備份單表mysqldump -u root -p db tbl > tbl.sql
備份多表mysqldump -u root -p db tbl1 tbl2 > multi.sql
帶 DROP TABLE(可覆蓋還原)mysqldump --add-drop-table -u root -p db > backup.sql
直接壓縮輸出mysqldump -u root -p db | gzip > backup.sql.gz
僅備份結構(無資料)mysqldump --no-data -u root -p db > struct.sql
備份多個資料庫mysqldump --databases db1 db2 db3 > multi_db.sql
備份所有資料庫mysqldump --all-databases > all.sql

還原指令速查

場景指令
標準還原mysql -u root -p db < backup.sql
還原壓縮檔gunzip < backup.sql.gz | mysql -u root -p db
跨伺服器直接遷移mysqldump -u root -p db | mysql -h new_host -u root -p db

進階備份策略建議

  • 分層保留: 每日全備保留 7 天、每週全備保留 4 週、每月全備保留 12 月。
  • 異地複製: 腳本結尾加入 rclone copy 或 aws s3 cp 推送至雲端儲存。
  • 驗證機制: 定期自動還原至測試庫,跑 CHECKSUM TABLE 對比來源。
  • 監控告警: 備份腳本回傳非 0 碼時發送郵件/企業微信/Slack 通知。

一個 50 行的 BAT 腳本 + 任務排程器,即可構建企業級 MySQL 自動備份體系。關鍵在於:**單一事務熱備份、字符集顯式指定、壓縮異地、定期驗證**。

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