MySQL 5.1 リファレンスマニュアル :: 4 データベース管理 :: 4.3 MySQL サーバ スタートアップ プログラム :: 4.3.3 mysqld_multi — 複数のMySQL サーバ管理
« 4.3.2 mysql.server — MySQL サーバ スタートアップ スクリプト

4.4 mysqlmanager — MySQL Instance Manager »
Section Navigation      [Toggle]
  • 4.3 MySQL サーバ スタートアップ プログラム
  • 4.3.1 mysqld_safe — MySQL サーバ スタートアップ スクリプト
  • 4.3.2 mysql.server — MySQL サーバ スタートアップ スクリプト
  • 4.3.3 mysqld_multi — 複数のMySQL サーバ管理

4.3.3. mysqld_multi — 複数のMySQL サーバ管理

mysqld_multi は複数の mysqld プロセス管理を目的とした、Unix ソケット ファイルや TCP/IP ポートからの接続を処理するプログラムです。これは、サーバを起動、停止、そしてステータスを報告します。MySQL Instance Manager は複数サーバのマッピッグの選択的な方法です。MySQL Instance Manager に関する詳細は、項4.4. 「mysqlmanager — MySQL Instance Manager」 を参照してください。

mysqld_multi は [mysqldN] と名付けれらたグループを 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 では、次のオプションをサポートします。

  • --help

    ヘルプメッセージを表示し、終了。

  • --config-file=file_name

    代替オプション (設定) ファイル。これは、mysqld_multi が [mysqldN] オプション グループを探すときに影響する。このオプションがない場合、すべてのオプションは通常の my.cnf ファイルから読み取る。このオプションは、mysqld_multi が独自のオプションを読むときには影響しない。つまり常に、[mysqld_multi] グループを通常の my.cnf ファイルから読み取る。

  • --example

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

  • --log=file_name

    ログ ファイルを指定する。このファイルが存在していれば、すべてがログ ファイルへの記録になる。

  • --mysqladmin=prog_name

    サーバ停止 (シャットダウン) に使用する mysqladmin バイナリ。

  • --mysqld=prog_name

    使用する mysqld バイナリ。ノート: このオプションに mysqld_safe を値として指定することもできる。mysqld_safe をサーバの起動に使用する場合は、[mysqldN] オプション グループに相当する mysqld または ledir などのオプションを含めることができる。これらのオプションは、mysqld_safe が起動するサーバの名前とサーバが置かれているディレクトリのパスを指す。(これらのオプションに関する説明は、項4.3.1. 「mysqld_safe — MySQL サーバ スタートアップ スクリプト」 を参照のこと。) 次は例示。

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

    ログ ファイルではなく、stdout にログを書き込む。デフォルトはログ ファイルへの出力。

  • --password=password

    mysqladmin を呼び出すときに使う MySQL アカウント ユーザのパスワード。ノート: MySQL プログラムの場合とは異なり、パスワード値はこのオプションではオプショナルではない。

  • --silent

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

  • --tcp-ip

    MySQL サーバを TCP/IP ポートまたは Unix ソケット ファイルを経由して接続する。ソケット ファイルがない場合でも、サーバは実行可能であるが、TCP/IP ポートからだけアクセスできる。デフォルトでは、Unix ソケット ファイルを使用した接続。このオプションは stop と report の操作に影響する。

  • --user=user_name

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

  • --verbose

    冗長にする。(出力をより詳細にする。)

  • --version

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

次は、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 番目の [mysqldN] グループは内部的に省略しています。これは、オプション ファイルで 「gaps」 があっても構わないというイラストレーションです。これによって、柔軟性が出ます。

# 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. 「オプションファイルの使用」 を参照してください。

Copyright © 1997, 2010, Oracle and/or its affiliates. All rights reserved. Legal Notices
Top / Previous / Next / Up / Table of Contents
© 2010, Oracle Corporation and/or its affiliates