首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

虛擬主機 MySQL 備份還原通用指南:mysqldump、物理檔案複製、還原實操

     編輯:MySQL 資料庫相關知識

虛擬主機環境限制

  • 通常無 SSH/Root 權限,僅提供 PHPMyAdmin、控制面板備份按鈕、或允許 PHP 執行 exec()(少數)。
  • 資料庫多為共享實例,mysqldump 需透過 PHP 腳本或面板操作。

方法一:mysqldump 邏輯備份(最通用、可攜)

控制面板/命令列(若有 SSH)

mysqldump -h mysql.example.com -u db_user -p db_name --single-transaction --quick > backup_$(date +%F).sql

PHP 腳本執行(無 SSH 通用)

<?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 限定、極快但風險高)

前提:表引擎為 MyISAM(.frm 結構、.MYD 資料、.MYI 索引)。

  1. 鎖定表:FLUSH TABLES tbl WITH READ LOCK;
  2. 2. 複製三個檔案至備份目錄(需檔案系統存取權,虛擬主機通常不可行)。 3. 解鎖:UNLOCK TABLES;

缺點:跨架構/版本不可攜、InnoDB 不適用、需停寫入、虛擬主機無檔案系統存取。

還原操作

mysqldump SQL 檔還原

# 進入 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

PHPMyAdmin 介面還原

  1. 登入 PHPMyAdmin → 選擇目標資料庫 → 匯入 分頁。
  2. 2. 選擇 .sql 或 .sql.gz 檔案 → 執行。 3. 大檔案可能受限 upload_max_filesize、max_execution_time,需分卷或請主機商協助。

自動化備份建議(虛擬主機可行方案)

  • 控制面板排程備份功能(如 cPanel Backup Wizard、Plesk 定時備份)。
  • 外部排程服務(cron-job.org、EasyCron)呼叫備份 PHP 腳本 URL。
  • 備份檔自動同步至雲端儲存(Google Drive、Dropbox、S3)透過 API 或掛載。

驗證清單

  1. 備份檔大小合理(非 0 KB)。
  2. 2. 檔案內含 CREATE TABLE、INSERT 語句。 3. 定期在測試環境執行還原演練。 4. 記錄備份時間、檔案位置、校驗和。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved