またまたしてもアクセスカウンタテーブル破損

またしてもDrupal用データベースのアクセスカウンタテーブルが破損した模様
VMの割当メモリを増やすために再起動したらエラーが出るようになりました。再起動前は随分重かったので影響が出始めていたんだと思います。

トップページにはシステムエラーがずらずらっと出ている状態ですがコンテンツは閲覧できるみたい。

エラーメッセージではnode_counter.MYIファイルがオカシイと出力されていますので、おそらく障害発生元テーブルはnode_counter(記事毎のアクセスカウンタ)でしょう。mysqlのコンソールでselect count(*) from node_counterを実行したところ...

やはりエラー、同じようにファイルが開けないとメッセージが出力されて結果が得られません。

mysqlは本格的データベースなので必ず障害対応方法があるはず(例えばSQLServerのDBCCコマンドのようなものがあるはず)、まずはそのコマンドでどんな障害が起きているのか、回復は可能なのか調査します。
mysqlのリファレンスやネット上の情報から check tabkeというコマンドがあることがわかりました。
check tableのオプションは以下の通り
QUICK
 不正リンクをチェックするためのレコードスキャンを実行しない。
FAST
 正しく閉じられなかったテーブルだけをチェックする。
CHANGED
 前回のチェック後に変更されたテーブルと、正しく閉じられなかったテーブルだけをチェックする。
MEDIUM
 レコードをスキャンして、削除されたリンクが問題なかったことを確認する。また、レコードのキーチェックサムを計算し、キーの計算されたチェックサムを使って確認する。
EXTENDED
 各レコードですべてのキーの完全キールックアップを実行する。テーブルの整合性が 100% 保証されるが、時間がかかる。

check table node_counter quickコマンドで調べたところチェックサムエラー?がレポートされました。

次にcheck table node_counter extendedコマンドで詳細調査します。データベースが巨大であれば「詳細調査に時間がかかる」のは困り者ですがアクセスカウンタですから一瞬で終了しました。まぁ結果はエラーです。
データの4520行目のインデックスが発見できない?というエラーでしょうか。プライマリインデックスエラー?
どうせこの時点でデータベースは破損しているし、アクセスカウンタなのでバックアップの必要は無し、バックアップせずにリペアを試みます。もし大切なコンテンツなら必ずバックアップを取得してからリペアを行ってください(データが消えるかもしれません)。

repair table node_counterコマンドでリペアしたところエラー無事解消
drupalもエラー出力しなくなりました。どうやらアクセスカウントも戻った模様(多少消えたかもしれませんが)