環境
- OS:Windows Server 2003
- MySQL:4.0.26(安裝於
D:/MySQL)
- PHP:5.x(安裝於
D:/PHP)
- WinRAR:複製
WinRAR.exe 與 RARReg.key 至 D:/PHP/WinRAR
備份 PHP 腳本(D:/PHP/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 ($row = mysql_fetch_array($query)) {
$db = $row['Database'];
$cmd = dirname(__FILE__) . '\\..\\mysql\\bin\\mysqldump --opt '
. escapeshellarg($db) . ' -u' . $db_username
. ($db_password ? ' -p' . $db_password : '')
. ' > ' . escapeshellarg($nowdir . '\\' . $db . '.sql');
system($cmd);
echo "dumping database `$db`...\n";
}
echo "\nWinrar loading...\n";
$rar = dirname(__FILE__) . '\\WinRAR\\WinRAR.exe a -ep1 -r -o+ -m5 -df '
. escapeshellarg($nowdir . '.rar') . ' ' . escapeshellarg($nowdir);
system($rar);
// 刪除 5 天前備份
@unlink($store_folder . '\\' . date('Ymd', $time - 86400*5) . '.rar');
echo "\nOK!\n";
?>
批次啟動檔(D:/PHP/MySQL_backup.bat)
php.exe MySQL_backup.php
部署步驟
- 雙擊
.bat 測試運行,確認生成 YYYYMMDD.rar。
- 控制面板 → 任務計劃 → 新增任務:
程式:D:\PHP\MySQL_backup.bat
排程:每日 08:00(流量低峰,避開 05:00-07:00 系統清理時段)。
關鍵參數說明
mysqldump --opt:含 --add-drop-table --create-options --quick --extended-insert --lock-tables 等優化組合。
WinRAR -m5:最大壓縮比;-df 壓縮後刪除源檔;-o+ 覆蓋同名壓縮包。
- 備份保留 5 天,自動輪替。