MySQLに鞍替え
これまで当サーバーではPostgreSQLを用いてMovableType環境を構築しておりましたが、この度MySQLに鞍替えしました。 実は当サーバーの立ち上げ時に一度チャレンジしたのですけれども、その時はなんやかんやでダメだったんです。
さておき、MySQLの現在の安定版は4.1.13aであります。 トップページから「MySQL Database」のリンクに「Windows (x86) 4.1.13a 37.8M」がありますので、これをダウンロードし、展開してインストールを行いました。 また、後から気がついたのですけれど、GUIフロントエンド「MySQL Administrator」がありますので、これもインストールしました。 双方ともデフォルトのインストール先にインストールしました。
MySQL自体のインストールにおいて幾つかの設定箇所があるので以下に記します。
先ず、セットアップ・タイプは「Typical」。 次に、今回はサインアップはしませんでしたので「Skip Sign-Up」にてスキップしました。 この後ファイルの展開が始まり、インストールがなされます。
コンフィグは「Standard Configuration」。 次にサービス名は「MySQL41」としました。 前回失敗した時のインストールで「MySQL」とし、ちゃんとアンインストールしていないので、この名称でサービスが存在してしまっております(しかし起動されないのでそのまま放置しております)。 そこで名称を別のものとした訳です。 また、「Include Bin Directory in Windows PATH」のチェックを入れました。
次にrootのパスワードをPostreSQLのそれと同じもので入力しました。 そしてウィザードを進めていくと、各種設定を自動的に行ってくれ、セットアップが完了します。
コマンドラインでのMySQLのログインは
mysql -u root -p
です。 MySQL Administratorであれば起動して
Server Host : localhost
Username : root
Password :
という感じでログインします。
ログインしたら一つデータベースを作ります。 コマンドラインならば
mysql> create database (database name) ;
MySQL AdministratorならばCatalogsからコンテクストメニューで「Create New Schema」を選択してデータベース名を入力します。 ここまでは以前エントリーしましたのでそちらも参照下さい(リンク)。
ちなみに今回は全部root上で行うという推奨されない方法を採りましたが、後で何とかします(ぉぃ)。
データベースを作成したらMovableType上でデータベースの移行を行いますが、そのままでは以下のようなエラーが出てしまいます。
Bad ObjectDriver config: Connection error: Client does not support authentication protocol requested by server; consider upgrading MySQL client
なのでmysql.iniを開き、[mysqld]とある行の下に
old-passwords
の1行を追加して保存します。 そしてMySQLにログインし、
mysql> use mysql
mysql> UPDATE user SET Password = OLD_PASSWORD('mypass') WHERE Host = 'localhost' AND User = 'root';
mysql> FLUSH PRIVILEGES;
とすれば解決します(参考リンクその1、2)。 この解決方法を教えて下さったminnさんに感謝します♪
MySQL自体の設定はこれで完了です。 次にMovableType。
私の環境では既にモジュールがインストールされてますので説明はそちらに譲ります(リンク)。
で、mt-load.cgiは開きません。 今回は初回立ち上げでは無く、既存のPostgreSQL環境からの移行です。
PostgresSQLとMySQLとでデータの互換がどの位あるのか考えもせず、またそういう事が可能なのかも知らなかったのですが、Ogawa::Memorandaさんにてmt-db-convert.cgiという「 MTデータベースの相互変換CGIスクリプト」が公開されておりますので、これを有り難く使用させて頂きました。 これが無かったら移行しようなんて思わなかった筈。
ダウンロードしたらMTディレクトリー(MovableTypeがインストールされているディレクトリー)に展開した「mt-db-convert.cgi」を移動します。 そしてアクセスすると設定画面になります。 左側にはmt.cfgを参照した内容が記されますので、後はパスワードを入力します。 そして右側にも同様に「移行後の環境」を入力します。 そして「Convert」ボタンをクリックすれば移行作業に入ります。
蛇足ですが私、素直に移行せず、一端BerkeleyDBに移行してからMySQLに移行されました。 と申しますのも当サイト、エントリーが2500程ありますので、BerkeleyDBだとどんな風に遅いのか知りたかったから(笑)。 いやはやスゲー遅かったです。 ぉぃぉぃぉぃ...っていう位に遅かったです。 更に余談ですけれど、BerkeleyDBに移行するのに4時間半、MySQLに移行するのに2時間掛かりました。 兎に角時間が掛かりますし、移行作業の最初はPerlがダラダラしていて止まってるんじゃないかと思う程です。 しかもエラーが出ちゃったりなんかして(それはmt-db-convert.cgiではなくデータベースの問題)、そのエラーはそのままで見守っている他は無く、それでも何とか移行出来ちゃったのですが、ホント時間が掛かりますので留意しなければなりません。 っていうかこんなに巨大なデータベースになる前にデータベースを決めなくてはなりません。 反省してます。
移行が終わったらmt.cfgをチェックし、希望のデータベースで処理されるようになっているか確認します。 具体的には
DataSource
の行をコメントアウトし(先頭に#を追記する)、
ObjectDriver DBI::mysql
Database (database name)
DBUser (user name)
を追記します。 既に「ObjectDriver DBI::postgres」って記述している私の場合はその辺りを修正するだけなので楽でした。 また、パスワードも同じにしたのでmt-db-pass.cgiは変更しませんでした。
そんなこんなでMovableTypeにログインも出来、エントリーも書いてみました。 全然順調で、PostgreSQLよりも微妙にレスポンスが良かったです。




- link -