どうも、ドジっ子属性持ちの@kuronamaです。
目次
WordPressデータの一部消失
先日、こちらの記事で紹介した通り、現在当BlogはBackWPupというプラグインにて日次でフルバックアップを採取している。
WordPressのフルバックアッププラグイン「BackWPup」を導入 » 黒生鉄心の奇妙な日常 | 黒生鉄心の奇妙な日常
まぁそれはいいのだが、ちょっと思うところがあって、以下の記事を参考にWordPressのユーザーの統廃合を行っていた。
WordPressでユーザー名『Admin』をやめてみる。 - HAAYA
そうしたところちょっとミスって全部で1200件ちょっとある記事のうち、最古の100件ちょっとを消失させてしまった。
本来なら上記の記事にもある通り、このようにユーザー削除時に他のユーザーに投稿をアサインする必要がある。
ところが見覚えの無い無名ユーザーがあったため、消すときに変なものを継承しても困ると思いアサインせずに削除してしまったのだ。
無名ユーザーというのは以下の画像の上のようなヤツ。
で、その無名ユーザーというのがWordPressに移行する前にFC2ブログで書いていたという扱いになっていたのだ。
画像をよく見ると分かるが、右端にユーザーが行った投稿数が表示されている。
そのためアサインせずにユーザーを削除したらFC2ブログ時代に書いていた記事が消えたというわけだ…。
消失したデータについて
リストアするに当たってまず一番重要なのはリストア対象のデータ、つまり今回消失したデータ範囲の把握だろう。
考えられるのは以下。
- 無名ユーザーのアカウント
- 無名ユーザーが投稿した記事
記事についてはMySQL上で管理されているので、恐らくMySQLのテーブルをリストアすれば問題無い。
よく分からないのがユーザーのアカウントだ。だがWordPressの設定に関わるデータなので、ファイルとして保存するよりもMySQLにデータとして保存されている方が自然だろうと予想した。
つまりバックアップデータのうちの、MySQLのデータのみリストアすれば元に戻りそうだと思った。
リストア作業
今回のリストア作業に必要な物は以下。
- バックアップ採取時からリストア直前までの差分ファイル
- MySQLのバックアップファイル
- FTPクライアント
まずはリストア作業に入る前に、バックアップ採取時からの差分ファイルを採っておこう。
今回の場合はかなり古いデータが消えただけなので、ほとんど差分は無いのだがバックアップ採取後に予約投稿を仕込んだ記事が1件あったのでそれを適当にローカルのテキストエディタに保存しておいた。
お次のバックアップファイルだが、SugarSync等に保存されているBackWPupのデータをダウンロードする。
大抵はtarやzipでまとめられているため、これを展開する。
そうするとフルバックアップしていればWordPressのフォルダ構成がそのまま展開されるはずだ。
その中に拡張子が「sql」のファイルがあると思うが、これがMySQLのバックアップファイルだ。
このファイルを使ってリストアするにはこれをサーバー上に設置する必要がある。
設置場所はWordPressが設置されているフォルダなので、要はローカルで表示されている通りの場所に保存すればいい。
たださくらインターネットのファイルマネージャなんかだと容量が大きい場合アップロード出来ないことがある。
そこで使うのがFTPクライアントだ。Mac環境の自分はFileZillaというアプリを使った。
使い方はそう面倒ではないのでちょっと調べれば扱えるだろう。
ここまでくればもう終わったようなものだ。
あとはWordPressのメニューから[BackWPup] - [Tools]と移動すると、先ほどアップロードしたSQLファイルが認識されている。
これでRestoreボタンを押下してしばらく待てば、MySQLのデータが復元される。
ただ自分が最初やったときは、サーバーが混雑していたのかしばらく処理が続いた後に500エラーが出てしまった。
確認してみてもリストアされた気配が無いのでもう一度試したところ、今度は以下の様に正常に終了した。
記事データはもちろん、ユーザーアカウントも元に戻っていたので予想通りだった。
まとめ
とりあえずBackWPupで正常にリストアできることが分かって良かった。
このあと同じ失敗を繰り返さないようにユーザーの統廃合を行って、ユーザー関連に関してはスッキリした構成になった。
あまり頻繁にBackWPupのお世話になりたくは無いが、これで安心して気兼ねなくWordPressやプラグインのアップデートが行えそうだ。