Unix で複数のサーバを実行する最も簡単な方法は、異なる TCP/IP ポートと Unix ソケット ファイルでサーバをコンパイルすることです。これは、それぞれが異なるネットワークのインターフェースとしてリストします。それぞれのインストールに対して、異なるベース ディレクトリにコンパイルすることも、コンパイルしたデータ ディレクトリ、ログ ファイル、PID ファイル場所を、サーバごとに自動的に切り離す結果を生みます。
ここでは、既存の MySQL 5.0.19
サーバをデフォルトの TCP/IP ポート番号 (3306) と
Unix ソケットファイル
(/tmp/mysql.sock
)
で設定していると想定します。MySQL
5.1.15-beta
サーバの設定で、異なる操作パラメータを持たせるには、configure
コマンドを次のように使用します。
shell>./configure --with-tcp-port=
port_number
\--with-unix-socket-path=
file_name
\--prefix=/usr/local/mysql-5.1.15-beta
ここで、port_number
と
file_name
は、デフォルトの
TCP/IP ポート番号と Unix ソケット
ファイルのパスとは異なる必要があります。--prefix
値は、既存の MySQL
をインストールしたディレクトリとは異なるディレクトリに指定します。
MySQL サーバに特定のポート番号をリストしている場合は、次のコマンドを使用して、重要な設定可能変数において、ベース ディレクトリおよび Unix ソケット ファイル名を含め、どの操作パラメータをそこで使用しているかを確認します。
shell> mysqladmin --host=host_name
--port=port_number
variables
このコマンドで表示する情報を元に、追加サーバを設定するときに 使用できない オプション値がどれであるかを確認します。
ノート: localhost
をホスト名として指定する場合、mysqladmin
は TCP/IP ではなく Unix ソケット
ファイルでの接続に初期化します。MySQL 4.1
以降では、使用する接続プロトコルを、--protocol={TCP|SOCKET|PIPE|MEMORY}
オプションを使用して指定することができます。
新しい MySQL サーバを、単に異なる Unix ソケット ファイルと TCP/IP ポート番号で起動するためだけにコンパイルする必要はありません。同一のサーバのバイナリを使用して、ランタイムに別々のパラメータ値で、それぞれの起動 (呼び出し) を行うことができます。これを行う 1 つの方法としては、次のように、コマンドライン オプションを使用します。
shell> mysqld_safe --socket=file_name
--port=port_number
2 つ目のサーバを起動するには、異なる値を
--socket
と --port
のオプションで使用して、--datadir=
オプションを mysqld_safe
に渡します。これにより、このサーバは異なるデータ
ディレクトリを使用するようになります。
path
同様の効果を成す別の方法としては、環境変数を使用して、Unix ソケット ファイル名と TCP/IP ポート番号をセットします。
shell>MYSQL_UNIX_PORT=/tmp/mysqld-new.sock
shell>MYSQL_TCP_PORT=3307
shell>export MYSQL_UNIX_PORT MYSQL_TCP_PORT
shell>mysql_install_db --user=mysql
shell>mysqld_safe --datadir=/path/to/datadir &
テスト用で 2 番目のサーバを起動するには、この方法が一番早くできます。この手順の利点は、環境変数の設定で、同じシェルから呼び出すクライアント プログラムにも適用できるため、クライアント接続は自動的に 2 番目のサーバになります。
項2.14. 「環境変数」 では、mysqld に反映する環境変数のリストについて説明しています。
自動的なサーバ実行では、ブートしたときに実行する起動スクリプトが次のコマンドが、それぞれのコマンドに該当するオプション ファイルのパスで、それぞれのサーバの対して一度実行します。
shell> mysqld_safe --defaults-file=file_name
それぞれのオプション ファイルには、特定のサーバ固有のオプション値があります。
Unix では、この mysqld_multi スクリプトで複数のサーバを起動することが 1 つの方法といえます。項4.3.3. 「mysqld_multi — 複数のMySQL サーバ管理」 を参照してください。