mysqldとmysqld_safeの関係

2月 14, 2010

mysqldとmysqld_safeの関係について。
mysqld_safeはMySQLを安全に起動するためのプログラム、くらいの認識はあったのだが、
では具体的に何がどう安全なの?...と、なると答えに詰まるので、改めて書いておく。

MySQLのインスタンスはmysqldを直接起動するのではなく、mysqld_safeを経由して
起動させることが推奨されている。
mysqld_safeはひと言で言うとmysqldを監視しているデーモンである。

# /etc/init.d/mysql startを実行した時というのは、mysqldがダイレクトに起動
しているのではなく、mysqld_safe内で起動している。
つまり、mysqld_safeが内部でmysqldを実行しているのである。
しつこいが起動の流れを改めて書くと、以下のようになるわけだ。

# /etc/init.d/mysql start

mysqld_safeが起動

mysqld_safeがmysqldを起動する


起動の流れを掴みたかったら、# sh -x /etc/init.d/mysql start と実行してみるとよいだろう。
、、、って、実はこれは以下の受け売り。大変参考になりました。

http://www.insight-tec.com/mailmagazine/mysql/091118.html

mysqld_safeを以下のようにコマンドラインで直接実行することも、当然可能。
その際に指定したオプションのすべては、mysqldに渡されるとのこと。

# /usr/bin/mysqld_safe &


インスタンスの起動中はmysqld_safeはmysqldのプロセスを監視しており、何らかの
事態でmysqldが強制終了すると、mysqldを再起動するそうだ(killだと正常終了と見なし、
kill -9だと異常終了と見なすらしい)。
それから「ランタイム情報をログファイルに記録する」機能もあるそうだ。

mysqld_safe の実行はMySQL をインストールしたディレクトリでなければならない、
とかmysqld_safe のスクリプトは編集してはならない、とか、 –defaults-file や
–defaults-extra-optionオプションを指定するときは先頭に持ってこなくてはならない、
とか何かと決まりがあるようである。その辺りは以下にがっつり書いてある。

4.3.1. mysqld_safe — MySQL サーバ スタートアップ スクリプト

何かとハマることが多い、MySQLの起動と停止。こういう基本こそしっかり
抑えておかないといけないのだな、と改めて痛感。。

Categories: MySQL

No Responses so far | Have Your Say!

Comments are closed.