何を隠そうこのサイト(taracohouse.com)でのお話です。
当サイトはWordPressで運営しており、BackWPupというプラグインで定期的なバックアップをとっています。バックアップは深夜自動的にFTP経由で他のサーバへと送られる全自動なので、エラーメールが届かないうちはずっと安心して放置していました。
本日、久々に「たまには自サイトのメンテでもするかあー」とデータベースの最適化を試みてビックリ。
ええっ!「データベースの合計サイズ:830.71MB」ってなんやねん!?
容量が1GBオーバーのバックアップデータはお客様の環境でしばしば見かけますが、通常はメディア(写真や動画など)で容量を消費しているパターンです。データベースだけで800MB越えとか初めて見ました。
まして現時点でページ数50ページにも満たないサイトなのにおかしい・・・明らかにおかしい。。
不自然に肥大したwp_postとwp_postmeta
バックアップデータをテスト環境に入れ、各テーブルを確認してみると不自然に容量が大きいテーブルが2つ。
wp_postがレコード数117,803件で273MB。
wp_postmetaがレコード数2,117,117件で414MB。
wp_postは投稿のデータだけど、wp_postmetaってなんだっけ・・・?
調べてみると「各投稿記事特有の情報を格納」だそう。
データの中身を覗いてもさほぞ重要そうなデータには思えなかったので、試しにエイヤッ!と削除してみる。すると各投稿ページのサムネイルが抜けてしまったり、グローバルメニューが欠落したりと、やはり不具合が。(そりゃそうだ)
プラグインを使った最適化やクリーンアップでは改善せず
有名どころの「WP-Optimize」や「WP-DBManager」など、データベースの最適化や不要なレコードのクリーンアップを実行するプラグインを試してみるも効果は微妙。若干は容量が少なくなるものの、たいした改善は見られませんでした。
やはりsshなりphpMyAdminなりを使い、SQLコマンドで不要なレコードの削除を実行しないと改善は見込めないようです。
どうやらFlamingoとAkismetの残骸らしい
wp_postの中を調べてみると、プラグインの「Flamingo」のキーらしきものを多数発見。同様にwp_postmetaの中はプラグイン「Akismet」のキーがいっぱい。
ネット検索では、このような記事が見つかりました。
要はFlamingoとAkismetとが干渉して、クリーンアップの機能が働いていなかったみたいです。
SQLコマンドを使ってクリーンアップしてみた
【注意】以下のコマンドを実行される場合、この2点に(絶対に!)ご注意下さい。
1.必ずデータベースのバックアップを取り、復旧できる環境でお試し下さい。
2.責任は一切持てません、実行は自己責任でお願いします。
※下記コマンドの接頭辞(wp_)の部分はご利用のWordPressに合わせて変更して下さい。
Flamingo関連のレコードを削除
DELETE FROM wp_posts WHERE post_status LIKE ‘flamingo_spam’
たぶん上記だけでOKのはずですが、一度すっきりとリセットもしたかったので↓も実行。
DELETE FROM wp_posts WHERE post_type LIKE ‘flamingo_inbound’
DELETE FROM wp_posts WHERE post_type LIKE ‘flamingo_contact’
これでwp_postのレコード数は117,803件から150件に、容量273MBから178KBと大幅に激減しました。
Akismet関連のレコードを削除
DELETE FROM wp_postmeta WHERE meta_key LIKE ‘_spam_meta_time’
DELETE FROM wp_postmeta WHERE meta_key LIKE ‘_submission_status’
DELETE FROM wp_postmeta WHERE meta_key LIKE ‘_subject’
DELETE FROM wp_postmeta WHERE meta_key LIKE ‘_from’
DELETE FROM wp_postmeta WHERE meta_key LIKE ‘_from_name’
DELETE FROM wp_postmeta WHERE meta_key LIKE ‘_from_email’
DELETE FROM wp_postmeta WHERE meta_key LIKE ‘_field_your-name’
DELETE FROM wp_postmeta WHERE meta_key LIKE ‘_field_your-email’
DELETE FROM wp_postmeta WHERE meta_key LIKE ‘_field_your-subject’
DELETE FROM wp_postmeta WHERE meta_key LIKE ‘_field_your-message’
DELETE FROM wp_postmeta WHERE meta_key LIKE ‘_field_submit’
DELETE FROM wp_postmeta WHERE meta_key LIKE ‘_fields’
DELETE FROM wp_postmeta WHERE meta_key LIKE ‘_meta’
DELETE FROM wp_postmeta WHERE meta_key LIKE ‘_akismet’
DELETE FROM wp_postmeta WHERE meta_key LIKE ‘_consent’
(↑SQLに詳しい人だと、これを1行で書いちゃうんだろうなあ。。)
ついでにreCAPTCHA関連のレコードも目についたので削除
DELETE FROM wp_postmeta WHERE meta_key LIKE ‘_spam_log’
DELETE FROM wp_postmeta WHERE meta_key LIKE ‘_field_recaptcha_response_field’
DELETE FROM wp_postmeta WHERE meta_key LIKE ‘_field_recaptcha_challenge_field’
DELETE FROM wp_postmeta WHERE meta_key LIKE ‘_hash’
何のキーだろう?自分の環境ではこれも削除して問題なしでした。
DELETE FROM wp_postmeta WHERE meta_key LIKE ‘_email’
DELETE FROM wp_postmeta WHERE meta_key LIKE ‘_name’
DELETE FROM wp_postmeta WHERE meta_key LIKE ‘_props’
DELETE FROM wp_postmeta WHERE meta_key LIKE ‘_last_contacted’
これでwp_postmetaはレコード数2,117,117件から1,194件に、容量は414MBから175KBと大幅に激減しました。
WordPressでのトラブルにお困りの方、ご相談下さい!
- ログインできなくなった
- サイトが表示されない、表示がおかしい
- サーバの引越しをしたい
- ハッキング(クラッキング)された、など
軽度の事案から重度の被害まで対応できますのでご相談下さい。