OceanBaseデータベースV4.xとOceanBaseデータベースV3.xの最大の違いは、複数のデータパーティションを1つのログストリームに統合し、データパーティションを特定のログストリームに接続することで、メモリ、CPU、ネットワーク帯域幅などのリソース使用量を大幅に節約できる点です。データパーティションはもはや独立してロール情報を持たず、所属するログストリームのロールによって決定されます。ログストリームのロールは選挙プロトコルによって生成されます。そのため、OceanBaseデータベースV4.xにおけるプライマリスタンバイ切り替え動作は、ログストリームの観点から行われます。
OceanBaseデータベースはマルチテナント方式を採用しており、テナントはOceanBaseデータベース内でリソースが隔離された単位であり、ログストリームは各テナントが独立して保有します。したがって、V4.x系ではプライマリスタンバイ切り替え問題を調査する際には、まずテナントIDとログストリームIDを確認する必要があります。
ログストリームのリーダー就任は、下から上へと順に、以下の3つのモジュールに依存します:
選挙モジュール
OceanBaseデータベース独自の選挙アルゴリズムに基づき、リーダーを生成し、その一意性を保証します。これをElection Leaderと呼びます。
CLOGモジュール
Election Leaderに基づき、まずreconfirmプロセスを実行して、CLOGリーダーが完全なログを保持することを保証します。次に、CLOGの就任プロセスを実行し、その就任プロセスは非同期でRoleChangeServiceモジュールに通知されます。これにより、CLOGリーダーが有効になります。
RoleChangeServiceモジュール
CLOGリーダーが就任プロセスを実行する必要があることを検知すると、具体的な就任ロジックを実行します。リーダー切り替えを検知する必要があるモジュールはRoleChangeServiceモジュールに接続し、切り替え動作を検知して自身の切り替えロジックを実行します。