MySQL 8.0 リファレンスマニュアル


MySQL 8.0 リファレンスマニュアル  /  ...  /  mysqld_multi — 複数の MySQL サーバーの管理

4.3.4 mysqld_multi — 複数の MySQL サーバーの管理

mysqld_multi は、Unix ソケットファイルや TCP/IP ポートでの接続を待機する複数の mysqld プロセスを管理するためのものです。 サーバーの起動または停止、現在のステータスのレポートを実行できます。

注記

一部の Linux プラットフォームでは、RPM または Debian パッケージからの MySQL インストールに、MySQL サーバーの起動と停止を管理するための systemd サポートが含まれています。 これらのプラットフォームでは、mysqld_multi は不要であるためインストールされません。 systemd を使用した複数の MySQL インスタンスの処理の詳細は、セクション2.5.9「systemd を使用した MySQL Server の管理」 を参照してください。

mysqld_multi[mysqldN] という名前のグループを my.cnf (または --defaults-file オプションで指定されたファイル) から検索します。 N は任意の正の整数です。 この数字は、次の説明ではオプショングループ番号、または GNR といいます。 グループ番号は、それぞれのオプショングループを識別し、起動、停止、またはステータスレポート取得の対象となるサーバーを指定するために、mysqld_multi の引数として使用されます。 これらのグループにリストされるオプションは、mysqld を起動するために [mysqld] グループで使用するものと同じです。 (たとえばセクション2.10.5「MySQL を自動的に起動および停止する」などを参照してください。) ただし、複数のサーバーを使用する場合は、Unix ソケットファイルや TCP/IP ポート番号などに関してそれぞれが独自のオプション値を使用する必要があります。 複数サーバーの環境で、どのオプションを一意とする必要があるのかについては、セクション5.8「1 つのマシン上での複数の MySQL インスタンスの実行」を参照してください。

mysqld_multi を呼び出すには、次の構文を使用します。

shell> mysqld_multi [options] {start|stop|reload|report} [GNR[,GNR] ...]

start, stop, reload (停止して再起動) および report は、実行する操作を示します。 オプション名に続く GNR リストに従って、指定した操作を単一のサーバーまたは複数のサーバーで実行できます。 リストがない場合は、mysqld_multi はオプションファイル内のすべてのサーバーに対して操作を実行します。

GNR 値は、オプショングループ番号またはグループ番号の範囲を表します。 値は、オプションファイル内のグループ名の最後の数字とします。 たとえば、[mysqld17] という名前のグループの GNR17 です。 番号の範囲を指定するには、最初と最後の番号をダッシュで区切ります。 GNR10-13 は、[mysqld10] から [mysqld13] のグループを表します。 コマンド行で、複数のグループまたはグループの範囲を、カンマで区切って指定できます。 GNR リストには空白文字 (スペースまたはタブ) を使用してはいけません。空白文字からあとにあるものはすべて無視されます。

次のコマンドは [mysqld17] というオプショングループを使用して単一のサーバーを起動します。

shell> mysqld_multi start 17

次のコマンドは、[mysqld8] および [mysqld10] から [mysqld13] までのオプショングループを使用して複数のサーバーを停止します。

shell> mysqld_multi stop 8,10-13

オプションファイルをセットアップする方法の例として、次のコマンドを使用します。

shell> mysqld_multi --example

mysqld_multi は次のようにオプションファイルを検索します。

  • --no-defaults では、オプションファイルは読み取られません。

  • --defaults-file=file_name では、指定されたファイルのみが読み取られます。

  • それ以外の場合は、--defaults-extra-file=file_name オプションで指定されたファイル (指定されている場合) を含む、標準の場所リスト内のオプションファイルが読み取られます。 (オプションが複数回指定された場合は、最後の値が使用されます。)

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

