グループレプリケーション分散リカバリプロセスのいくつかの側面は、システムに合せて構成できます。
バイナリログからの状態転送の場合、Group Replication は、ドナーのプールからドナーに接続しようとしたときに参加メンバーが試行する回数を制限します。 接続が成功せずに接続再試行の制限に達すると、分散リカバリプロシージャはエラーで終了します。 この制限は、参加メンバーがドナーへの接続を試行する合計回数を指定することに注意してください。 たとえば、2 つのグループメンバーが適切なドナーで、接続再試行制限が 4 に設定されている場合、参加メンバーは制限に達する前に各ドナーへの接続を 2 回試行します。
デフォルトの接続再試行制限は 10 です。 この設定は、group_replication_recovery_retry_count
システム変数を使用して構成できます。 次のコマンドは、ドナーへの接続の最大試行回数を 5 に設定します:
mysql> SET GLOBAL group_replication_recovery_retry_count= 5;
リモートクローニング操作の場合、この制限は適用されません。 Group Replication は、バイナリログからの状態転送を開始する前に、クローニングに適した各ドナーへの接続を 1 つだけ試みます。
バイナリログからの状態転送の場合、group_replication_recovery_reconnect_interval
システム変数は、ドナーの接続試行の間に分散回復プロセスがスリープする時間を定義します。 分散リカバリは、ドナー接続が試行されるたびにスリープしないことに注意してください。 参加メンバーが同じサーバーに繰り返し接続するのではなく、異なるサーバーに接続しているため、サーバー A に影響する問題がサーバー B に影響しないと想定できます。 したがって、分散リカバリは、可能性のあるすべてのドナーを通過した場合にのみ一時停止します。 グループに参加しているサーバーがグループ内の適切な各ドナーに接続しようとすると、分散リカバリプロセスは group_replication_recovery_reconnect_interval
システム変数で構成された秒数スリープします。 たとえば、2 つのグループメンバーが適切なドナーで、接続再試行制限が 4 に設定されている場合、参加メンバーは各ドナーへの接続を 1 回試行し、接続再試行間隔でスリープしてから、制限に達する前に各ドナーへの接続をさらに試行します。
デフォルトの接続再試行間隔は 60 秒で、この値は動的に変更できます。 次のコマンドは、分散リカバリドナー接続再試行間隔を 120 秒に設定します:
mysql> SET GLOBAL group_replication_recovery_reconnect_interval= 120;
リモートクローニング操作の場合、この間隔は適用されません。 Group Replication は、バイナリログからの状態転送を開始する前に、クローニングに適した各ドナーへの接続を 1 つだけ試みます。
分散リカバリがドナーから参加メンバーへの状態転送を正常に完了したら、参加メンバーをグループ内でオンラインとしてマークし、参加の準備ができます。 デフォルトでは、これは参加メンバーが欠落していたすべてのトランザクションを受信して適用した後に実行されます。 必要に応じて、参加メンバーが欠落していたすべてのトランザクションを受信して認証 (つまり、競合検出が完了) した後、適用する前に、参加メンバーをオンラインとしてマークできます。 これを行う場合は、group_replication_recovery_complete_at
システム変数を使用して代替設定の TRANSACTIONS_CERTIFIED
を指定します。