デフォルトでは、ネットワークパーティションのために少数民族で自分自身を検索するメンバーは、グループから自動的に退出しません。 システム変数 group_replication_unreachable_majority_timeout
を使用して、大部分のグループメンバーとの接続が失われた後にメンバーが待機する秒数を設定し、グループを終了できます。 タイムアウトを設定すると、ネットワークパーティション後に少数民族グループ内のサーバーをプロアクティブに監視する必要がなくなり、不適切な介入のためにスプリットブレイン状況 (グループメンバーシップの 2 つのバージョン) を作成する可能性を回避できます。
group_replication_unreachable_majority_timeout
で指定されたタイムアウトが経過すると、メンバーおよび少数民族グループ内の他のユーザーによって処理された保留中のすべてのトランザクションがロールバックされ、そのグループ内のサーバーは ERROR
状態に移行します。 MySQL 8.0.16 から使用可能な group_replication_autorejoin_tries
システム変数を使用して、この時点でメンバーがグループへの再参加を自動的に試行するようにできます。 MySQL 8.0.21 からは、この機能はデフォルトでアクティブ化され、メンバーは 3 回の自動再結合を試行します。 自動再結合プロシージャが成功しなかった場合、または試行されなかった場合、少数民族メンバーは group_replication_exit_state_action
で指定された終了アクションに従います。
到達不能な大多数のタイムアウトを設定するかどうかを決定する場合は、次の点を考慮してください:
対称グループ (たとえば、2 つまたは 4 つのサーバーを含むグループ) では、両方のパーティションに同数のサーバーが含まれている場合、両方のグループが自分自身を少数民族とみなし、
ERROR
状態になります。 この場合、グループには機能パーティションがありません。少数民族グループが存在する間、少数民族グループによって処理されたトランザクションは受け入れられますが、少数民族サーバーがクォーラムに到達できないため、これらのサーバーで
STOP GROUP_REPLICATION
が発行されるか、大多数のタイムアウトに達するまでブロックされます。到達不能な大多数のタイムアウトを設定しない場合、少数民族グループのサーバーは
ERROR
状態に自動的に入らないため、手動で停止する必要があります。過半数の損失が検出された後に少数民族グループのサーバーに設定されている場合、大多数のタイムアウトを設定しても効果はありません。
group_replication_unreachable_majority_timeout
システム変数を使用しない場合、ネットワークパーティションの発生時にオペレータが発明するプロセスについては、セクション18.4.4「ネットワークパーティション化」 を参照してください。 このプロセスでは、どのサーバーが機能しているかを確認し、必要に応じて新しいグループメンバーシップを強制します。