文字コードの問題で何度か障害が出たものの、とりあえずバージョンアップ完了。MediaWikiがマトモに動かなくなるという障害が発生。影響調査とリグレッションはもっと計画的に行いたいところ。

MySQLバージョンアップ (4.0→5.1)

現行データ(MySQL 4.0)をダンプ

mysqldumpを使用し、データベースのダンプを保存する。

[cre@www218 ~]$ mysqldump-4.0 –character-set=utf8 dbname > dump.sql

文字コード回りの問題が厄介すぎたので、こちらを参考にした。さくらだとサーバのエンコードがujis(EUC-JP?)になっているらしく、ダンプ作成時に –character-set オプションで utf8 を指定してやらないと化ける。

新DB(5.1)にインポート

さくらインターネットの管理画面で旧DBを削除し、MySQL 5.1のDBを作成する。

作成したら、先ほどダンプしたファイルをDBにインポートする。

mysql> ALTER DATABASE dbname CHARACTER SET utf8;
mysql> \C utf8
mysql> \. dump.sql

DB作成時の文字コードがujisとなっているため、ここでも文字コードの設定変更が必要。動いていないDBなので、ALTER DATABASEしちゃってOK。

MySQLのバージョンアップはこれで終わり。

【障害】MediaWikiが動かない

はい、デグレきたこれ。(←ちゃんと影響調査しろよ)

MediaWikiのメインページを開いたら、こんなん出ました。

from within function “Article::pageData”. MySQL returned error “1267: Illegal mix of collations (utf8_bin,IMPLICIT) and (ujis_japanese_ci,COERCIBLE) for operation ‘=’ (mysql103.db.sakura.ne.jp)”.

サーバ側とクライアント側で文字コードが合ってない?のかな。クライアント側が utf8 になっていない模様。こちらを参考に、LocalSettings.phpを修正。グローバル変数 $wgDBmysql5 を true にすると、DB接続時に SET NAMES utf8 が実行されるらしい。(すごい実装だな…)

MySQLの利用者数は多そうだけど、あんまり初心者向けではないなあ、とか。