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