読み取られるオプションファイルでは、[mysqld_multi] および [mysqldN] オプショングループが検索されます。 [mysqld_multi] グループは、mysqld_multi 自身へのオプションに使用できます。[mysqldN] グループは、mysqld の特定のインスタンスに渡されるオプションに使用できます。

[mysqld] グループまたは [mysqld_safe] グループは、mysqld または mysqld_safe のすべてのインスタンスによって読み取られる共通オプションに使用できます。 --defaults-file=file_name オプションを指定して、そのインスタンスに別の構成ファイルを使用できます。この場合、そのファイルの[mysqld]または[mysqld_safe]グループがそのインスタンスに使用されます。

mysqld_multi は次のオプションをサポートします。

  • --help

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

  • --example

    サンプルのオプションファイルを表示します。

  • --log=file_name

    ログファイルの名前を指定します。 ファイルが存在する場合は、ログ出力はそこに追加されます。

  • --mysqladmin=prog_name

    サーバーの停止に使用する mysqladmin バイナリ。

  • --mysqld=prog_name

    使用する mysqld バイナリ。 このオプションの値として mysqld_safe を指定することもできます。 mysqld_safe を使用してサーバーを起動する場合は、対応する [mysqldN] オプショングループに mysqld オプションまたは ledir オプションを含めることができます。 これらのオプションは、mysqld_safe が起動するべきサーバーの名前と、サーバーがあるディレクトリのパス名を示します。 (これらのオプションに関する説明は、セクション4.3.2「mysqld_safe — MySQL サーバー起動スクリプト」を参照してください。) 例:

    [mysqld38]
    mysqld = mysqld-debug
    ledir  = /opt/local/mysql/libexec
  • --no-log

    ログファイルではなく、stdout にログを出力します。 デフォルトでは、出力はログファイルに送られます。

  • --password=password

    mysqladmin を呼び出すときに使う MySQL アカウントのパスワード。 ほかの MySQL プログラムとは異なり、このオプションではパスワード値はオプションではありません。

  • --silent

    サイレントモード。警告を無効にします。

  • --tcp-ip

    Unix ソケットファイルではなく TCP/IP ポートを介して各 MySQL サーバーに接続します。 (ソケットファイルがない場合でもサーバーは稼働している可能性がありますが、TCP/IP ポートからのみアクセスできます。) 接続はデフォルトでは Unix ソケットファイルを使用して行われます。 このオプションは stop 操作と report 操作に影響します。

  • --user=user_name

    mysqladmin を呼び出すときに使う MySQL アカウントのユーザー名。

  • --verbose

    より詳細になります。

  • --version

    バージョン情報を表示して終了します。

