MySQL 8.0 リファレンスマニュアル MySQL NDB Cluster 8.0 を含む

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

18.9.2 グループレプリケーションの制限事項

グループレプリケーションには、次の既知の制限事項があります。 マルチプライマリモードグループについて説明されている制限事項と問題は、フェイルオーバーイベント中にシングルプライマリモードクラスタにも適用できますが、新しく選択されたプライマリは古いプライマリからアプライヤキューをフラッシュします。

ヒント

グループレプリケーションは GTID ベースのレプリケーション上に構築されるため、セクション17.1.3.7「GTID ベースレプリケーションの制約」 にも注意する必要があります。

グループサイズの制限

単一のレプリケーショングループのメンバーにできる MySQL サーバーの最大数は 9 です。 さらにメンバーがグループに参加しようとすると、そのリクエストは拒否されます。 この制限は、安定したローカルエリアネットワーク上でグループが確実に実行される安全な境界としてのテストおよびベンチマークから特定されています。

トランザクションサイズの制限

個々のトランザクションの結果、5 秒以内にメッセージをネットワーク上のグループメンバー間でコピーできない十分な大きさのメッセージコンテンツが生成された場合、メンバーはトランザクションの処理にビジー状態であるため、失敗した疑いがあります。 また、トランザクションが大きいと、メモリー割当ての問題が原因でシステムが遅くなる可能性があります。 これらの問題を回避するには、次の軽減策を使用します:

  • 大量のメッセージが原因で不要な削除が発生した場合は、システム変数 group_replication_member_expel_timeout を使用して、失敗した疑いがあるメンバーが削除されるまでの追加時間を許可します。 疑わしいメンバーがグループから削除されるまで、最初の 5 秒間の検出期間の 1 時間以内に許可できます。 MySQL 8.0.21 からは、デフォルトで追加の 5 秒が許可されます。

  • 可能な場合は、グループレプリケーションによって処理される前に、トランザクションのサイズを試行して制限してください。 たとえば、LOAD DATA で使用されるファイルを小さいチャンクに分割します。

  • システム変数 group_replication_transaction_size_limit を使用して、グループが受け入れる最大トランザクションサイズを指定します。 MySQL 8.0 では、このシステム変数はデフォルトで 150000000 バイト (約 143 MB) の最大トランザクションサイズに設定されます。 このサイズを超えるトランザクションはロールバックされ、グループへの配布のために Group Replication Group Communication System (GCS) に送信されません。 トランザクションの処理にかかる時間はそのサイズに比例することに注意して、グループが許容する必要がある最大メッセージサイズに応じて、この変数の値を調整します。

  • システム変数 group_replication_compression_threshold を使用して、圧縮が適用されるメッセージサイズを指定します。 このシステム変数のデフォルトは 1000000 バイト (1 MB) であるため、大きなメッセージは自動的に圧縮されます。 圧縮は、group_replication_transaction_size_limit 設定で許可されたが group_replication_compression_threshold 設定を超えたメッセージを受信したときに、Group Replication Group Communication System (GCS) によって実行されます。 詳細は、セクション18.6.3「メッセージ圧縮」を参照してください。

  • システム変数 group_replication_communication_max_message_size を使用して、メッセージが断片化されるメッセージサイズを指定します。 このシステム変数のデフォルトは 10485760 バイト (10 MiB) であるため、大きなメッセージは自動的に断片化されます。 GCS は、圧縮されたメッセージが group_replication_communication_max_message_size 制限を超えたままである場合、圧縮後に断片化を実行します。 レプリケーショングループで断片化を使用するには、すべてのグループメンバーが MySQL 8.0.16 以上であり、グループで使用されている Group Replication 通信プロトコルバージョンで断片化が許可されている必要があります。 詳細は、セクション18.6.4「メッセージの断片化」を参照してください。

関連するシステム変数にゼロ値を指定すると、最大トランザクションサイズ、メッセージ圧縮およびメッセージの断片化をすべて非アクティブ化できます。 これらすべての保護を非アクティブ化した場合、レプリケーショングループのメンバーの適用者スレッドで処理できるメッセージの上限サイズは、デフォルト値および最大値 1073741824 バイト (1 GB) のメンバー slave_max_allowed_packet システム変数の値です。 この制限を超えるメッセージは、受信側メンバーが処理しようとすると失敗します。 グループメンバーが送信できるメッセージの上限サイズは 4294967295 バイト (約 4 GB) です。 これは、GCS が処理した後にメッセージを受信するグループレプリケーション (XCom、Paxos バリアント) のためにグループ通信エンジンによって受け入れられるパケットサイズの強い制限です。 この制限を超えるメッセージは、元のメンバーがブロードキャストしようとすると失敗します。