一.錯誤修正
檢測 MySQL 內 phpBB 的 DB 後發現,有個 users 的 table 是有問題的, 使用 myisamchk 嘗試去修護,發現還不行用預設方式修護,還要多加個 "-o" 的參數才行,在使用myisamchk 時,為避免還有用戶來存取 DB ,最好是能夠將 MySQL 服務停止,不然最少也要下個 "mysqladmin flush-tables" 後, 再作 myisamchk 指令,像:
myisamchk -o phpbb2_users.MYI
這個動作,可能要作個2~3次,直到沒有錯誤的訊息出現!
修護完,重新啟動 MySQL 服務後,就可以用 mysql 這個 client 的指令, 去 Query 一下 DB 內容,測試看是否正常.很幸運的,DB的部份在此時, 運作是正常的.
當然,在你要備份之前,假如能先檢測資料是否正確,那是最好不過了, 假如有需要,可以把檢測的工作,排定在備份工作之前,但是記得,這個檢測DB 的動作不要排定在 DB 高用量的那段時間,深夜無人上線的時段是個不錯的選擇!
二.開始備份
phpBB 討論區的資料檔,主要有兩個部份,就是 php 主程式和 DB 內容, php 主程式的備份就比較簡單,只要把全部檔案 tar 起來就行了,就像:
tar cvfz phpbb2_20020601.tgz phpbb (上面的 phpbb 是指 phpBB 的 php 網頁程式存放目錄.)
以後有改到 phpBB 網頁程式部份再重新備份一次就行,它的內容資料都寫在DB 內,所以 php 程式檔部份異動性應該不大.
再來就是 MySQL DB 部份了,預設 MySQL 的 DB 檔案是存在 /var/lib/mysql 內, 以 DB 名稱為目錄,目錄內就是該 DB 的所有資料,像 phpbb2 這個 DB, 就是存在 /var/lib/mysql/phpbb2 內,在備份前,因為怕資料尚未完全寫入磁碟, 而且 MySQL 會 Lock 在使用的 DB 檔案,所以應該是要先把 MySQL 先 Shutdown 一下, 整個備份的程序可以下像下面的指令去完成:
/etc/rc.d/init.d/mysqld stop
tar cvfz phpbb2_db_20020601.tgz phpbb2
/etc/rc.d/init.d/mysqld start
(上面的 phpbb2 是指存放 phpbb2 這個 DB 的目錄.)
對!這樣就可以了! 不過要注意的是,怕 DB 內每個 Tables 間的資料有關關聯性, 所以最好是把整個 DB 一次備起來,單獨只備哪個 Tables 的檔案,以後回存時, 怕會有資料關聯不一致的問題!
三.如何回存
phpBB 討論區的回存,只需把檔案解回原來存放網頁的路徑就可以,用以下指令解開:
tar xvfz phpbb2_20020601.tgz
DB 發生錯誤而要回存時,其實也不難,先找出最近一次完整正常的備份,先把現在錯誤的網頁或 DB 先更名或 tar 起來,再把好的備份給解開回原來目錄位置就行了,需要注意的是, MySQL 服務最好也是要先停止,回存完成後再啟動服務,回存 DB 的整個程序可能像下面:
/etc/rc.d/init.d/mysqld.stop
mv phpbb2 phpbb2_error
tar xvfz phpbb2_db_20020601.tgz
/etc/rc.d/init.d/mysqld.start
然後再去測試一下網頁及資料庫! 看使用上是否正常就行了...