MySQL 5.1系から5.5系への移行をためらっているあなたへ - uehatsu's tech blog

MySQL5.5の便利設定を上野くんが教えてくれた!!とう記事を大和さんが書いてくれたので、それに対しての応援メッセージですw

MySQLのデータベース移行自体はそれほど苦になりません。dumpしてrestoreすれば終わり。

それだけじゃ面白く無いので、もうちょっと掘り下げて見ましょう。

1. もし古いデータベースがLatin1で設定されていたら?

これは結構あります。だってデフォルトでLatin1に設定されるのですからw これはmysqldumpで明示的に指定してdumpしないと文字化けしてしまいます。

mysqldump -uroot -prootdbpass --default-character-set=latin1 mtdb > mysql_dump_latin1.sql
出力された内容がUTF-8で文字化けしないか、ターミナルか実際のSQLファイルをダウンロードして見るなどして確認して下さい。
ターミナルで確認するとき、LANG設定が正しくないと文字化けします。その場合、"$ EXPORT LANG=ja_JP.UTF-8"としてから見て下さい。

2. もし古いデータベースがMyISAMだったら?

これも結構あります。だってデフォルトでMyISAMに設定されるのですからw これは出力されたSQLファイルをsedでガリっと書き換えてしまいましょう。

mv mysql_dump_latin1.sql mysql_dump_latin1_myisam.sql
cat mysql_dump_latin1_myisam.sql | sed 's/ENGINE=MyISAM/ENGINE=InnoDB/g' | sed 's/CHARSET=latin1/CHARSET=utf8/g' | sed 's/SET NAMES latin1/SET NAMES utf8/g' > mysql_dump_utf8_innodb.sql

3. 5.1系から5.5系へのバトンタッチ

迷わず、5.1系をアンインストールし、5.5系をインストールしましょう。その際、データベースファイルのあるディレクトリはリネームしておきましょう。(念のため)もちろん、うまいこと両方インストールして平行運用もできますが、ここでは説明を省きます。面倒だからw
"/etc/my.cnf"の修正もお忘れ無くw

4. 5.5系へのrestore作業

既にUTF-8, InnoDB仕様のSQLファイルがあるので、これを使ってrestoreします。

CREATE DATABASE するときのちょっとした工夫、というか明示的な指定

CREATE DATABASE mtdb DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
mysql -uroot -prootdbpass --default-character-set=utf8 mtdb < mysql_dump_utf8_innodb.sql
面倒なんで、bashのスクリプトにしちゃいましょう。
#!/bin/bash

DB_USER="root"
DB_PASS="rootdbpass"
DATABASE="mtdb"

DATE=`date +'%Y%m%d'`
mysqldump -u${DB_USER} -p${DB_PASS} --default-character-set=latin1 ${DATABASE} > mysql_dump_latin1_myisam_${DATE}.sql
cat mysql_dump_latin1_myisam_${DATE}.sql | sed 's/ENGINE=MyISAM/ENGINE=InnoDB/g' | sed 's/CHARSET=latin1/CHARSET=utf8/g' | sed 's/SET NAMES latin1/SET NAMES utf8/g' > mysql_dump_utf8_innodb_${DATE}.sql
これを実行すると、5.1系でLatin1, MyISAMのデータが、5.5用(というか5.5でも使える)のUTF-8, InnoDBのdumpデータに早変わり。
これを、新しく作ったデータベースに流し込めばおしまいですw

ちなみに、このbashのスクリプトですが、うまく動くか試していないので、自己責任でお願いします(苦笑)

実践ハイパフォーマンスMySQL 第2版
実践ハイパフォーマンスMySQL 第2版Baron Schwartz Peter Zaitsev Vadim Tkachenko Jeremy D. Zawodny Arjen Lentz Derek J. Balling 伊藤 直也 (監訳)

オライリージャパン 2009-12-14
売り上げランキング : 63997


Amazonで詳しく見る
by G-Tools

 
カテゴリ

Who is uehatsu?

uehatsu

アーカイブ

Facebook page