首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

Windows 下 MySQL 定時備份腳本實戰:按月存儲、自動建目錄、任務計劃一鍵配置

     編輯:MySQL 綜合教學

Windows 下 MySQL 定時備份腳本實戰:按月存儲、自動建目錄、任務計劃一鍵配置

生產環境數據備份是最後防線。本文提供一個開箱即用的 Windows Batch 腳本,實現每日零點自動備份、按月分目錄存儲、目錄不存在自動創建,並詳細講解如何通過「任務計劃程序」實現無人值守執行。

備份腳本完整代碼(mysql_daily_backup.bat)

@echo off
rem ===== 配置區 =====
set MYSQL_BIN="C:\Program Files\MySQL\MySQL Server 5.7\bin"
set DB_USER=root
set DB_PASS=ameroidrts
set DB_NAME=ameroid
set BACKUP_ROOT=D:\ARTS Backup
rem ===================

cd /d %MYSQL_BIN%

rem 獲取日期變量(適配英文系統格式:Fri 01/20/2017)
for /f "tokens=2-4 delims=/ " %%a in ('date /t') do (
    set Y=%%c
    set m=%%a
    set d=%%b
)

rem 中文系統格式(2017/01/20 周五)請改用:
rem for /f "tokens=1-3 delims=/ " %%a in ('date /t') do (set Y=%%a & set m=%%b & set d=%%c)

set MONTH_DIR=%BACKUP_ROOT%\BK%Y%%m%
set FILE_NAME=%DB_NAME%_%Y%%m%%d%.sql

rem 自動創建月度目錄
if not exist "%MONTH_DIR%" mkdir "%MONTH_DIR%"

rem 執行備份
mysqldump --opt -u %DB_USER% --password=%DB_PASS% %DB_NAME% > "%MONTH_DIR%\%FILE_NAME%"

rem 簡單日誌
echo [%date% %time%] Backup completed: %MONTH_DIR%\%FILE_NAME% >> %BACKUP_ROOT%\backup.log

@echo on

關鍵點解析

  1. 日期解析兼容性:date /t 輸出格式受系統區域設置影響。英文制通常 Fri 01/20/2017,中文制 2017/01/20 周五。腳本中提供兩種 for /f 解析模板,請根據 echo %date% 實際輸出調整 delims 和 tokens。
  2. 路徑含空格處理:備份根目錄 D:\ARTS Backup 含空格,所有引用處均用雙引號包裹。
  3. mysqldump 參數:--opt 等同於 --add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset,適合大多數備份場景。
  4. 安全性提示:腳本明文存放密碼,生產環境建議:
    • 使用 --defaults-extra-file 指向只讀的 .my.cnf([client] password=xxx)。
    • 或配置 Windows 凭據管理器,腳本中調用 cmdkey 讀取。

任務計劃程序配置步驟

  1. 打開「任務計劃程序」 → 右側「創建基本任務」。
  2. 名稱:MySQL每日備份,描述自填 → 下一步。
  3. 觸發器:選「每天」,時間設為 00:00:00 → 下一步。
  4. 操作:選「啟動程序」,程序填 cmd.exe,參數填 /c "D:\Scripts\mysql_daily_backup.bat"(腳本實際路徑) → 下一步。
  5. 完成向導,右鍵任務 →「屬性」→「常規」勾選「不管用戶是否登錄都要運行」+「使用最高權限運行」。
  6. 測試:右鍵「運行」,檢查目標目錄是否生成 .sql 文件及 backup.log。

進階擴展建議

  • 壓縮加密:備份後調用 7z a -pPassword -mhe=on archive.7z file.sql 加密壓縮。
  • 異地同步:配合 rclone 或 robocopy 推送至 NAS/對象存儲(S3/OSS/COS)。
  • 保留策略:每周執行 forfiles /p "D:\ARTS Backup" /m *.sql /d -30 /c "cmd /c del @path" 清理 30 天前備份。
  • 校驗完整性:備份後 mysql -u root -p test_db < backup.sql 導入測試庫驗證。

將備份自動化、標準化、可驗證,才是真正的數據安全。

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