天天看點

用 BigDump 工具導入超大 MySQL 資料庫備份檔案

用 BigDump 工具導入超大 MySQL 資料庫備份檔案

 建立于 2010-07-01, 周四 00:00
 作者 白建鵬

《Joomla! 1.5 網站防黑9條戒律》

這篇文章中,我們提到的第一條就是:及時、定期備份你的 Joomla! 網站。我們也多次推薦使用

Akeeba Backup

 (原名 JoomlaPack)這個備份工具。Akeeba Backup 自帶的 kickstart.php 工具也能完成備份包的恢複(或者遷移安裝)。不過,這是針對整站的恢複。假如我們隻是要恢複一下資料庫呢?

常用的 MySQL 資料庫恢複工具(也能進行備份操作)是 phpMyAdmin,這是一個開源、免費的工具,大多數主機商(例如 

Hawkhost

)都會免費提供 。相信很多站長也用過 phpMyAdmin 來進行網站資料庫的備份和恢複,确實很友善,并且有多國語言界面。不過,有一種情況可能你還沒碰到,就是當你的資料庫體積比較大時,例如 SQL 備份檔案大于 2MB,甚至大于 10MB,這個時候如果你通過 phpMyAdmin 來進行資料庫的恢複,就會出錯,顯示如下的提示:

用 BigDump 工具導入超大 MySQL 資料庫備份檔案

這是因為你的 SQL 檔案體積太大,超過了 phpMyAdmin 的處理能力,這種情況在網絡速度比較慢的情況下尤為突出,例如站長在周末晚上8點這個網絡擁擠的時段嘗試使用 phpMyAdmin 來恢複大型 MySQL 資料庫備份,就容易遇到這種問題。

很顯然 phpMyAdmin 隻适用于恢複比較小的 SQL 檔案備份。對于超大 MySQL 資料庫備份的恢複,你必須換一個專用的恢複工具,那就是:BigDump!

BigDump 資料庫導入工具簡介

BigDump 是由德國人 Alexey Ozerov 用 PHP 語言開發的一個工具腳本,它隻有一個檔案,名為 bigdump.php(你可以改名運作)。這個檔案是獨立運作的,是以與你的網站核心程式無關,不管是 WordPress,Drupal 還是 Joomla,隻要你使用的是 MySQL 資料庫,都可以用 BigDump 來恢複超大的 .sql 格式備份檔案。

BigDump 工作的原理也很簡單:切割分段導入。它在讀取 SQL 檔案時,每次隻讀取一小部分,将其導入,然後重新開始一次恢複程序,再讀取一小部分…… 周而複始,直到将整個 SQL 檔案全部導入。

BigDump 資料庫恢複工具用法示範

假設我們已經有了一個 MySQL 資料庫的備份檔案,名為 gate2.sql,檔案大小約 150MB(這麼大的檔案别指望通過 phpMyAdmin 來恢複了)。資料庫字元編碼為 utf-8。我們示範一下如何通過 bigdump.php 工具将這個備份檔案恢複到線上資料庫中去。

1、擷取 BigDump 檔案并設定

我們

下載下傳 BidDump 工具

并解壓,得到一個 bigdump.php 檔案。毫無疑問,bigdump.php 檔案需要設定一些參數,否則它怎麼知道要導入的資料庫的連接配接帳号?

用文本編輯器打開 bigdump.php 檔案,在大約第 38 行開始,我們設定要導入的 MySQL 資料庫連接配接參數。如下圖所示:

用 BigDump 工具導入超大 MySQL 資料庫備份檔案

一般來說,設定好這幾項就可以了。對于某些特殊資料庫,還需要在下面第66行左右設定資料庫字元編碼。bigdump.php 檔案中沒有預設這個參數,原文是:

$db_connection_charset = '';

如果你的資料庫是 UTF-8 編碼,那麼此處就要修改為:

$db_connection_charset = 'utf8';

注意那個連字元要去掉。如下圖所示:

用 BigDump 工具導入超大 MySQL 資料庫備份檔案

接下來将設定好的 bigdump.php 檔案上傳到 Joomla 網站上,推薦上傳到 /tmp 這個臨時目錄。

2、上傳 MySQL 資料庫備份檔案

現在需要将資料庫備份檔案上傳到 bigdump.php 所在的 /tmp 目錄中。考慮到檔案較大,我們通過 FTP 軟體 

FileZilla

 上傳 zip 格式的檔案,然後借助 Joomla 背景安裝的 

eXtplorer 資料總管元件

 将其遠端解壓,在 /tmp 目錄中得到 gate2.sql 檔案。

3、啟動 BigDump 工具

在浏覽器位址欄輸入 bigdump.php 所在 URL 并回車,運作這個檔案。例如本次示範是在本地測試伺服器上進行,那麼對應的運作網址是:

http://localhost/gate/tmp/bigdump.php

如果你輸入的 URL 正确,就應該看到如下畫面:

用 BigDump 工具導入超大 MySQL 資料庫備份檔案

這就表示 BigDump 工具已經成功啟動,它在啟動時就自動掃描所在目錄中的全部檔案和子目錄。如果找到 SQL 格式或者 gzip/zip 格式檔案,就假設這是資料庫檔案,在這些檔案後面,就會顯示出相應的操作連結。例如在上圖中,它探測到所在目錄中有一個 gate2.sql 檔案,那麼針對該檔案就在表格右側同一行中顯示了兩條操作連結,分别是“Start Import”(開始導入)和“Delete file”(删除檔案)。上圖的表格中也顯示了 SQL 檔案的大小,可以看到這個備份檔案接近 150MB。

