MovableTypeでPostgreSQLからMySQLに移行する方法
MovableType で PostgreSQL から MySQL に移行する方法をご紹介します。
探してみると専用ツールを配布されているサイトもありますが、自分の環境では上手く行かなかったのでこのページの方法で移行しました。
(多分)それほど MovableType のバージョンに依存しないと思うので、大抵の環境で使えると思います。
また同じような手順で MySQL から PostgreSQL に移行も可能だと思いますので、必要な方は挑戦してみてはいかがでしょうか。
当サイト内関連記事
・MySQL の導入 MySQL の導入&初期設定方法を解説しています。コレがないと始まらない。
ページ内コンテンツ一覧
MySQL に MovableType(以下、MT)用のデータベースを作成します。
以下、作成例です。
# mysql -u root -p ← rootで入る Enter password: ← パスワードを入力 Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 4 to server version: 4.1.20 Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql>create database mtdb; ← 「mtdb」データベースを作成 Query OK, 1 row affected (0.00 sec) 「mtdb」データベースに対して全権限を持つユーザ「mtuser」を作成します。 mysql> grant all privileges on mtdb.* to mtuser@localhost identified by 'mtpass'; ← ユーザを作成 書式:grant all privileges on DB名.* to ユーザ名@localhost identified by 'パスワード';
・ブログの記事やコメントをエクスポートする
念の為、現時点でブログの記事やコメント、トラックバックを保存しておきます。
MovableTypeにログイン>システムメニュー>エクスポートでエクスポート画面を開き、
ブログを選択後ブログをエクスポートします。
・ブログ設定ファイルの編集
# vi $MTHOME/mt-config.cgi
($MTHOMEはMTのインストールディレクトリ)
POSTGRESQLの項目を全部コメントにし、
MYSQL欄を上の項目で定めたユーザ名とかに設定する。
##### MYSQL #####
ObjectDriver DBI::mysql
Database mtdb ← データベース名
DBUser mtuser ← ユーザ名
DBPassword mtpass ← パスワード
DBHost localhost
この状態でmt.cgiにアクセスする。
MTのユーザ名とかパスワードとかブログ名などを入力する。
こうすることによってMySQLにテーブルが作成され、初期データが格納される。
PostgreSQL のデータのバックアップは SQLがはき出されます。
MySQL に投げる為に必要な SQL を抽出することが目的です。
PostgreSQLのデータを -a, -Dオプション付きでダンプする。
例ではPostgreSQL のMT用DB名を「pgmtdb」としています。
$ pg_dump -a -D pgmtdb > mt.dump
冒頭のSET文、SELECT文を全て削除する。
$ sed -e 's/^\(SET\|SELECT\) .*//' -i mt.dump
初期データを削除する。
$ grep -e '^INSERT INTO' mt.dump | sed 's/INSERT INTO \([^ ]*\).*/\1/' | sort | uniq
上記コマンドを実行するとテーブル名の一覧が表示されるので、それらをメモします。
いよいよキモになる作業です。
mtuserでMySQLにログイン
先ほどメモったテーブル一覧リストのテーブルに対してテーブルの中身をDELETEします。
mysql> DELETE FROM テーブル名
(※ メモったやつ全部に対してやること。)
PostgreSQL のバックアップデータを MySQLに読み込ませます。
mysql> source mt.dump
上記コマンドで大量のクエリが実行されます。
コマンド実行後、MTにアクセス。
特に問題がなければPostgreSQLからMySQLへの移行は完了です。
もし問題がある場合、テーブル一覧リストのテーブルに対して中身をDELETEします。 (先ほどした作業と同じ)
mysql> DELETE FROM テーブル名
次にMovableTypeにログインし、
ホームメニュー>システムメニュー>インポートでインポート画面を開き、
このページの一番最初に行ったエクスポートで保存したテキストファイルを指定し
インポートします。
そうするとブログ記事やコメント、トラックバックなどがMySQLに対してINSERTされていきます。
これで移行完了。