MySQLサーバーの起動に関するプログラムにはmysqld、mysqld_safe、mysql.serverの3つがあります。それぞれの違いについて調べた内容を紹介します。
mysqldとmysqld_safeとmysql.serverの違い
mysqldはMySQLサーバー本体のバイナリプログラムです。つまり、このバイナリはMySQLサーバーを実行します。CentOSにyumでMySQLをインストールした環境で、このバイナリのパスは/usr/sbin/mysqldでした。他の環境やインストール方法によっては違う場所にインストールされるかもしれません。
mysqld_safeはMySQLサーバー(つまりmysqld)を起動するためのスクリプトです。mysqld_safeはmysqldを起動する他に安全な機能を追加しています。例えばmysqldのエラー発生時にmysqldを再起動したり、エラーログをロギングする機能が追加されています。
mysql.serverもMySQLサーバーを起動するためのスクリプトです。LinuxでRPMパッケージからMySQLサーバーをインストールするとmysql.serverは/etc/init.dディレクトリにmysql(またはmysqld)という名前でインストールされます。したがってCentOSでの自動起動やserviceコマンドでの実行ではmysql.serverが実行されます。
mysql.serverは内部でmysqld_safeを実行します。つまり、mysql.serverを実行すると、mysqld_safeが実行され、mysqld_safeはmysqldを実行してMySQLサーバーが起動されることになります。
mysql.server ↓ mysqld_safe ↓ mysqld(MySQLサーバー本体)
MySQLのマニュアルでは、MySQLサーバーを起動するのにmysqld_safeでの起動を推奨しているので、通常はmysql.serverからの起動で良いでしょう。
各プログラムが読み取るオプショングループについて
プログラムの違いがわかったところで、それぞれのプログラムがオプションファイルから読み取るのオプションのグループについても見てみましょう。
- mysqld
- オプションファイルの[mysqld]、[server]グループからオプションを読み取る
- mysqld_safe
- オプションファイルの[mysqld]、[server]、[mysqld_safe]グループからオプションを読み取る
- mysql.server
- オプションファイルの[mysqld]、[mysql.server]グループからオプションを読み取る
mysql.serverから起動するときは、先ほど説明した通り順にプログラムが呼び出されるので、結局全部読み取られるのだと思います。したがって、オプショングループの使い分けは...
- mysqldに対するオプションは[mysqld]グループに指定する
- mysqld_safe固有のオプションは[mysqld_safe]グループに指定する
- mysql.server固有のオプションは[mysql.server]グループに指定する
- [server]グループはMySQLサーバー全体(って何?)で読み取られるだろうが、正直使う場面がわからない
と言う感じでどうでしょうか?とりあえず、今の所は困ってないのでこれ以上は深入りはやめておきます。
私的には大体納得できましたが、いかがでしたでしょうか?それでは最後までご静聴いただき有難うございました。