MySQL 8.0.12 および MySQL 5.7.24 から使用可能な group_replication_exit_state_action
システム変数は、エラーまたは問題が原因でメンバーが意図せずグループを離れたときに行われるグループレプリケーションを指定し、自動再結合に失敗するか、試行しません。 削除されたメンバーの場合、メンバーはグループに再接続するまで削除されたことを認識しないため、指定されたアクションが実行されるのは、メンバーが再接続を管理している場合、またはメンバー自体で疑わしい場合のみです。
影響を受ける順序で、exit アクションは次のとおりです:
READ_ONLY
が終了アクションの場合、インスタンスはシステム変数super_read_only
をON
に設定することで、MySQL をスーパー読取り専用モードに切り替えます。 メンバーがスーパー読取り専用モードの場合、クライアントはCONNECTION_ADMIN
権限 (または非推奨のSUPER
権限) を持っていても更新を実行できません。 ただし、クライアントはデータを読み取ることができ、更新が行われなくなったため、時間の経過とともに増加する失効した読取りの確率があります。 したがって、この設定では、サーバーの障害をプロアクティブに監視する必要があります。 この終了アクションは、MySQL 8.0.15 のデフォルトです。 この exit アクションが実行されると、グループのビューにメンバーステータスがERROR
として表示されます。OFFLINE_MODE
が終了アクションの場合、インスタンスはシステム変数offline_mode
をON
に設定することで、MySQL をオフラインモードに切り替えます。 メンバーがオフラインモードの場合、接続されたクライアントユーザーは次のリクエストで切断され、CONNECTION_ADMIN
権限 (または非推奨のSUPER
権限) を持つクライアントユーザーを除き、接続は受け入れられなくなります。 Group Replication は、システム変数super_read_only
をON
に設定することもできるため、クライアントがCONNECTION_ADMIN
またはSUPER
権限で接続されていても更新を行うことはできません。 この終了アクションは、更新と失効した読取りの両方を防止し (指定された権限を持つクライアントユーザーによる読取りを除く)、MySQL Router などのプロキシツールがサーバーが使用不可であることを認識し、クライアント接続をリダイレクトできるようにします。 また、管理者が MySQL を停止せずに問題の解決を試みることができるように、インスタンスは実行されたままになります。 この終了アクションは、MySQL 8.0.18 から使用できます。 この終了アクションが実行されると、(OFFLINE
ではなく) グループのビューにメンバーステータスがERROR
として表示されます。つまり、メンバーはグループレプリケーション機能を使用できますが、現在グループに属していません。ABORT_SERVER
が exit アクションの場合、インスタンスは MySQL を停止します。 メンバーに自身を停止するよう指示すると、失効したすべての読取りおよびクライアントの更新が防止されますが、そのステップなしで問題が解決された可能性がある場合でも、MySQL Server インスタンスは使用できないため、再起動する必要があります。 この終了アクションは、システム変数が MySQL 8.0.15 に追加されたときの MySQL 8.0.12 のデフォルトでした。 この exit アクションが実行されると、グループのビュー内のサーバーのリストからメンバーが削除されます。
自動再結合の試行を使い果たした (または一度も削除されていない)、グループレプリケーションを再起動せずにグループから再度参加することは許可されていないため、設定されている終了アクションにはオペレータの介入が必要であることに注意してください。 exit アクションは、クライアントがグループに再参加できなかったサーバー上のデータを読み取ることができるかどうか、およびサーバーが実行中かどうかにのみ影響します。
メンバーがグループに正常に参加する前に障害が発生した場合は、group_replication_exit_state_action
取得されませんで指定されている終了アクション。 これは、ローカル構成チェック中に障害が発生した場合、または参加メンバーの構成とグループの構成が一致しない場合です。 このような状況では、super_read_only
システム変数は元の値のままで、サーバーは MySQL を停止しません。 したがって、Group Replication が起動しなかったときにサーバーが更新を受け入れられないようにするには、起動時に super_read_only=ON
をサーバー構成ファイルに設定することをお薦めします。これは、正常に起動された後、プライマリメンバー上の OFF
にグループレプリケーションが変更されます。 この保護策は、サーバーがサーバー起動時に Group Replication (group_replication_start_on_boot=ON
) を起動するように構成されている場合に特に重要ですが、START GROUP_REPLICATION
コマンドを使用して Group Replication を手動で起動する場合にも役立ちます。
メンバーがグループに正常に参加した後に障害が発生した場合は、指定された exit アクションが実行されます。 これは、次の状況で発生します:
アプライヤエラー - レプリケーションアプライアンスにエラーがあります。 この問題はリカバリできません。
分散リカバリはできません - Group Replication 分散リカバリプロセス (バイナリログからのリモートクローニング操作と状態転送を使用) を完了できないことを意味する問題があります。 グループレプリケーションは、意味のある場所で分散リカバリを自動的に再試行しますが、プロセスを完了するオプションがなくなると停止します。 詳細は、セクション18.4.3.4「分散リカバリのフォルトトレランス」を参照してください。
グループ構成変更エラー - セクション18.4.1「オンライングループの構成」 で説明されているように、UDF を使用して実行されたグループ全体の構成変更中にエラーが発生しました。
プライマリ選択エラー - セクション18.1.3.1「シングルプライマリモード」 で説明されているように、シングルプライマリモードでのグループの新規プライマリメンバーの選択中にエラーが発生しました。
大部分のタイムアウトに到達できません - メンバーは大部分のグループメンバーとの連絡を失ったため、少数民族になり、
group_replication_unreachable_majority_timeout
システム変数によって設定されたタイムアウトの期限が切れました。グループから削除されたメンバー - メンバーで疑いが発生し、
group_replication_member_expel_timeout
システム変数によって設定されたタイムアウトが期限切れになり、メンバーがグループとの通信を再開し、削除されたことがわかりました。自動再結合試行の範囲外 -
group_replication_autorejoin_tries
システム変数は、大部分または明示が失われた後の自動再結合の試行回数を指定するように設定されており、メンバーは成功せずにこの回数の試行を完了しました。
次のテーブルに、失敗のシナリオと各ケースのアクションをまとめます:
表 18.4 Group Replication の失敗状況での終了アクション
失敗状況 |
グループレプリケーションが |
グループレプリケーションが |
---|---|---|
メンバーがローカル構成チェックに失敗しました 参加メンバーとグループ構成が一致しません |
MySQL は実行を継続
起動時に |
MySQL は実行を継続
起動時に |
メンバーの適用者エラー 分散リカバリはできません グループ構成変更エラー プライマリ選択エラー 大部分のタイムアウトに到達できません グループから削除されたメンバー 自動再結合試行の範囲外 |
OR
OR MySQL が停止 |
OR
OR MySQL が停止 |