Documentation Home
MySQL 8.0 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 36.1Mb
PDF (A4) - 36.2Mb


MySQL 8.0 リファレンスマニュアル  /  ...  /  mysqld_safe — MySQL サーバー起動スクリプト

このページは機械翻訳したものです。

4.3.2 mysqld_safe — MySQL サーバー起動スクリプト

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 であるユーザーとして実行

  • --help

    ヘルプメッセージを表示して終了します。

  • --basedir=dir_name

    MySQL インストールディレクトリへのパス。

  • --core-file-size=size

    mysqld で作成できるべきコアファイルのサイズ。 このオプション値は ulimit -c に渡されます。

    注記

    innodb_buffer_pool_in_core_file 変数を使用すると、それをサポートするオペレーティングシステム上のコアファイルのサイズを縮小できます。 詳細は、セクション15.8.3.7「コアファイルからのバッファープールページの除外」を参照してください。

  • --datadir=dir_name

    データディレクトリへのパス。

  • --defaults-extra-file=file_name

    通常のオプションファイルに加えて、このオプションファイルを読み取ります。 ファイルが存在しないか、アクセスできない場合、サーバーはエラーで終了します。file_name は、フルパス名ではなく相対パス名として指定された場合、カレントディレクトリを基準にして解釈されます。 これを使用する場合は、コマンド行の最初のオプションでなければなりません。

    このオプションおよびその他のオプションファイルオプションの詳細は、セクション4.2.2.3「オプションファイルの処理に影響するコマンド行オプション」 を参照してください。

  • --defaults-file=file_name

    指定されたオプションファイルのみ使用します。 ファイルが存在しないか、アクセスできない場合、サーバーはエラーで終了します。file_name は、フルパス名ではなく相対パス名として指定された場合、カレントディレクトリを基準にして解釈されます。 これを使用する場合は、コマンド行の最初のオプションでなければなりません。

    このオプションおよびその他のオプションファイルオプションの詳細は、セクション4.2.2.3「オプションファイルの処理に影響するコマンド行オプション」 を参照してください。

  • --ledir=dir_name

    mysqld_safe がサーバーを検出できない場合、このオプションを使用してサーバーが置かれているディレクトリのパス名を示します。

    このオプションはコマンド行でのみ受け入れられ、オプションファイルでは受け入れられません。 systemd を使用するプラットフォームでは、MYSQLD_OPTS の値で値を指定できます。 セクション2.5.9「systemd を使用した MySQL Server の管理」を参照してください。

  • --log-error=file_name

    指定されたファイルにエラーログを書き込みます。 セクション5.4.2「エラーログ」 を参照してください。

  • --mysqld-safe-log-timestamps

    このオプションは、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-lib=[lib_name]

    システムの 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/libtcmalloc ライブラリを検索します。 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/mysqlLD_PRELOAD を設定して割当てライブラリを指定します。

    Linux ユーザーは、次の行を my.cnf ファイルに追加することで、/usr/libtcmalloc パッケージがインストールされている任意のプラットフォームで libtcmalloc_minimal.so ライブラリを使用できます:

    [mysqld_safe]
    malloc-lib=tcmalloc

    特定の tcmalloc ライブラリを使用するには、そのフルパス名を指定します。 例:

    [mysqld_safe]
    malloc-lib=/opt/lib/libtcmalloc_minimal.so
  • --mysqld=prog_name

    ledir ディレクトリにある、起動するサーバープログラムの名前。 MySQL のバイナリ配布を使用するが、バイナリ配布以外のデータディレクトリがある場合には、このオプションが必要です。 mysqld_safe がサーバーを検出できない場合は、--ledir オプションを使用してサーバーのあるディレクトリへのパス名を示します。

    このオプションはコマンド行でのみ受け入れられ、オプションファイルでは受け入れられません。 systemd を使用するプラットフォームでは、MYSQLD_OPTS の値で値を指定できます。 セクション2.5.9「systemd を使用した MySQL Server の管理」を参照してください。

  • --mysqld-version=suffix

    このオプションは --mysqld オプションと類似していますが、サーバーのプログラム名のサフィクスだけを指定します。 ベース名は mysqld であると想定されます。 たとえば、--mysqld-version=debug を使用すると、mysqld_safeledir ディレクトリの mysqld-debug プログラムを起動します。 --mysqld-version の引数が空の場合、mysqld_safeledir ディレクトリの mysqld を使用します。

    このオプションはコマンド行でのみ受け入れられ、オプションファイルでは受け入れられません。 systemd を使用するプラットフォームでは、MYSQLD_OPTS の値で値を指定できます。 セクション2.5.9「systemd を使用した MySQL Server の管理」を参照してください。

  • --nice=priority

    サーバーのスケジュール優先順位を任意の値に設定するには、nice プログラムを使用します。

  • --no-defaults

    オプションファイルを読み取りません。 オプションファイルから不明のオプションを読み取ることが原因でプログラムの起動に失敗する場合、--no-defaults を使用して、オプションを読み取らないようにすることができます。 これを使用する場合は、コマンド行の最初のオプションでなければなりません。

    このオプションおよびその他のオプションファイルオプションの詳細は、セクション4.2.2.3「オプションファイルの処理に影響するコマンド行オプション」 を参照してください。

  • --open-files-limit=count

    mysqld が開くことができるファイル数。 オプション値は ulimit -n に渡されます。

    注記

    これが正しく機能するためには、mysqld_saferoot として起動する必要があります。

  • --pid-file=file_name

    mysqld がプロセス ID ファイルに使用するパス名。

  • --plugin-dir=dir_name

    プラグインディレクトリのパス名。

  • --port=port_num

    サーバーが TCP/IP 接続を待機するときに使用するポート番号。 root オペレーティングシステムユーザーがサーバーを起動しないかぎり、ポート番号は 1024 以上である必要があります。

  • --skip-kill-mysqld

    起動時に、未処理の mysqld プロセスの強制終了を試行しません。 このオプションは、Linux のみで機能します。

  • --socket=path

    サーバーがローカル接続を待機するときに使用する Unix ソケットファイル。

  • --syslog, --skip-syslog

    --syslog は、logger プログラムをサポートするシステムで、エラーメッセージが syslog に送信されるようにします。--skip-syslog は、syslog の使用を抑制し、メッセージはエラーログファイルに書き込まれます。

    syslog をエラーロギングに使用すると、すべてのログメッセージに daemon.err の機能/重大度が使用されます。

    これらのオプションを使用した mysqld ロギングの制御は非推奨になりました。 エラーログ出力をシステムログに書き込むには、セクション5.4.2.8「システムログへのエラーロギング」 の手順を使用します。 この機能を制御するには、server log_syslog_facility システム変数を使用します。

  • --syslog-tag=tag

    syslog へのロギングで、mysqld_safe および mysqld からのメッセージはそれぞれ mysqld_safe および mysqld 識別子を付けて書き込まれます。 識別子のサフィクスを指定するには、--syslog-tag=tag を使用します。これにより、識別子は mysqld_safe-tag および mysqld-tag に変更されます。

    このオプションを使用した mysqld ロギングの制御は非推奨になりました。 代わりにサーバーの log_syslog_tag システム変数を使用してください。 セクション5.4.2.8「システムログへのエラーロギング」を参照してください。

  • --timezone=timezone

    TZ タイムゾーン環境変数を、指定されたオプション値に設定します。 正当なタイムゾーン指定形式は、オペレーティングシステムのドキュメントを参照してください。

  • --user={user_name|user_id}

    mysqld サーバーを、名前 user_name または数字ユーザー ID user_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「システムログへのエラーロギング」を参照してください。