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


18.4.1.4 グループ通信プロトコルバージョンの設定

MySQL 8.0.16 から、グループレプリケーションにはグループの通信プロトコルの概念があります。 Group Replication 通信プロトコルのバージョンは明示的に管理でき、グループでサポートする最も古い MySQL Server バージョンに対応するように設定できます。 これにより、下位互換性を確保しながら、異なる MySQL Server バージョンのメンバーからグループを形成できます。 MySQL 5.7.14 のバージョンではメッセージを圧縮でき、MySQL 8.0.16 のバージョンではメッセージを断片化することもできます。 グループメンバーが異なる MySQL Server リリースを使用できるように、グループのすべてのメンバーは同じ通信プロトコルバージョンを使用する必要がありますが、すべてのグループメンバーが理解できるメッセージのみを送信します。

バージョン X の MySQL サーバーは、グループ通信プロトコルのバージョンが X 以下の場合にのみ、レプリケーショングループの ONLINE ステータスに参加して到達できます。 新しいメンバーがレプリケーショングループに参加すると、グループの既存のメンバーによって通知される通信プロトコルバージョンがチェックされます。 参加メンバーがそのバージョンをサポートしている場合、メンバーが追加の通信機能をサポートしていても、参加メンバーはグループに参加し、グループが発表した通信プロトコルを使用します。 参加メンバーが通信プロトコルバージョンをサポートしていない場合は、グループから削除されます。

2 つのメンバーが同じメンバーシップ変更イベントに参加しようとすると、両方のメンバーの通信プロトコルバージョンがすでにグループ通信プロトコルバージョンと互換性がある場合にのみ参加できます。 グループとは異なる通信プロトコルバージョンを持つメンバーは、分離して参加する必要があります。 例:

  • 一方の MySQL Server 8.0.16 インスタンスは、通信プロトコルバージョン 5.7.24 を使用するグループに正常に参加できます。

  • 一方の MySQL Server 5.7.24 インスタンスは、通信プロトコルバージョン 8.0.16 を使用するグループに正常に参加できません。

  • 2 つの MySQL Server 8.0.16 インスタンスは、通信プロトコルバージョン 5.7.24 を使用するグループに同時に参加することはできません。

  • 2 つの MySQL Server 8.0.16 インスタンスは、通信プロトコルバージョン 8.0.16 を使用するグループに同時に参加できます。

グループがサポートしている最も古い MySQL Server バージョンを返す group_replication_get_communication_protocol() UDF を使用して、グループが使用している通信プロトコルを検査できます。 グループの既存のすべてのメンバーは、同じ通信プロトコルバージョンを返します。 例:

SELECT group_replication_get_communication_protocol();
+------------------------------------------------+
| group_replication_get_communication_protocol() |
+------------------------------------------------+
| 8.0.16                                         |
+------------------------------------------------+

group_replication_get_communication_protocol() UDF は、グループがサポートする MySQL の最小バージョンを返します。これは、group_replication_set_communication_protocol() UDF に渡されたバージョン番号、および UDF を使用するメンバーにインストールされている MySQL Server バージョンとは異なる場合があります。

以前のリリースのメンバーが参加できるようにグループの通信プロトコルバージョンを変更する必要がある場合は、group_replication_set_communication_protocol() UDF を使用して、許可する最も古いメンバーの MySQL Server バージョンを指定します。 これにより、可能であれば、グループは互換性のある通信プロトコルバージョンにフォールバックされます。 この UDF を使用するには GROUP_REPLICATION_ADMIN 権限が必要です。また、ステートメントを発行するときは、大部分を失うことなく、既存のすべてのグループメンバーがオンラインである必要があります。 例:

SELECT group_replication_set_communication_protocol("5.7.25");

レプリケーショングループのすべてのメンバーを新しい MySQL Server リリースにアップグレードしても、グループ通信プロトコルのバージョンは一致するように自動的にアップグレードされません。 以前のリリースでメンバーをサポートする必要がなくなった場合は、group_replication_set_communication_protocol() UDF を使用して、通信プロトコルバージョンを、メンバーをアップグレードした新しい MySQL Server バージョンに設定できます。 例:

SELECT group_replication_set_communication_protocol("8.0.16");

group_replication_set_communication_protocol() UDF はグループアクションとして実装されるため、グループのすべてのメンバーで同時に実行されます。 グループアクションはメッセージのバッファリングを開始し、すでに進行中の送信メッセージの配信が完了するまで待機してから、通信プロトコルのバージョンを変更し、バッファされたメッセージを送信します。 通信プロトコルバージョンを変更した後、メンバーがいつでもグループに参加しようとすると、グループメンバーは新しいプロトコルバージョンを通知します。

MySQL InnoDB クラスタは、AdminAPI 操作を使用してクラスタトポロジが変更されるたびに、そのメンバーの通信プロトコルバージョンを自動的かつ透過的に管理します。 InnoDB クラスタでは、現在クラスタの一部であるか、クラスタに参加しているすべてのインスタンスでサポートされている最新の通信プロトコルバージョンが常に使用されます。 詳細は、InnoDB クラスタ およびグループのレプリケーションプロトコルを参照してください。


関連キーワード:  グループ, バージョン, メンバー, 参加, replication, group, Server, リカバリ, 分散, communication