mysqld_multi
は、さまざまな Unix
ソケットおよび TCP/IP
ポートをリッスンする複数の
mysqld
プロセスを管理するためのプログラムです。
このプログラムは、[mysqld#]
という名前のグループを
my.cnf
(または
--config-file=...
オプションで指定されたファイル)から検索します。ここで、#
は 1
で始まる任意の正の数です。この番号は、以下の説明ではオプショングループ番号、または
GNR
と呼びます。グループ番号はオプショングループを識別し、起動したり、停止したり、またはステータス情報を取得するサーバを指定する
mysqld_multi
の引数として使用します。これらのグループに含まれるオプションは、mysqld
の起動に使用される通常の [mysqld]
グループと同じです(項2.4.3. 「MySQL を自動的に起動および停止する」
などを参照してください)。ただし、mysqld_multi
では、各グループに、各 mysqld
プロセスで使用されるポートやソケットなどを指定するオプションが含まれていることが必要です。
mysqld_multi
は、以下の構文で起動します。
mysqld_multi [OPTIONS] {start|stop|report} [GNR,GNR,GNR...] か mysqld_multi [OPTIONS] {start|stop|report} [GNR-GNR,GNR,GNR-GNR,...]
各 GNR は、オプショングループ番号を表します。任意の GNR を開始、停止、または報告でき、複数の GNR を同時に開始、停止、または報告することもできます。オプション設定ファイルの設定例を表示するには、以下のコマンドを実行します。
shell> mysqld_multi --example
リスト内の GNR の値はコンマで区切ったり、ダッシュ記号で結合できます。結合の場合、GNR1-GNR2 間のすべての GNR が対象になります。GNR 引数を指定しなかった場合、リスト内のすべてのグループが起動、停止、または報告されます。注意: GNR リストには空白スペースを使用できません。空白スペースを挿入すると、スペースの後は無視されます。
mysqld_multi
は、以下のオプションをサポートします。
代替設定ファイル。注意:
これは、このプログラムのオプション([mysqld_multi]
グループ)には影響せず、[mysqld#]
グループにのみ影響する。このオプションがない場合、通常の
my.cnf
ファイルからすべてが検索される。
--example
--help
--log=...
--mysqladmin=...
--mysqld=...
使用する mysqld
バイナリ。注意: このオプションに
mysqld_safe
を指定することもできる。このオプションは、mysqld
に渡される。環境変数 PATH
が
mysqld
を指定していることを確認するか、mysqld_safe
を修正する。
--no-log
--password=...
--tcp-ip
Unix ソケットではなく、TCP/IP ポートで各 MySQL サーバに接続する。これは、サーバの停止と報告に影響する。ソケットファイルがなくてもサーバはまだ実行可能であるが、TCP/IP ポート経由のアクセスに限られる。デフォルトでは、Unix ソケットが使用される。
--user=...
--version
バージョン番号を出力して終了する。
mysqld_multi
に関する補足コメント
mysqladmin
プログラムなどを使用して
mysqld
サービスを停止する MySQL
ユーザのパスワードとユーザ名が、アクセスされるすべてのデータディレクトリ(mysql
データベースへのアクセス)用のパスワードとユーザ名と同じであることを確認すること。また、ユーザに
SHUTDOWN
権限があることも確認する。多くのデータディレクトリがあり、MySQL
root
ユーザのパスワードが異なる多くの
mysql
データベースがある場合、以下のように同じパスワードを使用する共通
multi_admin
ユーザを作成できる。以下、その例。
shell> mysql -u root -S /tmp/mysql.sock -proot_password -e
"GRANT SHUTDOWN ON *.* TO multi_admin@localhost IDENTIFIED BY 'multipass'"
See 項4.3.6. 「権限システムはどのように機能するか」。
各データディレクトリで実行する各
mysqld
に対してこのコマンドを実行する必要がある(ソケット
-S=...
のみ変更する)。
pid-file
は、mysqld_safe
を使用して
mysqld
を起動する場合(たとえば、--mysqld=mysqld_safe
)非常に重要である。すべての
mysqld
に独自の
pid-file
が必要である。ここで
mysqld
を直接使用せずに
mysqld_safe
を使用する利点は、kill -9
で送信されるシグナルや、その他セグメント化エラー(MySQL
では発生してはいけないことだが)などによって
mysqld
プロセスが強制終了した場合でも、mysqld_safe
がすべての mysqld
プロセスを
``保護'' し、再起動することである。注意:
mysqld_safe
スクリプトは、特定の場所から起動することが必要な場合がある。つまり、mysqld_multi
を開始する前に、特定のディレクトリに
cd
することが必要な場合がある。起動時に問題が発生した場合は、mysqld_safe
スクリプトを確認のこと。特に以下の行をチェックする。
-------------------------------------------------------------------------- MY_PWD=`pwd` Check if we are starting this relative (for the binary release) if test -d /data/mysql -a -f ./share/mysql/english/errmsg.sys -a \ -x ./bin/mysqld --------------------------------------------------------------------------
See 項4.8.2. 「mysqld_safe
(mysqld
のラッパ)」。
上記のテストがうまくいかなければ、問題が発生する可能性がある。
同じデータディレクトリで、複数の
mysqld
サーバを開始することには危険が伴う。完全に理解していない限り、別々のデータディレクトリを使用すべきである。
各 mysqld
に対して異なるソケットファイルと TCP/IP
ポートが指定されていることが必要である。
1 番目と 5 番目の mysqld
グループは、例から意図的に除外してある。設定ファイルには
'空行'
を入れておくことが可能である。これにより、柔軟性が高まる。mysqlds
の開始と停止の順序は、設定ファイルでの順序に依存する。
このプログラムで GNR
を使用して特定グループを参照するには、グループ名の最後で番号を指定する。
たとえば、[mysqld17]
という名前のグループの GNR は 17 である。
mysqld
で --user
オプションを使用するには、mysqld_multi
スクリプトを Unix root
ユーザとして実行する必要がある。設定ファイルにこのオプションがあっても問題はない。スーパーユーザでないユーザが自分の
Unix アカウントで mysqld
を開始している場合でも、警告が発生するだけである。重要:
特定の mysqld
プロセスを開始しているその
Unix ユーザが pid-file
およびデータディレクトリの読み取り権限と書き込み権限を(データディレクトリの場合は実行権限も)持っていることを確認すること。完全に理解していない限り、この目的で
Unix root
アカウントを使用してはいけない。
最重要:
mysqld
サーバに渡されるオプションの意味、および
mysqld
プロセスを個別に使用する方が望ましい理由を理解しておくこと。同じデータディレクトリで複数のサーバを起動しても、スレッドシステムではパフォーマンスの向上は望めない。
See 項4.2. 「同じマシン上で複数の MySQL サーバを実行する」。
以下、mysqld_multi
の設定が含まれる設定ファイルの例です。
# This file should probably be in your home dir (~/.my.cnf) or /etc/my.cnf # Version 2.1 by Jani Tolonen [mysqld_multi] mysqld = /usr/local/bin/mysqld_safe mysqladmin = /usr/local/bin/mysqladmin user = multi_admin password = multipass [mysqld2] socket = /tmp/mysql.sock2 port = 3307 pid-file = /usr/local/mysql/var2/hostname.pid2 datadir = /usr/local/mysql/var2 language = /usr/local/share/mysql/english user = john [mysqld3] socket = /tmp/mysql.sock3 port = 3308 pid-file = /usr/local/mysql/var3/hostname.pid3 datadir = /usr/local/mysql/var3 language = /usr/local/share/mysql/swedish user = monty [mysqld4] socket = /tmp/mysql.sock4 port = 3309 pid-file = /usr/local/mysql/var4/hostname.pid4 datadir = /usr/local/mysql/var4 language = /usr/local/share/mysql/estonia user = tonu [mysqld6] socket = /tmp/mysql.sock6 port = 3311 pid-file = /usr/local/mysql/var6/hostname.pid6 datadir = /usr/local/mysql/var6 language = /usr/local/share/mysql/japanese user = jani
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.