Unix で mysqld サーバーを起動するには、mysqld_safe をお薦めします。mysqld_safe では、エラー発生時のサーバーの再起動やエラーログへの実行時情報のロギングなど、いくつかの安全機能が追加されています。 エラーのロギングについては、このセクションで後ほど説明します。
一部の Linux プラットフォームでは、RPM または Debian パッケージからの MySQL インストールに、MySQL サーバーの起動と停止を管理するための systemd サポートが含まれています。 これらのプラットフォームでは、mysqld_safe は不要であるためインストールされません。 詳細は、セクション2.5.9「systemd を使用した MySQL Server の管理」を参照してください。
mysqld_safe は、mysqld という名前の実行可能ファイルを起動しようとします。 デフォルトの動作をオーバーライドして、起動するサーバーの名前を明示的に指定するには、mysqld_safe で --mysqld
オプションまたは --mysqld-version
オプションを指定します。 --ledir
オプションを使用して、mysqld_safe がサーバーを検索するディレクトリを指定することもできます。
mysqld_safe のオプションの多くは、mysqld のオプションと同じです。 セクション5.1.7「サーバーコマンドオプション」を参照してください。
mysqld_safe が理解できないオプションは、コマンド行で指定された場合は mysqld に渡されますが、オプションファイルの [mysqld_safe]
グループに指定された場合は無視されます。 セクション4.2.2.2「オプションファイルの使用」を参照してください。
mysqld_safe は、オプションファイルの [mysqld]
、[server]
、[mysqld_safe]
の各セクションからすべてのオプションを読み取ります。 たとえば、次のような[mysqld]
セクションを指定すると、mysqld_safe は --log-error
オプションを検索して使用します:
[mysqld]
log-error=error.log
下位互換性のために、mysqld_safe は[safe_mysqld]
セクションも読み取りますが、このようなセクションの名前を[mysqld_safe]
に変更する必要があります。
mysqld_safe では、次のテーブルに示すように、コマンドラインおよびオプションファイルでオプションを使用できます。 MySQL プログラムによって使用されるオプションファイルの詳細については、セクション4.2.2.2「オプションファイルの使用」を参照してください。
表 4.6 「mysqld_safe オプション」
オプション名 | 説明 |
---|---|
--basedir | MySQL インストールディレクトリへのパス |
--core-file-size | mysqld が作成できるべきコアファイルのサイズ |
--datadir | データディレクトリへのパス |
--defaults-extra-file | 通常のオプションファイルに加えて、名前付きオプションファイルを読み取ります |
--defaults-file | 指名されたオプションファイルのみを読み取る |
--help | ヘルプメッセージを表示して終了 |
--ledir | サーバーが置かれているディレクトリへのパス |
--log-error | 指定されたファイルにエラーログを書き込み |
--malloc-lib | mysqld で使用する代替 malloc ライブラリ |
--mysqld | 起動するサーバープログラム名 (ledir ディレクトリの) |
--mysqld-safe-log-timestamps | ロギングのタイムスタンプ書式 |
--mysqld-version | サーバープログラム名のサフィクス |
--nice | サーバーのスケジュール設定の優先順位を設定するために nice プログラムを使用 |
--no-defaults | オプションファイルを読み取らない |
--open-files-limit | mysqld が開くことができるファイル数 |
--pid-file | サーバープロセス ID ファイルのパス名 |
--plugin-dir | プラグインがインストールされているディレクトリ |
--port | TCP/IP 接続を待機するポート番号 |
--skip-kill-mysqld | 迷子の mysqld プロセスの kill を試行しない |
--skip-syslog | syslog にエラーメッセージを書き込まず、エラーログファイルを使用 |
--socket | Unix ソケット接続を待機するソケットファイル |
--syslog | syslog にエラーメッセージを書き込み |
--syslog-tag | syslog に書き込まれるメッセージのタグサフィクス |
--timezone | TZ タイムゾーン環境変数を指定された値に設定 |
--user | mysqld を、名前が user_name または数値のユーザー ID が user_id であるユーザーとして実行 |
-
ヘルプメッセージを表示して終了します。
-
MySQL インストールディレクトリへのパス。
-
mysqld で作成できるべきコアファイルのサイズ。 このオプション値は ulimit -c に渡されます。
注記innodb_buffer_pool_in_core_file
変数を使用すると、それをサポートするオペレーティングシステム上のコアファイルのサイズを縮小できます。 詳細は、セクション15.8.3.7「コアファイルからのバッファープールページの除外」を参照してください。 -
データディレクトリへのパス。
-
--defaults-extra-file=
file_name
通常のオプションファイルに加えて、このオプションファイルを読み取ります。 ファイルが存在しないか、アクセスできない場合、サーバーはエラーで終了します。
file_name
は、フルパス名ではなく相対パス名として指定された場合、カレントディレクトリを基準にして解釈されます。 これを使用する場合は、コマンド行の最初のオプションでなければなりません。このオプションおよびその他のオプションファイルオプションの詳細は、セクション4.2.2.3「オプションファイルの処理に影響するコマンド行オプション」 を参照してください。
-
指定されたオプションファイルのみ使用します。 ファイルが存在しないか、アクセスできない場合、サーバーはエラーで終了します。
file_name
は、フルパス名ではなく相対パス名として指定された場合、カレントディレクトリを基準にして解釈されます。 これを使用する場合は、コマンド行の最初のオプションでなければなりません。このオプションおよびその他のオプションファイルオプションの詳細は、セクション4.2.2.3「オプションファイルの処理に影響するコマンド行オプション」 を参照してください。
-
mysqld_safe がサーバーを検出できない場合、このオプションを使用してサーバーが置かれているディレクトリのパス名を示します。
このオプションはコマンド行でのみ受け入れられ、オプションファイルでは受け入れられません。 systemd を使用するプラットフォームでは、
MYSQLD_OPTS
の値で値を指定できます。 セクション2.5.9「systemd を使用した MySQL Server の管理」を参照してください。 -
指定されたファイルにエラーログを書き込みます。 セクション5.4.2「エラーログ」 を参照してください。
-
このオプションは、mysqld_safe によって生成されるログ出力のタイムスタンプの書式を制御します。 次のリストに、許可される値を示します。 その他の値の場合、mysqld_safe は警告をログに記録し、
UTC
形式を使用します。-
UTC
,utc
ISO 8601 UTC 形式 (サーバーの
--log_timestamps=UTC
と同じ)。 これはデフォルトです。 -
SYSTEM
,system
ISO 8601 のローカル時間書式 (サーバーの
--log_timestamps=SYSTEM
と同じ)。 -
HYPHEN
,hyphen
mysqld_safe for MySQL 5.6 と同様の
YY-MM-DD h:mm:ss
形式。 -
LEGACY
,legacy
MySQL 5.6 より前の mysqld_safe と同様の
YYMMDD hh:mm:ss
形式。
-
-
システムの
malloc()
ライブラリの代わりに、メモリー割り当てに使用されるライブラリの名前。 オプション値は、ディレクトリ/usr/lib
,/usr/lib64
,/usr/lib/i386-linux-gnu
または/usr/lib/x86_64-linux-gnu
のいずれかである必要があります。--malloc-lib
オプションは、mysqld が起動するときに、ダイナミックリンクに影響を与え、ローダーがメモリー割り当てライブラリを検出できるように、LD_PRELOAD
環境値を変更します。このオプションが指定されない場合、または値なしで指定された場合 (
--malloc-lib=
)、LD_PRELOAD
は変更されず、tcmalloc
を使用する試みは行われません。-
MySQL 8.0.21 より前では、このオプションが
--malloc-lib=tcmalloc
として指定されている場合、mysqld_safe は/usr/lib
でtcmalloc
ライブラリを検索します。tmalloc
が検出された場合は、そのパス名がLD_PRELOAD
値の先頭に追加されて mysqld に渡されます。tcmalloc
が見つからない場合は、mysqld_safe はエラーで中止されます。MySQL 8.0.21 の時点では、
tcmalloc
は--malloc-lib
オプションに許可された値ではありません。 オプションが
--malloc-lib=
と指定された場合、そのフルパスが/path/to/some/library
LD_PRELOAD
値の先頭に追加されます。 そのフルパスが、存在しないかまたは読み取り不能なファイルを指している場合は、mysqld_safe はエラーで中止されます。mysqld_safe がパス名を
LD_PRELOAD
に追加する場合は、その変数がすでに持っている、既存の値の先頭にパスを追加します。
注記systemd を使用してサーバーを管理するシステムでは、mysqld_safe は使用できません。 かわりに、
/etc/sysconfig/mysql
でLD_PRELOAD
を設定して割当てライブラリを指定します。Linux ユーザーは、次の行を
my.cnf
ファイルに追加することで、/usr/lib
にtcmalloc
パッケージがインストールされている任意のプラットフォームでlibtcmalloc_minimal.so
ライブラリを使用できます:[mysqld_safe] malloc-lib=tcmalloc
特定の
tcmalloc
ライブラリを使用するには、そのフルパス名を指定します。 例:[mysqld_safe] malloc-lib=/opt/lib/libtcmalloc_minimal.so
-
ledir
ディレクトリにある、起動するサーバープログラムの名前。 MySQL のバイナリ配布を使用するが、バイナリ配布以外のデータディレクトリがある場合には、このオプションが必要です。 mysqld_safe がサーバーを検出できない場合は、--ledir
オプションを使用してサーバーのあるディレクトリへのパス名を示します。このオプションはコマンド行でのみ受け入れられ、オプションファイルでは受け入れられません。 systemd を使用するプラットフォームでは、
MYSQLD_OPTS
の値で値を指定できます。 セクション2.5.9「systemd を使用した MySQL Server の管理」を参照してください。 -
このオプションは
--mysqld
オプションと類似していますが、サーバーのプログラム名のサフィクスだけを指定します。 ベース名は mysqld であると想定されます。 たとえば、--mysqld-version=debug
を使用すると、mysqld_safe はledir
ディレクトリの mysqld-debug プログラムを起動します。--mysqld-version
の引数が空の場合、mysqld_safe はledir
ディレクトリの mysqld を使用します。このオプションはコマンド行でのみ受け入れられ、オプションファイルでは受け入れられません。 systemd を使用するプラットフォームでは、
MYSQLD_OPTS
の値で値を指定できます。 セクション2.5.9「systemd を使用した MySQL Server の管理」を参照してください。 -
サーバーのスケジュール優先順位を任意の値に設定するには、
nice
プログラムを使用します。 -
オプションファイルを読み取りません。 オプションファイルから不明のオプションを読み取ることが原因でプログラムの起動に失敗する場合、
--no-defaults
を使用して、オプションを読み取らないようにすることができます。 これを使用する場合は、コマンド行の最初のオプションでなければなりません。このオプションおよびその他のオプションファイルオプションの詳細は、セクション4.2.2.3「オプションファイルの処理に影響するコマンド行オプション」 を参照してください。
-
mysqld が開くことができるファイル数。 オプション値は ulimit -n に渡されます。
注記これが正しく機能するためには、mysqld_safe を
root
として起動する必要があります。 -
mysqld がプロセス ID ファイルに使用するパス名。
-
プラグインディレクトリのパス名。
-
サーバーが TCP/IP 接続を待機するときに使用するポート番号。
root
オペレーティングシステムユーザーがサーバーを起動しないかぎり、ポート番号は 1024 以上である必要があります。 -
起動時に、未処理の mysqld プロセスの強制終了を試行しません。 このオプションは、Linux のみで機能します。
-
サーバーがローカル接続を待機するときに使用する Unix ソケットファイル。
-
--syslog
は、logger プログラムをサポートするシステムで、エラーメッセージがsyslog
に送信されるようにします。--skip-syslog
は、syslog
の使用を抑制し、メッセージはエラーログファイルに書き込まれます。syslog
をエラーロギングに使用すると、すべてのログメッセージにdaemon.err
の機能/重大度が使用されます。これらのオプションを使用した mysqld ロギングの制御は非推奨になりました。 エラーログ出力をシステムログに書き込むには、セクション5.4.2.8「システムログへのエラーロギング」 の手順を使用します。 この機能を制御するには、server
log_syslog_facility
システム変数を使用します。 -
syslog
へのロギングで、mysqld_safe および mysqld からのメッセージはそれぞれmysqld_safe
およびmysqld
識別子を付けて書き込まれます。 識別子のサフィクスを指定するには、--syslog-tag=
を使用します。これにより、識別子はtag
mysqld_safe-
およびtag
mysqld-
に変更されます。tag
このオプションを使用した mysqld ロギングの制御は非推奨になりました。 代わりにサーバーの
log_syslog_tag
システム変数を使用してください。 セクション5.4.2.8「システムログへのエラーロギング」を参照してください。 -
TZ
タイムゾーン環境変数を、指定されたオプション値に設定します。 正当なタイムゾーン指定形式は、オペレーティングシステムのドキュメントを参照してください。 -
mysqld サーバーを、名前
user_name
または数字ユーザー IDuser_id
を持つユーザーとして実行します。 (このコンテキストでの「ユーザー」は、システムログインアカウントであり、付与テーブルにリストされている MySQL ユーザーではありません。)
--defaults-file
または --defaults-extra-file
オプションを指定して mysqld_safe を実行してオプションファイルに名前を付ける場合、オプションはコマンドラインで指定された最初のオプションである必要があります。そうでない場合、オプションファイルは使用されません。 たとえば、次のコマンドは指定されたオプションファイルを使用しません:
mysql> mysqld_safe --port=port_num --defaults-file=file_name
代わりに、次のコマンドを使用します。
mysql> mysqld_safe --defaults-file=file_name --port=port_num
MySQL のソースまたはバイナリ配布は通常、サーバーを若干異なる場所にインストールしますが、mysqld_safe スクリプトは、どちらからインストールしたサーバーでも正常に立ち上げることができるように作成されています。 (セクション2.1.5「インストールのレイアウト」を参照してください。) mysqld_safe は、次の条件のいずれかが満たされていることを想定しています。
サーバーとデータベースは作業ディレクトリ (mysqld_safe が呼び出されたディレクトリ) から相対的に検索できること。 バイナリ配布の場合、mysqld_safe は作業ディレクトリの下の
bin
ディレクトリおよびdata
ディレクトリを検索します。 ソース配布の場合は、libexec
ディレクトリおよびvar
ディレクトリを検索します。 mysqld_safe を MySQL インストールディレクトリ (バイナリ配布の場合は/usr/local/mysql
) から起動した場合には、この条件が満たされるはずです。サーバーとデータベースが作業ディレクトリから相対的に検出できない場合は、mysqld_safe は絶対パス名での検索を試みます。 通常の場所は
/usr/local/libexec
および/usr/local/var
です。 実際の場所は、配布のビルド時に構成される値から決定されます。 構成時に指定された場所に MySQL がインストールされていれば、これは正しいはずです。
mysqld_safe はサーバーおよびデータベースを作業ディレクトリから相対的に検索しようとするため、mysqld_safe を MySQL インストールディレクトリから起動するかぎり、MySQL のバイナリ配布は任意の場所にインストールできます。
shell> cd mysql_installation_directory
shell> bin/mysqld_safe &
mysqld_safe を MySQL インストールディレクトリから呼び出しても失敗する場合は、--ledir
オプションおよび --datadir
オプションを指定して、システムのサーバーとデータベースがあるディレクトリを指定します。
mysqld_safe は、sleep および date システムユーティリティを使用して、起動を試行した回数を秒単位で判別しようとします。 これらのユーティリティが存在し、試行された起動数/秒が 5 より大きい場合、mysqld_safe は 1 フル秒待機してから再起動します。 これは、連続して失敗する場合に過度に CPU を使用することを防ぐためのものです。 (Bug #11761530、Bug #54035)
mysqld_safe を使用して mysqld を起動する場合、mysqld_safe は自身と mysqld からのエラー (および通知) メッセージが同じ出力先に送信されるよう手配します。
これらのメッセージの出力先を制御するための mysqld_safe オプションがいくつかあります。
--log-error=
: エラーメッセージを指定されたエラーファイルに書き込みます。file_name
--syslog
: logger プログラムをサポートするシステムで、syslog
にエラーメッセージを書き込みます。--skip-syslog
: エラーメッセージをsyslog
に書き込みません。 メッセージは、デフォルトのエラーログファイル (データディレクトリの
)、またはhost_name
.err--log-error
オプションが指定された場合は、指定されたファイルに書き込まれます。
これらのオプションが指定されていない場合は、デフォルトは --skip-syslog
です。
mysqld_safe がメッセージを書き込む場合、通知はロギングの出力先 (syslog
またはエラーログファイル) および stdout
に送られます。 エラーはロギングの出力先と stderr
に送られます。
mysqld_safe からの mysqld ロギングの制御は非推奨になりました。 かわりに、サーバー固有の syslog
サポートを使用してください。 詳細は、セクション5.4.2.8「システムログへのエラーロギング」を参照してください。