2013年6月4日火曜日

mysqld_safeは如何にしてmysqldのダウンを検知するのか

LinuxとかUnixのMySQL-serverにくっついてくるmysqld_safe、コイツは内部でmysqldを呼ぶ
シェルスクリプトになっていて、環境変数の面倒とかulimitの面倒とかumaskの面倒とか見てくれたりする。

mysqldが落ちるとmysqld_safeがそれを検知して起動してくれるんだけど、
今までコイツがどうやってmysqldダウンを検知してるんだか知らなかった。

で、よくよく読んでみると、なんと

 フ ォ ア グ ラ ウ ン ド で m y s q l d を 起 動 し て る

から、mysqldが落ちた途端にmysqld_safeに制御が戻って、
(mysqldを起動した(=eval_log_error関数)直後にリスタートの処理が書いてある)
ほぼノータイムでmysqldのダウンを検知する。

まさかこんなに当たり前でシンプルな作りだとは。なんかシグナルもらってるんだとずっと思ってたよ。。


あと、mysqld_safeってSIGTERMで落ちないようになってるのね。
そういえばオプション無しのkillで落ちなかった気がする。

0 件のコメント :

コメントを投稿