mysqld_multi は複数の mysqld プロセス管理を目的とした、Unix ソケット ファイルや TCP/IP ポートからの接続を処理するプログラムです。これは、サーバを起動、停止、そしてステータスを報告します。MySQL Instance Manager は複数サーバのマッピッグの選択的な方法です。MySQL Instance Manager に関する詳細は、項4.4. 「mysqlmanager — MySQL Instance Manager」 を参照してください。
mysqld_multi は
[mysqld
と名付けれらたグループを
N
]my.cnf
から検索します。(または
--config-file
オプションで指定しているファイル。) ここで、N
は正の整数です。この番号は次の説明でのオプション
グループ番号、あるいは
GNR
とします。グループ番号はオプション
グループを識別、起動、停止、またはステータス
レポートを取得するなど、サーバに指定する
mysqld_multi
の引数として使用します。(例は、項2.10.2.2. 「MySQL を自動的に起動・停止する」
を参照のこと。)
複数のサーバを使用する場合には、それぞれのサーバで、Unix
ソケット ファイルや TCP/IP
ポート番号への別々のオプションを使用する必要があります。複数サーバの環境で、どのオプションを一意とする必要があるのかについては、項4.12. 「同じマシン上での複数 MySQL サーバの実行」
を参照してください。
mysqld_multi を呼び出すには、次のシンタックスを使用します。
shell> mysqld_multi [options
] {start|stop|report} [GNR
[,GNR
] ...]
start
、 stop
、
report
は、どのオペレーションを実行するかを指します。サーバが
1
つの場合、または複数の場合でも指定したオペレーションを実行できますが、これは、オプションに従う
GNR
リストによります。リストがない場合は、mysqld_multi
がオプション
ファイル内ですべてのサーバのオペレーションを実行します。
GNR
はそれぞれに、オプション
グループ番号、またはグループ番号の範囲を表します。値は、オプション
ファイルのグループ名の末尾の数字になります。たとえば、
[mysqld17]
というグループ名の
GNR
は 17
です。番号の範囲を指定するには、最初と最後の番号をダッシュで区切ります。たとえば、GNR
値 を 10-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 では、次のオプションをサポートします。
ヘルプメッセージを表示し、終了。
代替オプション (設定)
ファイル。これは、mysqld_multi
が
[mysqld
オプション
グループを探すときに影響する。このオプションがない場合、すべてのオプションは通常の
N
]my.cnf
ファイルから読み取る。このオプションは、mysqld_multi
が独自のオプションを読むときには影響しない。つまり常に、[mysqld_multi]
グループを通常の my.cnf
ファイルから読み取る。
サンプルのオプション ファイルを表示する。
ログ ファイルを指定する。このファイルが存在していれば、すべてがログ ファイルへの記録になる。
サーバ停止 (シャットダウン) に使用する mysqladmin バイナリ。
使用する mysqld
バイナリ。ノート: このオプションに
mysqld_safe
を値として指定することもできる。mysqld_safe
をサーバの起動に使用する場合は、[mysqld
オプション グループに相当する
N
]mysqld
または
ledir
などのオプションを含めることができる。これらのオプションは、mysqld_safe
が起動するサーバの名前とサーバが置かれているディレクトリのパスを指す。(これらのオプションに関する説明は、項4.3.1. 「mysqld_safe — MySQL サーバ スタートアップ スクリプト」
を参照のこと。) 次は例示。
[mysqld38] mysqld = mysqld-debug ledir = /opt/local/mysql/libexec
ログ
ファイルではなく、stdout
にログを書き込む。デフォルトはログ
ファイルへの出力。
mysqladmin を呼び出すときに使う MySQL アカウント ユーザのパスワード。ノート: MySQL プログラムの場合とは異なり、パスワード値はこのオプションではオプショナルではない。
サイレント モード、警告を無効にする。
MySQL サーバを TCP/IP ポートまたは Unix
ソケット
ファイルを経由して接続する。ソケット
ファイルがない場合でも、サーバは実行可能であるが、TCP/IP
ポートからだけアクセスできる。デフォルトでは、Unix
ソケット
ファイルを使用した接続。このオプションは
stop
と report
の操作に影響する。
mysqladmin を呼び出すときの MySQL アカウントのユーザ名。
冗長にする。(出力をより詳細にする。)
バージョン情報を表示して、終了する。
次は、mysqld_multi に関するノートです。
重要:mysqld_multi コマンドを使用する前には、mysqld サーバへ渡すオプションの意味と、なぜ、mysqld プロセスを区切る必要があるのかを十分に理解してください。同じデータ ディレクトリで複数の mysqld サーバを使用することには危険が伴います。これを複数のサーバを使用するときは、データ ディレクトリを別々に分けてください。同じデータ ディレクトリで複数のサーバを使用することが、スレッド システム のパフォーマンス改善にはなりません。項4.12. 「同じマシン上での複数 MySQL サーバの実行」 を参照してください。
重要
:それぞれのサーバのデータ
ディレクトリが Unix
アカウントから完全にアクセスできるかどうかを確かめてください。このアカウントは特定の
mysqld
プロセスを起動するものです。これに、状況を完全に
理解していない場合は、Unix
root
アカウントを
使用しない
でください。項4.6.5. 「ユーザによる MySQL の実行」
を参照してください。
mysqld サーバを
(mysqladmin プログラムで)
終了するときに使用する MySQL
アカウントが、それぞれのサーバで同一のユーザ名とパスワードであることを確かめてください。そのアカウントには
SHUTDOWN
権限があることも確かめてください。管理するサーバで、管理アカウント用に異なるユーザ名とパスワードがにある場合は、それぞれのサーバで同一のユーザ名とパスワードのアカウントを作成してください。たとえば、共通の
multi_admin
アカウントをセットアップします。これには、次のコマンドをそれぞれのサーバで実行します。
shell>mysql -u root -S /tmp/mysql.sock -p
Enter password: mysql>GRANT SHUTDOWN ON *.*
->TO 'multi_admin'@'localhost' IDENTIFIED BY 'multipass';
項4.7.2. 「権限システムの機能」
を参照してください。これは、それぞれの
mysqld
サーバで行ってください。それぞれにアクセスするときに、接続パラメータを適宜に変更します。ノート:
アカウント名のホスト名の部分は、mysqld_multi
を実行する所のホストから
multi_admin
として接続できるようにします。
Unix ソケット ファイルと TCP/IP ポート番号は、すべての mysqld とは異なる必要があります。
--pid-file
オプションはとても重要です。たとえば、--mysqld=mysqld_safe
などのように、mysqld
を起動するときに mysqld_safe
を使用している場合と特に重要です。どの
mysqld
コマンドにも独自のプロセス ID
ファイルがあります。mysqld
ではなく、mysqld_safe
を使用するということには、mysqld_safe
は mysqld
のプロセスを監視しているため、kill
-9
を使用したシグナル送信や、segmentation
fault
のようなことがあると、プロセスを終了し、再起動するという利点があります。mysqld_safe
スクリプトは特定の場所から開始しなければならいことがあります。これは、mysqld_multi
を実行する前に、特定のディレクトリに位置を変更しなけれならない可能性がある、ということです。起動時に問題がある場合は、
mysqld_safe
スクリプトを調べ、特に次のラインをチェックください。
---------------------------------------------------------------- MY_PWD=`pwd` # Check if we are starting this relative (for the binary release) if test -d $MY_PWD/data/mysql -a \ -f ./share/mysql/english/errmsg.sys -a \ -x ./bin/mysqld ----------------------------------------------------------------
これらのラインでテストすると成功しますが、そうでない場合、つまり問題がある場合は、項4.3.1. 「mysqld_safe — MySQL サーバ スタートアップ スクリプト」 を参照してください。
--user
オプションを
mysqld に使用する場合は、
Unix root
ユーザで
mysqld_multi
スクリプトを実行する必要があります。このオプションがオプション
ファイルにあるかどうかは問題ではなく、もしスーパーユーザではない人が、mysqld
プロセスを Unix
アカウントで立ち上げると、警告が出ます。
次の例は、mysqld_multi
と使用するオプション
ファイルの設定方法について示します。mysqld
プログラムが開始または終了する順番は、オプション
ファイルで指定する順番によります。グループ番号が完全なシーケンスである必要はありません。例では、最初と
5 番目の
[mysqld
グループは内部的に省略しています。これは、オプション
ファイルで 「gaps」
があっても構わないというイラストレーションです。これによって、柔軟性が出ます。
N
]
# 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
詳細は 項3.3.2. 「オプションファイルの使用」 を参照してください。