Linux で自宅サーバ [ Home Server Techncial ]

>>トップページに戻る

 MovableTypeでPostgreSQLからMySQLに移行する方法

MovableType で PostgreSQL から MySQL に移行する方法をご紹介します。
探してみると専用ツールを配布されているサイトもありますが、自分の環境では上手く行かなかったのでこのページの方法で移行しました。

(多分)それほど MovableType のバージョンに依存しないと思うので、大抵の環境で使えると思います。
また同じような手順で MySQL から PostgreSQL に移行も可能だと思いますので、必要な方は挑戦してみてはいかがでしょうか。


当サイト内関連記事
  ・MySQL の導入  MySQL の導入&初期設定方法を解説しています。コレがないと始まらない。


ページ内コンテンツ一覧

▲ページの最上部に戻る

 MySQL に DB を作成

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 の設定変更

・ブログの記事やコメントをエクスポートする

念の為、現時点でブログの記事やコメント、トラックバックを保存しておきます。
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 データベースのバックアップ

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されていきます。
これで移行完了。

▲ページの最上部に戻る

Copyright© Home Server Technical. All Right Reserved.
webmaster@miloweb.net