Windows版のMySQL3.23.58でレプリケーションを行うと強制終了する
MySQLのバグレポートに載っていたので掲載。
「Slave Start cause Mysql server to crash」にあるように、Windows版のmysql-3.23.58-win.zipを利用してサーバを立てると、レプリケーションを行う際の「SLAVE START」コマンド実行時に強制終了(クラッシュ)します。
内容は定番の「問題が発生したため、mysqld-max.exe を終了します。 ご不便をおかけして申し訳ありません。」というもの。
mysql> CHANGE MASTER TO > MASTER_HOST='192.168.1.10', > ... Query OK, 0 rows affected (0.00 sec) mysql> SLAVE START; (←ここでクラッシュ)
この現象を報告したユーザーによると、3.23.56や4.0.16では起こらず3.23.57と3.23.58のみで起こる現象とのこと。 また彼はWindows 2000で確認していますが、Windows XPでも同様の症状が発生します。 私が確認した時もInnoDBをサポートさせるため、mysqld-maxを利用した場合でした。
回避法
MySQLサーバーがWindowsのサービスとして実行されているものとして解説します。
もし、インストールする際にデフォルトのコマンド(例えば「mysqld-nt –install」)を利用してインストールしたのであれば、MySQLサービスがローカルシステムアカウントで実行されているためかとおもわれます。 Windowsではローカルシステムアカウントはリモートマシンに対して認証を許可しないからです(mysqldにはこのことを確認するコードがありますが)。
解決するためには以下のいずれかを試してください:
- サービス管理マネージャー(SCM)を利用してシステムローカルアカウントから別のユーザーアカウント(管理者権限か、書き込み/読み込みの権限のあるユーザー)に変更してください。 つまり、レプリケーションにはmysqldサーバーとWindows管理権限が必要ということです。(Windows XPだとこの場合でもクラッシュしました)
- Windowsサービスとしてではなく、スタンドアローンで起動すれば問題が起こりません。
うまくできない方はいっそのことバージョンを上げてMySQL4.0.26辺りを使うのが良いかもしれません。 MySQL4.0.26では問題なくレプリケーションができます。
2008-04-28