あーかいぶすハイディフィニション

ここはもう更新しとらんのじゃ

ndb_mgmd を起動する際の注意とはいったい…?!

MySQl Cluster を管理するためのデーモンちゃんのようなのですが、読み込む設定ファイル ( config.ini ) の扱いがよくわからなかったので調べてみたよ!

ndb_mgmd について
http://dev.mysql.com/doc/refman/5.1/ja/mysql-cluster-ndb-mgmd-process.html

  • ndb_mgmd は、起動時に --config-file=FILENAME もしくは -f FILENAME によって読み込む設定ファイルを指定できるよ!指定しない場合は、デフォルトの値として ./config.ini を呼ぶみたい。
  • ndb_mgmd に読み込まれた設定ファイル ( 普通なら config.ini ) は、$PREFIX/mysql-cluster/ndb_node-id_config.bin.seq-number って形式でバイナリファイルに変換されるよ!しかもこのファイルが今後設定ファイルのキャッシュとして利用されるみたいだよ!
  • という訳で、例え ndb_mgmd -f /var/lib/mysql-cluster/config.ini みたいに設定ファイルを指定して起動しても、すでにキャッシュとして ndb_node-id_config.bin.seq-number が存在する場合は、そっちを優先して読むから、変更した設定ファイルの内容は反映されないよ、FxxK!!

ということなので、解決策は以下の通りです。

  • ndb_mgmd プロセスが起動しないことを確認して、$PREFIX/mysql-cluster/ndb_node-id_config.bin.seq-number を rm とかで削除してから、読み込ませたい設定ファイルを指定して再度 ndb_mgmd を起動する
  • ndb_mgmd --reload を使えば、コンフィグファイルの読み込み直し(キャッシュしなおし)してくれる模様。この時、設定ファイルのパスが指定できるのかデフォルトの位置の設定ファイルしか読めないのかはわからないや。
  • どうも、--skip-config-cache なるオプションを利用すると、キャッシュが存在しても利用しないようにできるっぽいね。
  • そもそも ndb_mgmd を立ち上げる時に、--config-cache=OFF とオプションをつけておけば、キャッシュが生成されない。

マシンのリソースが潤沢であれば、--config-cache=OFF とかでもいいかもしれませんね。一番良いのは rc スクリプトを作成してしまう事かもしれませんが。

MySQL Cluster 7.1.19 の man ndb_mgmd から、--configdir=path と --config-file=filename, -f filename の部分を参照したので、また 7.2.4 あたりだと変わってるかもめ。