在上圖中,還可以看到一個檔案上傳功能,點選那個“浏覽”按鈕,你就可以上傳一個 SQL 檔案(或其壓縮包)來進行導入。但是我們不推薦使用此功能。對于大型檔案,FTP 上傳是最佳選擇。

4、運作 BigDump 導入功能

點選上圖中的“Start Import”連結,就看到如下畫面:

用 BigDump 工具導入超大 MySQL 資料庫備份檔案

上面這個截圖是導入開始一段時間之後所截取的,可以看出 BigDump 正在順利進行 SQL 檔案的導入。表格中不僅顯示了檔案大小,還顯示了已經導入的位元組數及總體進度。

經過一段時間後(大約20分鐘),這個 150MB 大小的 SQL 檔案終于導入結束,看到如下畫面:

用 BigDump 工具導入超大 MySQL 資料庫備份檔案

原來顯示進度條的地方,現在顯示了一條消息:

Congratulations: End of file reached, assuming OK

意思是說:已經到達檔案末尾,想必應該成功了。看到這條消息,你就可以完全放心了。BigDump 已經成功地将你的 SQL 備份檔案導入到你所指定的 MySQL 資料庫裡面了。

注意:資料庫恢複成功結束後,不要忘記删除 bigdump.php 備份工具和你的 SQL 檔案!

使用 BigDump 資料庫導入工具的注意事項

1、在開始導入之前,目标資料庫必須清空

如果目标資料庫裡面含有記錄,那麼 BigDump 就無法導入,會報錯停止。是以請在開始運作 bigdump.php 檔案之前,将目标資料庫清空(最好删除全部内容)。

2、所用的 SQL 檔案不能含有 Extended Inserts

或許很多第一次使用 BigDump 的使用者都會遭遇這個問題。這是因為 phpMyAdmin 在導出資料庫時,已經預設勾選了“使用擴充插入”。

這裡的“擴充插入”就是 Extended Inserts,而 BigDump 是不能處理帶有 Extended Inserts 的 SQL 檔案的。是以,在你制作資料庫備份時,必須在 phpMyAdmin 的面闆上去掉“擴充插入”的勾選。如下圖所示:

用 BigDump 工具導入超大 MySQL 資料庫備份檔案

3、如何使 Akeeba Backup 與 BigDump 配合工作?

我們前面推薦大家使用 Akeeba Backup 來制作備份檔案。那麼,可否使用 Akeeba Backup 來制作資料庫備份,然後通過 BigDump 導入?當然是可以的。不過,這裡面需要一些特殊技巧。我們将在 

Akeeba Backup 使用詳解

 這篇教程中介紹。

4、使用 BigDump 導入仍然發生逾時錯誤

這種問題多見于配置比較低的伺服器,或者伺服器繁忙時段。那麼,你可以嘗試修改 bigdump.php 檔案中的“Other settings (optional)” 這部分的 $linespersession 參數,将預設值 3000 修改得更小一些。(不過,我認為你還是換一個更好的伺服器吧,例如 

)。

5、發生 MySQL 伺服器超載怎麼辦?

如果伺服器性能較差,在運作 bigdump.php 過程中可能會發生 MySQL 伺服器超載(overrun)故障。你可以修改 bigdump.php 檔案中的$delaypersession 參數來解決。該參數讓 bigdump.php 檔案在結束一個片段的導入之後,休息一段時間(你設定的數值就是暫停的時間,機關:毫秒),然後再開始下一個片段的導入,這樣伺服器就不會太累了。

6、直接把 .sql 格式檔案交給 BigDump

在本次示範中,我們先将 zip 格式的備份包上傳到伺服器上,然後又将它解壓成 .sql 格式的檔案,再通過 BigDump 來導入。為什麼不直接用 BigDump 來導入壓縮格式的備份檔案?

沒錯,BigDump 具有導入壓縮格式 SQL 備份檔案(zip/gzip)的能力,但是在處理壓縮檔案時,它需要先在臨時目錄中将其解壓,再讀取。請注意:這個解壓并不是一次性的,而是每導入一個小片段,就要将整個壓縮包重新解壓一次。是以,直接導入壓縮格式檔案,反而使 bigdump.php 運作變慢。

7、我還有更奇怪的問題……

一般來說,運作 bigdump.php 導入一個 SQL 備份檔案非常容易。如果你參照上述注意事項及操作過程,仍然不能順利完成資料庫備份檔案的導入,那麼請到 

BigDump 官方網站

 閱讀更多 FAQ,查找原因。如果還無法解決,可以到

 Joomla 中文論壇

 發帖讨論。

用 BigDump 工具導入超大 MySQL 資料庫備份檔案
下載下傳 BigDump(bigdump.php) 大型資料庫 SQL 檔案分段導入工具 v0.32b 英文版
檔案标題: BigDump(bigdump.php) 大型資料庫 SQL 檔案分段導入工具 v0.32b 英文版  (詳情)
檔案類型: zip
版本: 0.32b
檔案大小: 11 Kb
下載下傳次數: 5843