MySQL 8.0 リファレンスマニュアル


MySQL 8.0 リファレンスマニュアル  /  MySQL サーバーの管理  /  1 つのマシン上での複数の MySQL インスタンスの実行

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「複数のデータディレクトリのセットアップ」を参照してください。

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

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

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


関連キーワード:  サーバー, インスタンス, 複数, インストール, 変数, ディレクトリ, データ, 実行, 構成, 接続