MySQL 8.0 リファレンスマニュアル MySQL NDB Cluster 8.0 を含む
このページは機械翻訳したものです。
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 クラスタ およびグループのレプリケーションプロトコルを参照してください。