現場(環境):CentOS 6.9 套件:mysqld
原因:
因為弱掃的關係,造成資料庫/資料表異常。
處理方式:
mysql修復資料庫/資料表的方法很簡單,只要一行指令就可以了。
mariadb的修復方式也一樣。
都使用mysqlcheck這個指令就可以了。
先確認要修復的是哪個資料庫,例如這次要修復cacti資料庫。
在修復前先進行檢查。(參數帶 -c)
#mysqlcheck -c cacti -u root -p
結果發現有錯誤,因為httpd還在運作,資料庫仍在被存取中。
先關閉Apache服務
#service httpd stop
再進行一次檢查。可以看到剛剛的錯誤訊息不見了
#mysqlcheck -c cacti -u root -p
因為以上步驟都是對全部的資料表做檢查。
若是想對單一資料表做檢查呢?
#mysqlcheck -c [資料庫] [資料表名稱] -u root -p
像這邊是要對cacti資料庫內的rra資料表做檢查。
#mysqlcheck -c cacti rra -u root -p
-c 的作用是在檢查而已,
若真的要進行修復,參數帶-r 。
以下方法是修復資料庫內所有資料表。
#mysqlcheck -r cacti -u root -p
如果要修復單一張資料表,作法跟檢查的時候一樣。
最後談到資料庫的最佳化。
最佳化的參數帶上 -o。
最佳化的用意在於處理一些零碎空間以及刪除資料後遺留下來的空間。
為此要做最佳化。
用法都跟檢查&修復一樣。
#mysqlcheck -o cacti -u root -p
當然也可以修復&最佳化一起始用。
#mysqlcheck -or cacti -u root -p
一樣的指令用法,可以用其他方式執行。
#mysqlcheck -oc cacti --auto-repair -u root -p
在這邊分享。
<本篇完>