1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
修復過程紀錄

[問題1.] 我最近常常發現自己的資料庫備份與匯入匯出時發生time out與mysql報錯說容量過大,實際檔案大小超過100MB,而且使用UpdraftPlus Backup也會警告wp_statpress 容量過大的問題,但此套件早在我主機升級PHP7時,因為WordPress警告不相容而移除他了

[問題2.] 另外第二個問題則是常常回報資料庫連線錯誤,從VPS開啟mysql的錯誤紀錄時會出現類似字句

[ERROR] /usr/sbin/mysqld: Table '[資料庫]/[表格名稱]' is marked as crashed and should be repaired

同時,偶而也會有"連接資料庫發生錯誤"的錯誤畫面

[討論解決方案]
然後這問題我花了半年不敢解出來,原本是打算捨棄原本的資料庫重新架WordPress,再透過WordPress後台的XML功能匯入文章、套件設定重填,因為statpress套件已被我移除了,所以新的WordPress站台的資料庫就會漏掉已移除套件的資料庫了

但經過前幾天WordPress的meetup討論,加上重架網站很麻煩,所以我最後決定直接動資料庫的方式解決他

[解決過程]
我先ssh進遠端主機,先mysqldump指令將資料庫導出來並透過SFTP移動到自己的電腦(備份需求),並且在自己的電腦上安裝XAMPP

XAMPP 本身有 phpmyadmin,我先利用他確定資料表結構如何,同時確定wp_statpress 產出的資料的確比其他表格兇

因此我回到遠端主機上,使用mysql指令 DROP TABLE 把 wp_statpress 資料庫刪除掉 (已確認此套件移除才動手),此時雖然網站後台進得去,而且進去的速度快很多,但偶而會有"連接資料庫發生錯誤"的情況發生

Google之後找到這以下這一篇文章:
http://www.wpbeginner.com/…/how-to-fix-the-error-establish…/

檢查了WP-Config之後,我把資訊重填並傳上伺服器上,重啟Apache與Mysql,果然沒有再次發現"連接資料庫發生錯"錯誤發生,但是mysql的errorlog還是有跳錯誤

錯誤跟問題二差不多,然後我又把錯誤訊息丟到Google,得到的解答是從資料庫中下達REPAIR TABLE,把錯誤的資料庫一個一個修正好,但因為我透過select * from 指令查詢許多資料表都能正確顯示資料,因此看起來不像完全故障

後來我找到了這一篇文章:
https://wordpress.org/…/wp_options-table-is-marked-as-cras…/

底下還有一篇文章:
https://wptavern.com/how-to-repair-a-crashed-wordpress-post…

這裡頭有提到WordPress官方參數也能修補資料表,文章如下:
https://codex.wordpress.org/Editing_wp-config.php…

官方稱之為Automatic Database Optimizing,可以優化最佳化資料表而不依賴外部套件,只需於wp-config.php 增加以下這段指令即可完成設定

define( 'WP_ALLOW_REPAIR', true );

我修改好之後又上傳到網站主機上,再把apache與mysql都重開,結果mysql的errorlog終於沒有[ERROR]資料表的選項了,只剩下[Warning]max_open_files與[Note]了

目前明顯感受到網站後台變順了,而且點選後台不會再出現異常而網站錯誤的問題了,SQL的尺寸也從108MB縮短成4MB~5MB之間,問題應該是解決了,把過程分享出來讓大家參考