WordPress の移し替えは何とか無事に終わりました。結局の所、テーブルの移し替えだけなので、見た目も内容も URL も何の変化もありません。逆に何か変化があったら教えてください(^^;。

今回移し替えを思いついたのは、遅くなった WordPress の検証用に同じ内容のブログを作ろうとしたことでした。まず、この「同じ内容のブログ」を作るのに苦労しました。

WordPress には標準でインポートとエクスポートの機能がついています。ですので、これを使えば簡単に移し替えが出来ると思っていました。

とりあえずは、現行のエクスポートを行います。これは無事に終了。出力された xml は 5MB ありました。

続いてインポート。色々な形式のブログからインポートできますが、今回は当然 WordPress を選びます。するとこんなことを言われました。

自分のコンピュータからファイルを選択する: (最大サイズ: 2MB)

……え? エクスポートしたのは 5MB あるんですけど? どうするんですか? 2MB ぽっちしかインポートできないんじゃこんな機能意味無いじゃん、とか思いましたが、このままではどうしようもないので、今度は投稿者毎にエクスポートしてみました。「投稿者って全部 masatsu やないんかい?」と思われるかもしれませんが、Movable Type から移行した “masatsu” と WordPress の “masatsu” は表面上は同じでも中身が違うのです。ひょっとしたらどっちかが 2MB になるかと思い、分割エクスポートをやってみましたが、どちらも 2MB を超えていました orz。こうなったら手動で分割するしかないのですが、それもちょっと不気味です。

そこでさらに調べてみると 2MB までしかアップロードできないのは WordPress の仕様ではなく、PHP の仕様だということが分かりました。幸いさくらインターネットの PHP は php.ini を編集できるので、

  upload_max_filesize = 8M

を加えて、8MB までアップロードできるようにしました。

これでやっとインポートできるぞ、と思ったのも束の間、インポートが途中で止まります orz。引っかかってるところだけ切り取ってインポートしてみても別のところで止まります。どうも写真を使ってるエントリが駄目なようです。写真を使ってるエントリでもインポートできてるのもありますが、引っかかるエントリは写真を使ったものばかりです。試しに、投稿者毎にエクスポートしたファイルのうち、WordPress になってから投稿した分をインポートしてみたところ、これは全てインポートできました。Movable Type から移行したエントリのうち、写真を使ったものの一部、が引っかかるようです。こんなのの原因特定なんてやってられないので、検証用ブログの作成を断念しようか思いましたが、もう一つの方法を試してみることにしました。

それは、phpMyAdmin で WordPress で使ってる MySQL のテーブルを全部エクスポートしてインポートする、という方法でした。

この方法はエントリとかコメントとかカテゴリとかバラバラにインポートするので整合性がちゃんと保たれるのかが不安でしたが、何回か試して上手くインポートできることが分かりました。ただ一つ wp_options だけはインポートするとおかしくなります。ここには WordPress の基本設定だけでなく、テーマやプラグインの設定も持ってるので、インストールしたテーマやプラグインの順番まで完璧に同じにしないとインポートできないようです。とりあえずエントリ数さえ合わせれば動作テストは出来るので、これで検証用ブログの作成は何とかできました。

検証の結果、新規インストールした検証用ブログでは投稿作成時の異常が見られませんでした。さらに、テーブルとか見てると、アップグレードしたものと新規インストールしたものでは微妙に違う部分があることに気付きました(大勢には影響無さそうな些細な差ですが)。何せ私のは ME 1.5 くらいからアップグレードしてきているので、ここらで一回新規にクリーンインストールしてみるのも良いかな、と思い始めました。

しかし、更なる検証の結果異常の原因が Popularity Contest だと分かってクリーンインストールを躊躇しました。というのは wp_options が上手く移行できないとうことは設定がやり直しになるからです。それなら Popularity Contest の使用を止めるだけの方がリスクが少ないかな、と思いました。ただ、どうしても引き継ぎたい設定は Category Order の設定だけ(並び替えるのが非常に面倒くさいんですよ)なので、 Category Order の設定だけをエクスポートして新規インストールした後の wp_options にマージするやり方で設定を引き継ぎました。
ということで、新規インストール決定。全てのテーブルをエクスポートした後、既存のテーブルを全て削除。その後、wp-config.php を編集してテーブルの接頭語を変更。既に既存のテーブルは削除しているので “wp_” のままでも問題ないのですが、この辺は気分の問題。後は wp-admin/install.php にアクセスしてインストール開始。この一週間で何回やったことか(汗)。インストール終了後にテーブルを一つずつインポートし、各種設定を戻していきました。最後に Category Order の設定をマージして終了。これで元通りになっているはずです。

あと、Popularity Contest が 2.5 には完全対応していないだけあって、新規インストール時には Popularity Contest 用のテーブルが作られないという不具合も出ているようです。この辺りを参考に phpMyAdmin で Popularity Contest用のテーブルを作成。しかしこのままだと、ポイント設定の変更が反映されないようなので、wp_ak_popularity_options は旧ブログのものをインポート。その後は変更が反映されるようになりました。

Popularity Contest はテーブルに全てのエントリの人気度ポイントを記録しているようです。ですので、エントリ数が増えていくとパフォーマンスが落ちていく可能性があります。今回 Popularity Contest が遅くなった原因は分かりませんが、また遅くなってきたら今度は利用を見合わせてみようと思います。

まあ、随分面倒な手順を踏みましたが、私にとっては色々勉強になりましたし、良い経験だったと思います。2.3.3 からアップグレードしたときは本家のだったダッシュボードのフィードも新規インストールしたら日本のになってましたからね。ただ、最下段のフィードはフォーラムから、トラックバックピープルの WordPress に変更しました。この辺は適宜変えていこうと思います。