針對 Windows 平台,利用 ASP 腳本動態生成 .bat 批次檔,結合 mysqldump 與 WinRAR 實現多庫備份、壓縮、日期歸檔,再配合 Windows 任務計劃器定時執行。
' 配置區
root = "root"
pwd = "123456"
mysql_bin_path = "D:\MySQL\bin"
mysql_path = "D:\MySQL"
mysq_back_temp_path = "D:\MySQLbackuptemp"
mysq_back_path = "D:\MySQLbackup"
winrar_path = "D:\WinRAR"
' 遍歷 MySQL data 目錄下的資料庫資料夾
Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set w1 = fso.GetFolder(mysql_path)
For Each bak In w1.SubFolders
If FolderPermission(bak.Path) Then
' 生成 mysqldump 命令
back_content = back_content & "mysqldump -u" & root & " -p" & pwd & " " & bak.Name & " > " & mysq_back_temp_path & "\" & bak.Name & ".sql" & vbCrLf
' 生成 WinRAR 壓縮命令(帶日期、刪除源文件)
rar_content = rar_content & "rar a -agYYYY-MM-DD -ep1 -df -ibck " & mysq_back_path & "\" & bak.Name & ".rar " & mysq_back_temp_path & "\" & bak.Name & ".sql" & vbCrLf
End If
Next
' 寫入 backup_MySQL.bat
Call CreateFile("/backup_MySQL.bat", back_content & vbCrLf & rar_content)
FolderPermission 函數排除特定目錄(如 guolv)。-agYYYY-MM-DD 自動在檔名加日期;-ep1 排除基礎路徑;-df 壓縮後刪除源文件;-ibck 後台運行。backup_MySQL.bat。backup_MySQL.bat。若建立專用備份帳號,僅需授予:
GRANT SELECT, LOCK TABLES ON *.* TO 'backup_user'@'localhost' IDENTIFIED BY 'password';
停寫鎖表 → 複製 data 目錄 → 解鎖。優點:極快、極簡;缺點:難以實現增量備份、需停寫影響業務。
鎖表命令:FLUSH TABLES WITH READ LOCK;