exec()(少數)。mysqldump 需透過 PHP 腳本或面板操作。mysqldump -h mysql.example.com -u db_user -p db_name --single-transaction --quick > backup_$(date +%F).sql
<?php
$db_host = 'mysql.example.com';
$db_user = 'user';
$db_pass = 'pass';
$db_name = 'db_name';
$backup_file = __DIR__ . '/backup/db_' . date('Ymd_His') . '.sql';
$cmd = "mysqldump -h $db_host -u $db_user -p$db_pass $db_name --single-transaction --quick > $backup_file";
exec($cmd, $output, $return_var);
if ($return_var === 0) {
echo "備份成功:$backup_file";
} else {
echo "備份失敗,錯誤碼:$return_var";
}
?>
注意:需確認主機商允許 exec()、mysqldump 路徑在 PATH 中、密碼特殊字元需跳脫。
--opt:預設開啟,含 --add-drop-table --extended-insert --lock-tables --quick 等。--add-drop-table:還原前刪除舊表。--where="id > 1000":條件備份。--no-data:僅結構。前提:表引擎為 MyISAM(.frm 結構、.MYD 資料、.MYI 索引)。
FLUSH TABLES tbl WITH READ LOCK;UNLOCK TABLES;
缺點:跨架構/版本不可攜、InnoDB 不適用、需停寫入、虛擬主機無檔案系統存取。
# 進入 MySQL 互動模式
mysql -h mysql.example.com -u db_user -p db_name
# 執行
SOURCE /path/backup_20240115.sql;
或非互動:
mysql -h mysql.example.com -u db_user -p db_name < backup_20240115.sql
.sql 或 .sql.gz 檔案 → 執行。
3. 大檔案可能受限 upload_max_filesize、max_execution_time,需分卷或請主機商協助。
CREATE TABLE、INSERT 語句。
3. 定期在測試環境執行還原演練。
4. 記錄備份時間、檔案位置、校驗和。