mysqld_multi に関する注意:

  • もっとも重要: mysqld_multi を使用する前に、mysqld サーバーに渡されるオプションの意味と、なぜ独立した mysqld プロセスが必要なのかを確実に理解してください。 同じデータディレクトリで複数の mysqld サーバーを使用することの危険性に注意してください。 特別な意図がないかぎり、独立のデータディレクトリを使用してください。 スレッドを使用するシステムでは、同じデータディレクトリで複数のサーバーを起動してもパフォーマンスは改善されませんセクション5.8「1 つのマシン上での複数の MySQL インスタンスの実行」を参照してください。

    重要

    各サーバーのデータディレクトリが、その特定の mysqld を開始した Unix アカウントから完全にアクセス可能であることを確認してください。 特別な意図がないかぎり、Unix root アカウントをこれに使用しないでくださいセクション6.1.5「MySQL を通常ユーザーとして実行する方法」を参照してください。

  • mysqld サーバーを (mysqladmin プログラムで) 停止するのに使用する MySQL アカウントが、各サーバーに対して同じユーザー名とパスワードを持つことを確認してください。 また、そのアカウントには SHUTDOWN 権限があることも確かめてください。 管理対象のサーバーの管理アカウントのユーザー名またはパスワードが異なる場合は、各サーバーに同じユーザー名とパスワードを持つアカウントを作成するとよいでしょう。 たとえば、次のコマンドをそれぞれのサーバーで実行することにより、共通の multi_admin アカウントをセットアップできます。

    shell> mysql -u root -S /tmp/mysql.sock -p
    Enter password:
    mysql> CREATE USER 'multi_admin'@'localhost' IDENTIFIED BY 'multipass';
    mysql> GRANT SHUTDOWN ON *.* TO 'multi_admin'@'localhost';

    セクション6.2「アクセス制御とアカウント管理」を参照してください。 これは、それぞれの mysqld サーバーで行う必要があります。 それぞれに接続する場合、接続パラメータを適切に変更します。 アカウント名のホスト名部分では、mysqld_multi を実行するホストから multi_admin として接続できる必要があります。

  • Unix ソケットファイルと TCP/IP ポート番号は、すべての mysqld で異なる必要があります。 (または、ホストに複数のネットワークアドレスがある場合は、異なるサーバーが異なるインタフェースをリスニングするように bind_address システム変数を設定できます。)

  • mysqld_safe を使用して mysqld を起動している場合 (たとえば --mysqld=mysqld_safe)、--pid-file オプションは非常に重要です。すべての mysqld が独自のプロセス ID ファイルを持っているべきです。 mysqld ではなく、mysqld_safe を使用することの利点は、mysqld_safemysqld のプロセスをモニターして、kill -9 を使用したシグナル送信や、セグメンテーション違反などその他の原因でプロセスが終了した場合に、再起動するということです。

  • --user オプションを mysqld に対して使用する場合がありますが、そのためには mysqld_multi スクリプトを Unix のスーパーユーザー (root) として実行する必要があります。 このオプションがオプションファイルにあるかどうかは問題ではなく、もしスーパーユーザーではない人が、mysqld プロセスを自分の Unix アカウントで起動すると、警告が出ます。

次の例は、mysqld_multi とともに使用するオプションファイルの設定方法を示します。 mysqld プログラムが起動または終了する順序は、オプションファイルで指定する順序によります。 グループ番号は、切れ目のないシーケンスの形式にする必要はありません。 例では、最初と 5 番目の [mysqldN] グループは意図的に省略しています。これは、オプションファイルでギャップがあっても構わないことを示しています。 これにより、柔軟性が高まります。

# This is an example of a my.cnf file for mysqld_multi.
# Usually this file is located in home dir ~/.my.cnf or /etc/my.cnf

[mysqld_multi]
mysqld     = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
user       = multi_admin
password   = my_password

[mysqld2]
socket     = /tmp/mysql.sock2
port       = 3307
pid-file   = /usr/local/mysql/data2/hostname.pid2
datadir    = /usr/local/mysql/data2
language   = /usr/local/mysql/share/mysql/english
user       = unix_user1

[mysqld3]
mysqld     = /path/to/mysqld_safe
ledir      = /path/to/mysqld-binary/
mysqladmin = /path/to/mysqladmin
socket     = /tmp/mysql.sock3
port       = 3308
pid-file   = /usr/local/mysql/data3/hostname.pid3
datadir    = /usr/local/mysql/data3
language   = /usr/local/mysql/share/mysql/swedish
user       = unix_user2

[mysqld4]
socket     = /tmp/mysql.sock4
port       = 3309
pid-file   = /usr/local/mysql/data4/hostname.pid4
datadir    = /usr/local/mysql/data4
language   = /usr/local/mysql/share/mysql/estonia
user       = unix_user3

[mysqld6]
socket     = /tmp/mysql.sock6
port       = 3311
pid-file   = /usr/local/mysql/data6/hostname.pid6
datadir    = /usr/local/mysql/data6
language   = /usr/local/mysql/share/mysql/japanese
user       = unix_user4

セクション4.2.2.2「オプションファイルの使用」を参照してください。


関連キーワード:  mysqld, サーバー, multi, グループ, プログラム, 起動, 複数, file, local, safe