MySQL 8.0 リファレンスマニュアル MySQL NDB Cluster 8.0 を含む

このページは機械翻訳したものです。

5.8 1 つのマシン上での複数の MySQL インスタンスの実行

状況によっては、MySQL の複数インスタンスを単一マシン上で実行する場合もあります。 既存の本番設定をそのままにして、新しい MySQL リリースをテストすることもできます。 または、ユーザーが自分で管理する異なる mysqld サーバーへのアクセス権を別々のユーザーに与える場合もあります。 (たとえば、ユーザーは独立した MySQL インストールを異なるカスタマ用に提供するインターネットサービスプロバイダである場合もあります。)

インスタンスごとに異なる MySQL Server バイナリを使用したり、複数のインスタンスに対して同じバイナリを使用したり、この 2 つの方法を組み合わせたりすることが可能です。 たとえば、MySQL 5.7 と MySQL 8.0 からそれぞれサーバーを実行し、異なるバージョンによって所定のワークロードがどのように処理されるかを確認することもできます。 または、現在の本番バージョンの複数インスタンスを実行し、それぞれが異なるデータベースのセットを管理する場合もあります。

別個のサーバーバイナリを使用するかどうかにかかわらず、実行する各インスタンスは、いくつかの操作パラメータについて一意の値を使用して構成される必要があります。 これにより、インスタンス間で競合するおそれがなくなります。 パラメータは、コマンド行、オプションファイル、または環境変数の設定によって設定できます。 セクション4.2.2「プログラムオプションの指定」を参照してください。 所定のインスタンスによって使用される値を表示するには、インスタンスに接続して、SHOW VARIABLES ステートメントを実行します。

MySQL インスタンスによって管理される主なリソースは、データディレクトリです。 各インスタンスは異なるデータディレクトリを使用する必要があり、その場所は --datadir=dir_name オプションを使用して指定されます。 各インスタンスをインスタンス独自のデータディレクトリで構成する方法と、構成を行わないことの危険についての警告は、セクション5.8.1「複数のデータディレクトリのセットアップ」を参照してください。

異なるデータディレクトリを使用することに加えて、いくつかのほかのオプションは、各サーバーインスタンスについて異なる値を持つ必要があります。

次のログファイルオプションを使用した場合、これらの値はサーバーごとに異なっている必要があります。

ログファイルオプションについての詳細な説明は、セクション5.4「MySQL Server ログ」を参照してください。

パフォーマンスを高めるには、次のオプションをサーバーごとに異なるやり方で指定して、いくつかの物理ディスクに負荷を分散させることができます。

異なる一時ディレクトリを作成すると、特定の一時ファイルを作成した MySQL Server を判別しやすくなります。

異なる場所に複数の MySQL インストールがある場合は、--basedir=dir_name オプションを使用して各インストールのベースディレクトリを指定できます。 これにより、各インスタンスは自動的に異なるデータディレクトリ、ログファイル、および PID ファイルを使用します。この理由は、これらの各パラメータのデフォルトが、基本ディレクトリに対して相対的に指定されるためです。 この場合、指定する必要があるほかのオプションは、--socket および --port オプションのみです。 tar ファイルバイナリ配布を使用して、異なるバージョンの MySQL をインストールするとします。 これらは別の場所にインストールされるため、各インストールについてのサーバーを、対応する基本ディレクトリの下でコマンド bin/mysqld_safe を使用して開始することができます。mysqld_safe によって、mysqld に渡される適切な --basedir オプションが決定され、--socket および --port オプションのみを mysqld_safe に指定する必要があります。

あとのセクションで説明するように、適切なコマンドオプションを指定するか、環境変数を設定することによって、追加のサーバーを開始することができます。 ただし、複数のサーバーをより永続的に実行する必要がある場合は、オプションファイルを使用して、サーバーに一意となる必要があるオプション値を各サーバーに指定する方が簡単です。 --defaults-file オプションは、このために役立ちます。