網(wǎng)站設計同事們應該都有碰到過,用PHP+MYSQL環(huán)境開發(fā)的網(wǎng)站,數(shù)據(jù)庫日常的維護工作并非易事。大家常用的 MySQL 數(shù)據(jù)庫備份及恢復工具是phpMyAdmin,這是一個開源、免費的工具,我們可以從網(wǎng)上下載,大多數(shù)主機商都會免費提供 。相信很多站長也用過, 用phpMyAdmin 來進行網(wǎng)站數(shù)據(jù)庫的備份和恢復確實很方便,多國語言界面,讓我們可以很輕松地進行各項操作。不過,隨著你的站運行的時候加長,MYSQL數(shù)據(jù)庫體積也隨著增加,當你的數(shù)據(jù)庫體積到達一定的大小時,例如 SQL 備份文件大于 2MB、大于 10MB、甚至更大時,這個時候如果你通過 phpMyAdmin 來進行數(shù)據(jù)庫的恢復,就會出錯,顯示如下圖的錯誤提示信息,很多人說可以通過改php.ini文件來提高phpMyAdmin容量限制,不過南昌建站小蟲多次試驗,8M以上的MYSQL數(shù)據(jù)庫備份文件在修改PHP.ini文件后也很難恢復成功,時常會因為速度過慢而導致瀏覽器報超時錯誤,本地導入時情況也一樣。
這是因為你的 SQL 文件體積太大,超過了 phpMyAdmin 的處理能力。很顯然 phpMyAdmin 只適用于恢復比較小的 MYSQL 文件備份。如果我們要對超大 MySQL 數(shù)據(jù)庫備份進行恢復,該如果是好呢?下面南昌站長小蟲為您推薦一個專業(yè)的恢復工具---BigDump!
BigDump 數(shù)據(jù)庫導入工具簡介
BigDump 是由德國人 Alexey Ozerov 用 PHP 語言開發(fā)的一個工具腳本,它只有一個文件,名為 bigdump.php(當然你也可以改名運行)。這個文件是獨立運行的,因此與你的網(wǎng)站核心程序無關,不管是 WordPress,Drupal 還是 Joomla,只要你使用的是 MySQL 數(shù)據(jù)庫,都可以用 BigDump 來恢復超大的 .sql 格式備份文件。
BigDump 工作的原理也很簡單:切割分段導入。它在讀取 SQL 文件時,每次只讀取一小部分,將其導入,然后重新開始一次恢復進程,再讀取一小部分…… 周而復始,直到將整個 SQL 文件全部導入。
BigDump 數(shù)據(jù)庫恢復工具用法演示
假設我們已經(jīng)有了一個 MySQL 數(shù)據(jù)庫的備份文件,名為 dbname.sql,文件大小約 150MB(這么大的文件別指望通過 phpMyAdmin 來恢復了)。數(shù)據(jù)庫字符編碼為 utf-8。我們演示一下如何通過 bigdump.php 工具將這個備份文件恢復到在線數(shù)據(jù)庫中去。
1、獲取 BigDump 文件并設置
我們下載BigDump工具并解壓,得到一個 bigdump.php 文件。毫無疑問,bigdump.php 文件需要設置一些參數(shù),否則它怎么知道要導入的數(shù)據(jù)庫的連接帳號?
用文本編輯器打開 bigdump.php 文件,在大約第 38 行開始,我們設置要導入的 MySQL 數(shù)據(jù)庫連接參數(shù)。如下圖所示:
一般來說,設置好這幾項就可以了。對于某些特殊數(shù)據(jù)庫,還需要在下面第66行左右設置數(shù)據(jù)庫字符編碼。bigdump.php 文件中沒有預設這個參數(shù),原文是:
$db_connection_charset = '';
如果你的數(shù)據(jù)庫是 UTF-8 編碼,那么此處就要修改為:
$db_connection_charset = 'utf8';
如下圖所示:
接下來將設置好的 bigdump.php 文件上傳到我們要恢復備份網(wǎng)站空間上,傳到wwwroot文件夾下即可,別的文件夾也行,只要你自己記得,當然等下傳MYSQL備份文件時也要傳到同一目錄下。
2、上傳 MySQL 數(shù)據(jù)庫備份文件
現(xiàn)在需要將數(shù)據(jù)庫備份文件上傳到 bigdump.php 所在的wwwroot目錄中。
3、啟動 BigDump 工具
在瀏覽器地址欄輸入 bigdump.php 所在 URL 并回車,運行這個文件。
例如:
http://www.***.cn/bigdump.php
本次演示是在本地測試服務器上進行,那么對應的運行網(wǎng)址是:
http://localhost/website/jxbh/bigdump.php
如果你輸入的 URL 正確,就應該看到如下畫面:
這就表示 BigDump 工具已經(jīng)成功啟動,它在啟動時就自動掃描所在目錄中的全部文件和子目錄。如果找到 SQL 格式或者 gzip/zip 格式文件,就假設這是數(shù)據(jù)庫文件,在這些文件后面,就會顯示出相應的操作鏈接。例如在上圖中,它探測到所在目錄中有一個 dbname.sql 文件,那么針對該文件就在表格右側同一行中顯示了兩條操作鏈接,分別是“Start Import”(開始導入)和“Delete file”(刪除文件)。上圖的表格中也顯示了 SQL 文件的大小。
在上圖中,還可以看到一個文件上傳功能,點擊那個“瀏覽”按鈕,你就可以上傳一個 SQL 文件(或其壓縮包)來進行導入。但是我們不推薦使用此功能。對于大型文件,F(xiàn)TP 上傳是最佳選擇。
4、運行 BigDump 導入功能
點擊上圖中的“Start Import”鏈接,就看到如下畫面:
上面這個截圖是導入開始一段時間之后所截取的,可以看出 BigDump 正在順利進行 SQL 文件的導入。表格中不僅顯示了文件大小,還顯示了已經(jīng)導入的字節(jié)數(shù)及總體進度。
經(jīng)過一段時間后(大約20分鐘),這個 150MB 大小的 SQL 文件終于導入結束,看到如下畫面:
原來顯示進度條的地方,現(xiàn)在顯示了一條消息:
Congratulations: End of file reached, assuming OK
意思是說:已經(jīng)到達文件末尾,想必應該成功了??吹竭@條消息,你就可以完全放心了。BigDump 已經(jīng)成功地將你的 SQL 備份文件導入到你所指定的 MySQL 數(shù)據(jù)庫里面了。
注意:數(shù)據(jù)庫恢復成功結束后,不要忘記刪除 bigdump.php 備份工具和你的 SQL 文件!
使用 BigDump 數(shù)據(jù)庫導入工具的注意事項
1、在開始導入之前,目標數(shù)據(jù)庫必須清空
如果目標數(shù)據(jù)庫里面含有記錄,那么 BigDump 就無法導入,會報錯停止。因此請在開始運行 bigdump.php 文件之前,將目標數(shù)據(jù)庫清空(最好刪除全部內(nèi)容)。
2、所用的 SQL 文件不能含有 Extended Inserts
或許很多第一次使用 BigDump 的用戶都會遭遇這個問題。這是因為 phpMyAdmin 在導出數(shù)據(jù)庫時,已經(jīng)默認勾選了“使用擴展插入”。
這里的“擴展插入”就是 Extended Inserts,而 BigDump 是不能處理帶有 Extended Inserts 的 SQL 文件的。所以,在你制作數(shù)據(jù)庫備份時,必須在 phpMyAdmin 的面板上去掉“擴展插入”的勾選。如下圖所示:
3、如何使 Akeeba Backup 與 BigDump 配合工作?
我們前面推薦大家使用 Akeeba Backup 來制作備份文件。那么,可否使用 Akeeba Backup 來制作數(shù)據(jù)庫備份,然后通過 BigDump 導入?當然是可以的。不過,這里面需要一些特殊技巧。我們將在 Akeeba Backup 使用詳解 這篇教程中介紹。
4、使用 BigDump 導入仍然發(fā)生超時錯誤
這種問題多見于配置比較低的服務器,或者服務器繁忙時段。那么,你可以嘗試修改 bigdump.php 文件中的“Other settings (optional)” 這部分的 $linespersession 參數(shù),將默認值 3000 修改得更小一些。(不過,我認為你還是換一個更好的服務器吧,例如 Hawkhost)。
5、發(fā)生 MySQL 服務器超載怎么辦?
如果服務器性能較差,在運行 bigdump.php 過程中可能會發(fā)生 MySQL 服務器超載(overrun)故障。你可以修改 bigdump.php 文件中的 $delaypersession 參數(shù)來解決。該參數(shù)讓 bigdump.php 文件在結束一個片段的導入之后,休息一段時間(你設定的數(shù)值就是暫停的時間,單位:毫秒),然后再開始下一個片段的導入,這樣服務器就不會太累了。
本文部分資料收集于網(wǎng)絡。文字由南昌網(wǎng)站建設公司小蟲統(tǒng)一整理編輯。經(jīng)過長期使用此工具,確定為導入超大MySQL數(shù)據(jù)庫備份文件行之有效的方法。
附件:BigDump 工具下載