Documentation Home
MySQL 8.0 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 36.1Mb
PDF (A4) - 36.2Mb
HTML Download (TGZ) - 10.0Mb
HTML Download (Zip) - 10.1Mb


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

18.6.4 メッセージの断片化

グループレプリケーショングループメンバー間で異常に大きいメッセージが送信されると、一部のグループメンバーが失敗としてレポートされ、グループから除外される可能性があります。 これは、Group Replication グループ通信エンジン (XCom、Paxos バリアント) で使用されるシングルスレッドがメッセージの処理に時間がかかりすぎるため、一部のグループメンバーが受信者を失敗として報告する可能性があるためです。 デフォルトでは、MySQL 8.0.16 から、大きいメッセージは自動的にフラグメントに分割され、受信者によって個別に送信されて再アセンブルされます。

システム変数 group_replication_communication_max_message_size は、グループレプリケーション通信の最大メッセージサイズを指定します。このサイズを超えると、メッセージは断片化されます。 デフォルトの最大メッセージサイズは 10485760 バイト (10 MiB) です。 最大許容値は、slave_max_allowed_packet システム変数の最大値 1073741824 バイト (1 GB) と同じです。 アプライヤスレッドは slave_max_allowed_packet より大きいメッセージフラグメントを処理できないため、group_replication_communication_max_message_size の設定は slave_max_allowed_packet の設定より小さくする必要があります。 断片化をオフにするには、group_replication_communication_max_message_size にゼロ値を指定します。

他のほとんどの Group Replication システム変数と同様に、変更を有効にするには Group Replication プラグインを再起動する必要があります。 例:

STOP GROUP_REPLICATION;
SET GLOBAL group_replication_communication_max_message_size= 5242880;
START GROUP_REPLICATION;

断片化されたメッセージのメッセージ配信は、メッセージのすべてのフラグメントが受信され、すべてのグループメンバーによって再アセンブルされると完了とみなされます。 断片化されたメッセージには、ヘッダー内の情報が含まれます。この情報を使用すると、メッセージ転送中にメンバーを結合して、参加前に送信された以前のフラグメントをリカバリできます。 結合メンバーがフラグメントのリカバリに失敗すると、グループから削除されます。

レプリケーショングループで断片化を使用するには、すべてのグループメンバーが MySQL 8.0.16 以上であり、グループで使用されている Group Replication 通信プロトコルバージョンで断片化が許可されている必要があります。 グループがサポートしている最も古い MySQL Server バージョンを返す group_replication_get_communication_protocol() UDF を使用して、グループが使用している通信プロトコルを検査できます。 MySQL 5.7.14 のバージョンではメッセージを圧縮でき、MySQL 8.0.16 のバージョンではメッセージを断片化することもできます。 すべてのグループメンバーが MySQL 8.0.16 以上で、以前のリリースのメンバーの参加を許可する必要がない場合は、group_replication_set_communication_protocol() UDF を使用して通信プロトコルバージョンを MySQL 8.0.16 以上に設定し、断片化を許可できます。 詳細は、セクション18.4.1.4「グループ通信プロトコルバージョンの設定」を参照してください。

一部のメンバーが断片化をサポートしていないためにレプリケーショングループが断片化を使用できない場合は、システム変数 group_replication_transaction_size_limit を使用して、グループが受け入れるトランザクションの最大サイズを制限できます。 MySQL 8.0 では、デフォルト設定は約 143 MB です。 このサイズを超えるトランザクションはロールバックされます。 システム変数 group_replication_member_expel_timeout を使用して、失敗した疑いがあるメンバーがグループから削除されるまでの追加時間 (最大 1 時間) を許可することもできます。