状況によっては、MySQL の複数インスタンスを単一マシン上で実行する場合もあります。既存の本番設定をそのままにして、新しい MySQL リリースをテストすることもできます。または、ユーザーが自分で管理する異なる mysqld サーバーへのアクセス権を別々のユーザーに与える場合もあります。(たとえば、ユーザーは独立した MySQL インストールを異なるカスタマ用に提供するインターネットサービスプロバイダである場合もあります。)
インスタンスごとに異なる MySQL Server バイナリを使用したり、複数のインスタンスに対して同じバイナリを使用したり、この 2 つの方法を組み合わせたりすることが可能です。たとえば、MySQL 5.5 と MySQL 5.6 からそれぞれサーバーを実行し、異なるバージョンによって所定のワークロードがどのように処理されるかを確認することもできます。または、現在の本番バージョンの複数インスタンスを実行し、それぞれが異なるデータベースのセットを管理する場合もあります。
別個のサーバーバイナリを使用するかどうかにかかわらず、実行する各インスタンスは、いくつかの操作パラメータについて一意の値を使用して構成される必要があります。これにより、インスタンス間で競合するおそれがなくなります。パラメータは、コマンド行、オプションファイル、または環境変数の設定によって設定できます。セクション4.2.3「プログラムオプションの指定」を参照してください。所定のインスタンスによって使用される値を表示するには、インスタンスに接続して、SHOW VARIABLES
ステートメントを実行します。
MySQL インスタンスによって管理される主なリソースは、データディレクトリです。各インスタンスが異なるデータディレクトリを使用するようにし、その場所は --datadir=
オプションを使用して指定されます。各インスタンスをインスタンス独自のデータディレクトリで構成する方法と、構成を行わないことの危険についての警告は、セクション5.3.1「複数のデータディレクトリのセットアップ」を参照してください。
path
異なるデータディレクトリを使用することに加えて、いくつかのほかのオプションは、各サーバーインスタンスについて異なる値を持つ必要があります。
-
--port=
port_num
--port
は、TCP/IP 接続のポート番号を制御します。または、ホストに複数のネットワークアドレスがある場合、--bind-address
を使用して、各サーバーが異なるアドレスを待機するようにすることができます。 -
--socket=
path
--socket
は、Unix 上の Unix ソケットファイルパスまたは Windows 上の名前付きパイプ名を制御します。Windows の場合、名前付きパイプ接続を許可するように構成されたサーバーについてのみ、個別のパイプ名を指定することが必要です。 -
--shared-memory-base-name=
name
このオプションは Windows でのみ使用されます。これは、クライアントが共有メモリーを使用して接続できるようにするために、Windows サーバーによって使用される共有メモリー名を指定します。共有メモリー接続を許可するように構成されたサーバーについてのみ、個別の共有メモリー名を指定することが必要です。
-
--pid-file=
file_name
このオプションは、サーバーがプロセス ID を書き込むファイルのパス名を示します。
次のログファイルオプションを使用した場合、これらの値はサーバーごとに異なっている必要があります。
--general_log_file=
file_name
--log-bin[=
file_name
]--slow_query_log_file=
file_name
--log-error[=
file_name
]
ログファイルオプションについての詳細な説明は、セクション5.2「MySQL Server ログ」を参照してください。
パフォーマンスを高めるには、次のオプションをサーバーごとに異なるやり方で指定して、いくつかの物理ディスクに負荷を分散させることができます。
--tmpdir=
path
異なる一時ディレクトリを作成すると、特定の一時ファイルを作成した MySQL Server を判別しやすくなります。
複数の MySQL インストールが異なる場所にある場合、--basedir=
オプションを使用して、インストールごとの基本ディレクトリを指定することができます。これにより、各インスタンスは自動的に異なるデータディレクトリ、ログファイル、および PID ファイルを使用します。この理由は、これらの各パラメータのデフォルトが、基本ディレクトリに対して相対的に指定されるためです。この場合、指定する必要があるほかのオプションは、path
--socket
および --port
オプションのみです。tar
ファイルバイナリ配布を使用して、異なるバージョンの MySQL をインストールするとします。これらは別の場所にインストールされるため、各インストールについてのサーバーを、対応する基本ディレクトリの下でコマンド bin/mysqld_safe を使用して開始することができます。mysqld_safe によって、mysqld に渡される適切な --basedir
オプションが決定され、--socket
および --port
オプションのみを mysqld_safe に指定する必要があります。
あとのセクションで説明するように、適切なコマンドオプションを指定するか、環境変数を設定することによって、追加のサーバーを開始することができます。ただし、複数のサーバーをより永続的に実行する必要がある場合は、オプションファイルを使用して、サーバーに一意となる必要があるオプション値を各サーバーに指定する方が簡単です。--defaults-file
オプションは、このために役立ちます。