Database JUNKY

MySQL,MariaDBを中心としたブログです

むりやり:wordpressのpostsテーブルを統合する

表記の件、かなり無理やりですが、試してみたら案外うまくいったので、作業の証跡を残すことにしました。

ケースとしては、今回のように、nakayama.ddo.jp サイトがクラッシュした場合で、いっそのこと別で管理しているWordpressサイトにデータを移行しちゃおうと(笑 あと、移行先のデータも統合して、1 + 1 = 2にしたいなんて場合など、まあ結局のところバックアップしておけばいいだけの話なのですが。

今回のシチュエーションとしては、こんな感じです

  • データベース:wordpressのwp_panda_posts テーブルを
  • データベース:wp2のwp_posts テーブルにデータを統合する

ようなケースです。以下に順を追って説明します。

  1. wordpress データベースから wp_panda_posts をバックアップする(特定のテーブルのみdump) # mysqldump wordpress -u root -pyourpass wp_panda_posts > /share/wordpress_posts_data.sq
  2. 上記のバックアップsqlをwp2に移行する mysql wp2-u root -pyourpassword < /share/wordpress_posts_data.sq ※この際に、wp2上のテーブルとかぶらないように注意してください。
  3. 上記の作業完了後、wp2データベースに接続し、以下のSQLを実行する # mysql wp2 -u root -pyourpassword mysql> INSERT INTO wp_posts ( post_author, post_date, post_date_gmt, post_content, post_title, post_excerpt, post_status, comment_status, ping_status, post_password, post_name, to_ping, pinged, post_modified, post_modified_gmt, post_content_filtered, post_parent, guid, menu_order, post_type, post_mime_type, comment_count ) SELECT posts.post_author, posts.post_date, posts.post_date_gmt, posts.post_content, posts.post_title, posts.post_excerpt, posts.post_status, posts.comment_status, posts.ping_status, posts.post_password, posts.post_name, posts.to_ping, posts.pinged, posts.post_modified, posts.post_modified_gmt, posts.post_content_filtered, posts.post_parent, posts.guid, posts.menu_order, posts.post_type, posts.post_mime_type, posts.comment_count FROM wp_panda_posts posts;

てな感じで移行と統合が完了です。実際には、カテゴリとか色々と移行したほうがよいとはおもうのですが、それはあとで手作業で見直すみたいな気合いをもってやっていただければ、形にはなるかと思いますので。

次回は、サイトをまたがるデータベースの同期手法について、説明したいと思います。あ、そうですね。 www.s-quad.com と nakayama.ddo.jpでwpの同期をとる方法を例に説明いきます。こうご期待。