生產環境數據備份是最後防線。本文提供一個開箱即用的 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
date /t 輸出格式受系統區域設置影響。英文制通常 Fri 01/20/2017,中文制 2017/01/20 周五。腳本中提供兩種 for /f 解析模板,請根據 echo %date% 實際輸出調整 delims 和 tokens。D:\ARTS Backup 含空格,所有引用處均用雙引號包裹。--opt 等同於 --add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset,適合大多數備份場景。--defaults-extra-file 指向只讀的 .my.cnf([client] password=xxx)。cmdkey 讀取。MySQL每日備份,描述自填 → 下一步。00:00:00 → 下一步。cmd.exe,參數填 /c "D:\Scripts\mysql_daily_backup.bat"(腳本實際路徑) → 下一步。.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 導入測試庫驗證。將備份自動化、標準化、可驗證,才是真正的數據安全。