WordPressのデータベースをアップグレードしたらデータがごっそり消えた話

汚いデスクの上で作業する会社員

久々にWordPressネタです。

MySQLを5.5にしたら

一昨日の夜、新しいサイトを作ろうとしたら「MySQL5.5移行ツールを使用してください」というお達しがXserverからでていました。
正直なんでソレをするのかがわからなかったのですが、新しくしてくれるならいいだろうと思ってアプグレ。そして一夜明けて昨日、悲劇が訪れました。

データベース接続確立エラー

あーやってしまいました。
Wordpressはデータベース(MySQL)にアクセスして文章を逐一おこすのですが、そのデータベースと接続できないと言われました。

さて、色々ググるとどうやらパスワード等がおかしい可能性が浮上。
しかしphpMyAdminには入れるのでこれは問題ない。

よく調べるとmysqlアップデートした時にサーバー名に「a」が付いているらしいとの話。
はい、ビンゴ。XserverのMySQL移行ツールにも「configのホストネームを変えろ」と書かれています。

というわけで、wp-configのhost名を変更。

define('DB_NAME', 'データベース名');

/** MySQL データベースのユーザー名 */
define('DB_USER', 'ユーザー名');

/** MySQL データベースのパスワード */
define('DB_PASSWORD', 'パスワード');

/** MySQL のホスト名 */<
define('DB_HOST', 'サーバー名');

自分の場合だと43行目にありました。

そしてちょっと待つと無事ブログが表示されました。
データベースもアップグレードして、よかったよk…

おや?

最新の記事がない?!

半年分のデータの霊圧が…消えた?

データベースが壊れた

ここからが本題です。

先程まではデータベースにアクセス出来ないという単純な話。
なんとデータベースが今年の1月分まででしか残っておらず、以降は全てどこかに消えていました。
当然、この間のポケモンGoの記事もなくなっています。

まじか

データベースが消えているのでXMLでエクスポートしても意味がありません。これは困った。

しかし、画像等のデータはサーバー側にあるのでそちらは無事。
また、データベースのバックアップデータも一昨日までの分があります。やっていてよかったバックアップ。

つまり、これらを基にして復元作業をすればいいのです。問題は本当にこれでいいのかということ。

仮のデータベースを作ってアップロードしてみる

既存のデータベースに上書きしてもいいのですが、そもそも壊れたものに別のものをいれてちゃんと動く保証がありませんし、上書きするものが正しいかを確認しないといけません。

とりあえず、Xserverにて復元テスト用のデータベースを1個つくり、そこにバックアップと思しきデータを入れてみました。

phpMyAdminにて空っぽのデータベースにアクセスし、インポートから先ほどバックアップしたデータを入れてみます。いけそうです。

注目すべきはwp_postsというテーブル。
大本のテーブルではここの最新版が1月になっていましたが、バックアップデータでは7月の記事の最新記事が載っています。
その他のデータも問題なさそうです。全てがバックアップされていることを確認しました。

というわけで、バックアップデータが使えることがわかりました。
ではこれを元のデータベースに上書き……はしません。どうせならちゃんと引っ越ししましょう。

SQLデータの引っ越し

Xserver内での引っ越しなのでそれほど大変ではない、というかどこも同じだと思います。
必要なのはサーバー上にあるブログのデータ(テーマや画像)とデータベースのバックアップで、これらを残らず引っ越せば良いだけです。

このデータベース自体はどこにあっても問題ありません。WordPressのwp-config.phpで新しいデータベースにアクセスできるようにすれば良いのです。

Xserverの手順では

  1. 「インフォパネル」>「サーバーパネル」>「MySQL設定」
  2. 「MySQL追加」 > データベースを新規に作る。(名前はわかりやすいもの。文字コードはUTF-8)
  3. 「MySQL一覧」 > 先ほど作ったデータベースの「アクセス権未所有ユーザ」に自分を追加
  4. 「phpmyadmin」を立ち上げて先ほどのデータベースにバックアップしていたSQLデータをインポート
  5. 「wp-config.php」のデータベース名(ユーザー等も変更したのならそれも)を書き換えてアップロード

復帰画面

完了です。バッチリ最新記事が出てきました。
とはいっても、正常に動いているかを確認しておく必要があります。画像データが壊れていたりしないか、年月日がおかしくないか。自分の場合、ログインパスワードがおかしかったので変更しました。

予めデータベースのバックアップを確認しておけば、この作業は10分もかかりません。バックアップが一番大事ですね。

WordPressのバックアップについて

WordPressのバックアップには、ファイル(画像やテーマ)かデータベース(記事)の2種類が大事らしいです。

今回はデータベースが壊れたのでデータベースのみの復旧で済みましたが、テーマやプラグインの不具合で表示できない場合もあるためどちらもバックアップしておく必要がありそうです。

BackWPUpで確実にWordPressのバックアップを取る方法

今回は

  • phpMyAdmin
  • wp-config.php
  • MySQLの作成

これらについて勉強になったなと思います。