場合によっては、複数の mysqld サーバを同一のマシンで起動することがあります。たとえば、既存の稼働環境のままにして、新しい MySQL リリースをテストしたい場合が考えられます。また、ユーザごとに異なる mysqld サーバへのアクセス権を与える場合などもあります(顧客ごとに独立した MySQL インストールを提供するインターネット サービス プロバイダなど)。
単一のマシン上で複数のサーバを実行するには、いくつかのパラメータでサーバ固有の値を設定する必要があります。これらはコマンドラインまたはオプション設定ファイルで設定します。プログラム オプションに関しては、項3.3. 「プログラム・オプションの指定」 を参照してください。
少なくとも、次のオプションをサーバごとに変えます。
--port=
port_num
--port
は、TCP/IP
接続のポート番号を制御する。
--socket=
path
--socket
で、Unix のソケット
ファイル パス、または Windows
の名前付きパイプを制御する。Windows
では、名前付きパイプ接続をサポートしているサーバに対して、独特のパイプ名を指定する必要がある。
--shared-memory-base-name=
name
Windows のみで使用可能。Windows で使用する共有メモリ名を指し、共有メモリ経由でクライアントの接続を許可する。共有メモリ接続をサポートするサーバに対して、共有メモリに独特な名前を指定する必要がある。
--pid-file=
file_name
Unix のみで使用可能。サーバがプロセス ID を書き込むファイルのパス名を指定する。
次のログ ファイル オプションを使用する場合は、それぞれのサーバに対して異なる値を設定する。
--log=
file_name
--log-bin=
file_name
--log-update=
file_name
--log-error=
file_name
項4.11.6. 「ログ ファイルの保守」で、ログ ファイルのオプションについて参照してください。
パフォーマンスを高めるには、次のオプションをサーバに別々に指定して、物理ディスク間の負荷を分けます。
--tmpdir=
path
複数のテンポラリ ディレクトリを置くと、どの MySQL サーバにどの一時ファイルが属するのかわかりやすなるため、お勧めです。
データ
ディレクトリについても、それぞれのサーバで異なるディレクトリを使用するようにします。これは
--datadir=
オプションで指定します。
path
警告:2
つのサーバから同じデータベースのデータを更新しないでください。使用しているオペレーティング
システムで障害からの保護ができるシステム
ロックをサポートしていない場合、予期しない事態が発生する可能性があります。また、複数のサーバが同じデータ
ディレクトリを使用し、ログを有効化している場合、適切なオプションを使用して、それぞれのサーバに異なるログ
ファイル名を指定する必要があります。そうしないと、サーバ同士で同じファイルにログします。このセットアップは、MyISAM
まはた MERGE
テーブルでのみ機能します。他のストレージ
エンジンでは使用できません。
サーバ間でのデータ ディレクトリ共有に関するこの警告は、NFS 環境にも当てはまります。NFS 環境で複数の MySQL サーバに同じデータ ディレクトリへのアクセスを認めることは しないでください。
重要な問題として、NFS は速度のボトルネック。NFS にはそのような使用目的はない。
2
つ以上のサーバが互いに干渉しないようにすることが困難。通常、NFS
ファイルロックは lockd
デーモンで処理するが、現在のところ、どのような状況でも
100%
の信頼性でロックを実行できるプラットフォームは存在しない。
NFS で複数のサーバにデータ ディレクトリを共有することは賢明ではありません。 また、複数の CPU を持つ 1 台のコンピュータを用意し、スレッドを効率的に処理するオペレーティング システムを使用してください。
複数の MySQL
インストールを異なる場所にする場合、--basedir=
オプションを使用して、それぞれのサーバに対してベース
ディレクトリを指定し、それぞれのサーバがお互いに別のデータ
ディレクトリ、ログ ファイル、および PID
ファイルを使用するようにします(これらの値のデフォルトは、ベース
ディレクトリと相対的に決定します)。そして、他にも指定する必要があるオプションとして、path
--socket
と --port
があります。たとえば、バイナリ配布の
.tar
ファイルを使用して MySQL
の複数のバージョンをインストールするとします。これらを別々の場所にインストールすれば、対応するベース
ディレクトリ下で ./bin/mysqld_safe
コマンドを使用して、インストールしたサーバを別々に起動できます。
mysqld_safe が、mysqld
に渡す適切な --basedir
オプションを特定するため、--socket
オプションと --port
オプションを
mysqld_safe
に設定するだけで済みます。
次のセクションで説明するように、環境変数の設定または適切なコマンドライン
オプションの指定で、追加サーバを起動することが可能です。ただし、より永続的に複数のサーバを実行する必要がある場合には、オプション設定ファイルを使用して、それぞれサーバ固有のオプション値を指定する方法が便利です。これには、--defaults-file
オプションを活用します。