MySQL4→5に移行(チカッパ)(2)wp-postsの分割インポート

さて、おそらく普通なら前述の方法ですんなりいくはずの移行ですが、よめいりの場合、すでにDBファイルがかなり大きくなってしまっていたため、もうひと手間かける必要がありました。今後、同じ場面に出くわす方もいるかと思い(また自分へのメモも兼ねて)、ここに残しておきます。

チカッパでは、phpMyAdminでインポートできるファイルの最大サイズは5120KBです。インポートすべきファイルがこれより大きかった場合、どうすればいいのか。

<大きすぎるWPファイルの分割インポート方法>

  • パターンA:
    それぞれのテーブルのデータサイズが5120KBより小さかった場合(5120KBを越えるテーブルがなかった場合)。

    この場合、エクスポート時、いくつかにファイルを区切ってやります。

    1. 古いDBへphpMyAdminでアクセス。
    2. データベースタブを選択。DBを選択。(テーブル一覧が表示されるはず。)
    3. ここでエクスポートタブを選択すると、エクスポートするテーブルを選択することができます。必要に応じて(各ファイルが5120KBを越えないように)区切ってやってください。(通常であれば、wp-postsが一番大きなファイルになるかと思うので、1度目はwp-postsのみでエクスポート、2度目はwp-posts以外のすべてを選択してエクスポート、という2分割でいいのではないかと思います)。「DROP TABLE」追加、「IF NOT EXISTS」追加、ファイルに保存、へのチェックも忘れずに。
    4. 分割エクスポートしたファイルすべてを、新しいDBにインポートしてやればokです。
  • パターンB:
    テーブルのデータサイズが1つでも5120KBを越えてしまっている場合。

    この場合、5120KBを越えてしまっているテーブルについては、テーブル内のデータも分割してやらねばなりません。インポートの方法もちょっとこれまでと違います。

    まず、5120KBを越えていないテーブルについては、パターンAと同じ方法でエクスポート+インポートしてやります。5120KBを越えてしまった問題のテーブル(おそらくはwp-posts)についてのエクスポート+インポートのみ、以下のような手順で進めます。

    1. 古いDBへphpMyAdminでアクセス。
    2. データベースタブを選択。DBを選択。テーブル一覧から、該当テーブル(例えばwp-posts)を選択。(左のフレームから選択しても同じ)。
    3. エクスポートタブを選択。「DROP TABLE」追加、「IF NOT EXISTS」追加、ファイルに保存、にチェックをしてから、
    4. ファイル保存のすぐ上にある、「○○○列をダンプします。開始列は△△△です。」の箇所を修正します。最初の1つ目のエクスポートファイルは、5120KBに収まるように。2つ目からは1000KBに収まるくらいで区切っていきます。

      よめいりの場合、wp-postsは全2915レコードあり、6.8MBあったため、

      •  1500列をダンプ。0からスタート。(1)2.4MB
      •  400列をダンプ。1500からスタート。(2)828B
      •  400列をダンプ。1900からスタート。(3)1.4MB
      •  400列をダンプ。2300からスタート。(4)1.2MB
      •  400列をダンプ。2700からスタート。(5)564B

      というような感じで区切ってみました。

    5. 新しいDBにphpMyAdminでアクセス。ここで、これまでと同じように順にインポートしていけばいいように思いますが、実は同じテーブルでの複数回のインポートは「上書き」されてしまうため、うまくいきません。つまり、(1)→(2)→(3)→(4)→(5)の順でインポートしても、最後に残っているのは(5)のデータのみなのです。
    6. そこで、まずは1つ目のファイル(1)を通常のインポートで取り込んだ後(1つ目を通常のやり方でインポートすることでテーブルができあがります)、
    7. 2つ目以降((2)から(5))のインポートには、phpMyAdminのSQLタブを利用していきます。データベースを選択した状態で(テーブルを選択するのではなく、データベースを選択)、SQLタブを選択。「データベース xxxxxx で SQL を実行する」というフォームを確認。
    8. 2つ目のファイル(2)をエディタで開いて、ヘッダ(?)が終わった後にくる最初の「INSERT INTO」から末尾の「;)」までをコピー。phpMyAdminのフォームにペースト。実行。これで、今度は、同じテーブル内のデータが「上書き」されずに「追加」されたはず。
    9. 以下、(3)から(5)までも同じ手順を繰り返します。最後にテーブルのレコード数を確認。古いDBのそれと合っていれば、無事完了です。

(2つ目以降の((2)から(5)の)ファイルを一括でエクスポートし、エディタで開いて、適宜、フォームにコピー&ペーストするのもいいと思います。が、大きなファイルなだけにエディタが悲鳴をあげがちなので、ここでは予め分割エクスポートしておきました。)

チカッパのphpMyAdminでは、エクスポート・インポート時に圧縮・解凍する機能がないようですが、サーバによってはそれらの機能を提供している場合もあるようです。その場合、圧縮せずにエクスポート、エディタで開いて手直し(コメントアウトなど必要に応じて)、圧縮してインポート、などの方法で、大きいファイルでも乗り切れる場合があるようです。ご参考までに。

今回もまた、いくつものサイトにお世話になりました。どうもありがとうございました。

<助けていただいた(参考にした)サイト>

ネタフリネット » wordpress2.9のためにMySQL5のやつにしてみた(チカッパの場合)
http://www.netafuri.net/?p=1337

MySQLを4から5へ(さくら+WPの場合) « Waviaei
http://waviaei.com/2009/05/24/mysql-4-5-sakura-wordpress/

HashiMのたわごと(?) : 2009年3月14日(土曜日) – MySQLを4から5へ
http://kita2.net/nisshi/2009/03/140611

WordPress 2.9 アップデートのための MySQL バージョンアップ | site hirac
http://hirac.info/site/archives/wordpress-2-9-update-mysql-version-up/

WordPressサイトのハッスルサーバーからヘテムル (heteml)への移転手順その② | 無料で使える情報探す「おぼえがき」
http://oboegaki.net/website/server/heteml-3.html

主婦にもデキる! WordPress講座 ~ブログで夢を叶えよう~
http://archive.mag2.com/200907122118510000289570000.html
★特にこちらのサイトに非常に助けられました! ありがとうございました!

2 Responses to “MySQL4→5に移行(チカッパ)(2)wp-postsの分割インポート”


  • 初めまして。
    自分もチカッパでwordpressを使っていて、MySQLのバージョンアップをどうしたものかと悩んでおりました。こちらの記事のおかげで無事MySQLのバージョンアップとwordpressのアップデートを成功させることができました。ありがとうございました!

  • >エセ紳士さん

    はじめまして! お役に立てたようでなによりです。
    チカッパ+WP組として、この先も情報を共有していけたらいいですね。
    なにかの折にはまたよろしくお願いします :-)

Leave a Reply