以降のセクションでは、mysqld オプション、およびレプリケーションで使用されてバイナリログを制御するためのサーバー変数の情報について説明します。レプリケーションマスターとレプリケーションスレーブで使用されるオプションと変数のうち、バイナリロギングに関係するオプションおよび変数であるものは、別途説明します。これらのオプションと変数に関する基本情報するクイックリファレンス表のセットも含まれています。
コマンド行形式 | --server-id=# |
---|---|
システム変数 | server_id |
スコープ | グローバル |
動的 | はい |
型 | 数値 |
デフォルト | 0 |
最小値 | 0 |
最大値 | 4294967295 |
このオプションはマスターとスレーブのどちらのレプリケーションサーバーに共通で、レプリケーションで使用され、マスターおよびスレーブサーバーがそれら自身を一意に識別できます。詳細については、セクション17.1.4.2「レプリケーションマスターのオプションと変数」,およびセクション17.1.4.3「レプリケーションスレーブのオプションと変数」を参照してください。
マスターおよび各スレーブでは、--server-id
オプションを使用して、範囲が 1 から 232 − 1 の一意レプリケーション ID を確立する必要があります。「一意」とは、各 ID が、ほかのレプリケーションマスターまたはスレーブで使用されるほかのあらゆる ID と異なっている必要があるということです。たとえば、server-id=3
。
--server-id
を省略すると、デフォルト ID は 0 になり、この場合、マスターはすべてのスレーブからの接続を拒否し、スレーブはマスターへの接続を拒否します。MySQL 5.6 では、サーバー ID が明示的に 0 に設定されていても、デフォルトの使用が許可されていても、サーバーは server_id
システム変数を 1 に設定します。これは MySQL 5.7 で修正された既知の問題です。
詳細については、セクション17.1.1.2「レプリケーションスレーブ構成の設定」を参照してください。
MySQL 5.6 以降、サーバーはユーザーが指定する --server-id
に加えて真の UUID を生成します。これは、グローバルな読み取り専用変数 server_uuid
として使用できます。
システム変数 | server_uuid |
---|---|
スコープ | グローバル |
動的 | いいえ |
型 | 文字列 |
起動時、MySQL サーバーは次のように自動的に UUID を取得します。
auto.cnf
ファイルは、my.cnf
または my.ini
ファイルに使用されるものに類似した形式です。MySQL 5.6 では、auto.cnf
に単一 server_uuid
設定と値を含む、単一 [auto]
セクションのみがあります。ファイルの内容は次に示すものに似ています。
[auto]
server_uuid=8a94f357-aab4-11df-86ab-c80aa9429562
auto.cnf
ファイルは自動的に生成されます。このファイルを書き込んだり修正したりしようとしないでください。
MySQL 5.6 以降では、MySQL レプリケーションを使用するときに、マスターとスレーブは互いの UUID がわかります。スレーブの UUID の値は SHOW SLAVE HOSTS
の出力で確認できます。START SLAVE
が実行されたあとは (前ではありません)、マスターの UUID の値はスレーブでは SHOW SLAVE STATUS
の出力で確認できます。
STOP SLAVE
または RESET SLAVE
ステートメントを発行しても、スレーブで使用されるマスターの UUID はリセットされません。
MySQL 5.6.5 以降では、サーバーの server_uuid
は、そのサーバーで発生するトランザクションの GTID でも使用されます。詳細は、セクション17.1.3「グローバルトランザクション識別子を使用したレプリケーション」を参照してください。
起動時に、スレーブ I/O スレッドは、そのマスターの UUID がそれ自身と等しい場合、--replicate-same-server-id
オプションが設定されている場合を除き、エラーを生成して中断します。また次のどちらかが true の場合、スレーブ I/O スレッドは警告を生成します。
予期された
server_uuid
を持つマスターが存在しない。CHANGE MASTER TO
ステートメントがこれまで実行されなかったのみ、マスターのserver_uuid
が変化した。
MySQL 5.6 で server_uuid
システム変数が追加されても、このセクションですでに説明したように、MySQL レプリケーションの準備と実行の一部として MySQL サーバーごとに一意の --server-id
を設定する必要があることは変わりません。