環境與前置準備
- OS:Windows Server 2003
- PHP 安裝目錄:
D:/PHP
- MySQL 安裝目錄:
D:/MySQL
- 在 `D:/PHP` 下建立 `WinRAR` 目錄,放入 `WinRAR.exe` 與 `RARReg.KEY`
核心備份腳本 MySQL_backup.php
<?php
$store_folder = 'D:\\database_backup'; // 需手動建立
$db_username = "root";
$db_password = "";
$time = time();
$nowdir = $store_folder . "\\" . date("Ymd", $time);
if (file_exists("$nowdir.rar")) die("File exists.\n");
@mkdir($nowdir);
mysql_connect("localhost", $db_username, $db_password);
$query = mysql_list_dbs();
while ($result = mysql_fetch_array($query)) {
$db = $result['Database'];
$cmd = dirname(__FILE__) . "\\..\\mysql\\bin\\mysqldump --opt $db -u$db_username " .
($db_password ? "-p$db_password" : "") . " > $nowdir\\$db.sql";
system($cmd);
echo "dumping database `$db`...\n";
}
echo "\nWinrar loading...\n";
system(dirname(__FILE__) . "\\WinRAR\\WinRAR.exe a -ep1 -r -o+ -m5 -df \"$nowdir.rar\" \"$nowdir\" ");
// 刪除 5 天前備份
@unlink($store_folder . "\\" . date("Ymd", $time - 86400*5) . ".rar");
echo "\nOK!\n";
?>
批次檔與任務排程
- 建立 `MySQL_backup.bat`:
php.exe MySQL_backup.php
- 雙擊測試,成功後加入「任務排程器」,設定每日晨間 8 點執行(避開 5-7 點資料庫維護窗口)。
關鍵參數說明
- `mysqldump --opt`:啟用快速導出優化組合
- `WinRAR a -ep1 -r -o+ -m5 -df`:遞歸壓縮、最高壓縮比、壓縮後刪除源檔
- 備份目錄採用日期命名,便於時間序管理