グループレプリケーションのグループ通信エンジン (XCom、Paxos バリアント) には、コンセンサスプロトコルの一部としてグループメンバー間で交換されるメッセージ (およびそのメタデータ) のキャッシュが含まれます。 メッセージキャッシュは、他のグループメンバーと通信できなかった期間後にグループに再接続するメンバーによる、欠落したメッセージのリカバリに使用されます。
MySQL 8.0.16 から、group_replication_message_cache_size
システム変数を使用して XCom メッセージキャッシュのキャッシュサイズ制限を設定できます。 キャッシュサイズ制限に達すると、XCom は決定され配信された最も古いエントリを削除します。 再接続しようとしている到達不能なメンバーは、欠落したメッセージをリカバリするために他のメンバーをランダムに選択するため、すべてのグループメンバーに同じキャッシュサイズ制限を設定する必要があります。 したがって、各メンバーキャッシュで同じメッセージを使用できる必要があります。
MySQL 8.0.16 より前では、キャッシュサイズは 1 GB で、MySQL 8.0.16 のキャッシュサイズのデフォルト設定は同じです。 MySQL Server の他のキャッシュおよびオブジェクトプールのサイズを考慮して、選択したキャッシュサイズ制限に十分なメモリーがシステムで使用可能であることを確認します。 group_replication_message_cache_size
を使用して設定された制限はキャッシュに格納されているデータにのみ適用され、キャッシュ構造には追加の 50 MB のメモリーが必要です。
group_replication_message_cache_size
設定を選択する場合は、メンバーが削除されるまでの期間内の予想されるメッセージ量を参照してください。 この期間の長さは、メンバーが明示されるのではなくグループに戻るための最初の 5 秒間の検出期間に加えて許可される待機期間 (最大時間) を決定する group_replication_member_expel_timeout
システム変数によって制御されます。 MySQL 8.0.21 より前は、group_replication_member_expel_timeout
システム変数によって設定された追加の明示タイムアウトがデフォルトでゼロに設定されているため、この期間はメンバーが使用できなくなるまでの 5 秒にデフォルト設定されることに注意してください。これは疑わしいが作成されるまでの検出期間です。 8.0.21 からは、expel タイムアウトはデフォルトで 5 秒に設定されるため、メンバーは少なくとも 10 秒間存在しなくなるまで削除されません。