MySQL4.0xから5.0xへのデータ移行

まだ十分には検証していませんが、なんとか移行実験に成功しました。やっと一山越えました。
多くの方がいろいろトライしているとのことなので、ご参考までに。

◆データ移行上の課題
UTF-8を使用するOpenPNE(現行の2.8.0)のDBサーバーをMySQL4.0xからMySQL5.0xへ移行したいが、MySQL4.0xのmysqldumpでは正しくUTF-8のデータをバックアップできないので、工夫が必要。
※Vine Linuxの3.2→4.1の場合
apache1.3.33→apache2.2.3
php4.4.4→php5.2.3
MySQL4.0.25→MySQL5.0.27

◆手順1
新たに用意したMySQL5.0xのDBサーバーのmy.cnfファイルの[client]、[mysqld]、[mysqldump]、[mysql]のすべてのセクションでUTF-8指定を記述する。

default-character-set=utf8

◆手順2
運用中のMySQL4.0xのDBサーバーに対し、MySQL5.0xのDBサーバーからmysqldumpコマンドでテーブル情報なしでデータのみバックアップを行う。

mysqldump --host=[HOST NAME] --user=[USER NAME] --password=[USER PASSWORD] --no-create-info --opt [DB NAME] > openpne.sql

◆手順3
MySQL5.0xのDBサーバー上で、OpenPNEで使う新しいデータベースを作成し、

mysql -u root -p
CREATE DATABASE `[DB NAME]` DEFAULT CHARACTER SET utf8;
exit;

次にOpenPNEのテーブル作成をし、先ほどのバックアップデータを流し込む。

mysql -u root -p [DB NAME] < install-2.8-create_tables.sql
mysql -u root -p [DB NAME] < openpne.sql

◆手順4
Webサーバー上のMySQLクライアントのバージョンを5.0xにそろえ、OpenPNEのconfig.phpの記述に関わらず、さらにphp5のphp.iniで内部エンコーディングをUTF-8指定する(こうしないとうまく日本語がDBに入らなかった)。

mbstring.internal_encoding = UTF-8
Filed under: OpenPNE — けたお 22:37:24  Comments (0)