mysqldとmysqld_safeの関係
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の起動と停止。こういう基本こそしっかり
抑えておかないといけないのだな、と改めて痛感。。