Flamingoデータの削除

これは私が備忘録として投稿しています。ご参考になれば幸いですが、内容に関しては責任を負えません。実行に関しては全て自己責任でお願いします。

ContactForm7でスパム対策が行われてなかったため、確認メールを使用したスパムに利用されました。そのためFlamingoに数百万件の大量のメッセージデータが残ってしまい削除する必要があった。

必要な問合せデータが混ざっているかもしれないが、数百万件のスパムデータから見つけることは困難なので全て削除して空にする。

対策1:プラグインで削除

WP Bulk Deleteプラグインの無償版を使用して削除を行った。

安全にデータの作業は行えるが、実行時間が約100件/分程度かかり件数を1,000件に絞って実行してもタイムアウトになる事があった。

念の為、タイムアウト時間はphp.iniに「max_execution_time = 600;」で60秒に変更した。

対策2:SQLで削除

レンタルサーバのphpMyAdminが使って直接SQLから削除を行う。

Flamingoでは、アドレス帳と受信メッセージでそれぞれ独自のPost_typeを使っているため、wp_postsとwp_postmetaテーブルからそれぞれのデータを削除することが可能。

アドレス帳のpost_typeは「flamingo_contact」と受信メッセージのpost_typeは「flamingo_inbound」

wp_postsとwp_postmetaは親子関係にあるため、必ずwp_postmetaを削除してからwp_postsを削除する事

prefixは「wp_」とします。

1.アドレス帳の削除

wp_postmetaの件数確認

SELECT count(*) FROM wp_postmeta
WHERE post_id in
(SELECT ID FROM wp_posts WHERE post_type = “flamingo_contact” ORDER BY ID DESC);

wp_postmetaの削除

DELETE FROM wp_postmeta
WHERE post_id in
(SELECT ID FROM wp_posts WHERE post_type = “flamingo_contact” ORDER BY ID DESC) LIMIT 10;

最初は、LIMIT 10から様子をみた方がいいかな・・・

wp_postsの件数確認

SELECT count(*) FROM wp_posts WHERE post_type = “flamingo_contact”;

wp_postsの削除

DELETE FROM wp_posts WHERE post_type = “flamingo_contact” LIMIT 10;

2.受信メッセージの削除

上記SQLのpost_typeを”flamingo_contact”から”flamingo_inbound”へ変更する。

結果

All in ONE WP Migrationでのデータサイズが、803.09MB から147.61MB になった。

以上

あとがき

今回データの改ざんが行われている様子はなかったのですが、reCAPTUREなどのセキュリティ対策、最新版のアップデート、定期的なバックアップの必要性をつくづく感じました。


投稿日

カテゴリー:

投稿者:

タグ: