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

PHP 輕量級 MySQL 備份還原工具 MyDB:分卷備份、Web 介面、無需 Shell 權限

     編輯:MySQL 資料庫相關知識

工具簡介

MyDB 僅三個 PHP 檔案(mydb.php、backup.php、restore.php),適合虛擬主機、無 SSH 權限環境,支援分卷備份、Web 操作介面、自動遞歸還原分卷。

檔案結構與核心功能

檔案角色關鍵功能
mydb.php資料庫存取類連線、查詢、游標、鎖表、錯誤報告
backup.php備份主程式全庫/單表、分卷(大小限制)、存本地或伺服器、下載
restore.php還原主程式上傳/選擇檔案、分卷自動遞歸還原、Session 追蹤進度

部署步驟

  1. 建立可寫目錄 backup/(權限 777 或 PHP 進程可寫)。
  2. 2. 修改 backup.php、restore.php 頂部資料庫設定:
    $mysqlhost="localhost"; $mysqluser="root"; $mysqlpwd="pass"; $mysqldb="db_name"; 3. 瀏覽 backup.php 進行備份,restore.php 進行還原。

備份功能詳解

  • 全庫備份:遍歷 SHOW TABLE STATUS,對每表產生 DROP TABLE IF EXISTS + CREATE TABLE + INSERT。
  • 單表備份:下拉選單選擇表名。
  • 分卷備份:指定單檔大小(KB),超過即切分為 _v1.sql、_v2.sql...,避免 PHP memory_limit / 上傳限制。
  • 存放目標:伺服器 backup/ 目錄、或直接瀏覽器下載。

還原功能詳解

  • 伺服器檔案還原:下拉選單選擇 backup/ 內檔案。
  • 本地上傳還原:支援 multipart/form-data 上傳 .sql。
  • 分卷自動遞歸:還原 _v1.sql 後,偵測 _v2.sql 存在 → 3 秒倒數 → 自動導入下一卷,直到結束。
  • Session 追蹤:中斷重整可續傳。

核心程式碼片段(備份單表)

function make_header($table) {
    global $d;
    $sql = "DROP TABLE IF EXISTS `$table`;\n";
    $d->query("SHOW CREATE TABLE `$table`");
    $d->nextrecord();
    $sql .= preg_replace("/\n/", "", $d->f("Create Table")) . ";\n";
    return $sql;
}

function make_record($table, $num_fields) {
    global $d;
    $sql = "INSERT INTO `$table` VALUES(";
    $comma = "";
    for ($i=0; $i<$num_fields; $i++) {
        $sql .= $comma . "'" . mysql_escape_string($d->record[$i]) . "'";
        $comma = ",";
    }
    $sql .= ");\n";
    return $sql;
}

注意事項與最佳實務

  • 大資料庫:調大 max_execution_time、memory_limit、post_max_size、upload_max_filesize。
  • 分卷大小:建議 1-2 MB,避免單檔過大導致匯入超時。
  • 安全性:用畢立即刪除三個檔案,或以 .htaccess 限制存取 IP、加密密碼。
  • 編碼一致:資料庫、連線、PHP 檔案編碼均為 UTF-8,避免亂碼。
  • 不支援:View、Trigger、Event、Stored Procedure 的備份還原(需自行擴充)。

適用場景對照

場景推薦工具
虛擬主機、無 Shell、資料庫 < 500MBMyDB (本工具)
VPS/雲主機、有 Shell、大庫mysqldump + XtraBackup
需 PITR、高可用binlog + 定期全備 + 從庫
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved