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