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