ODPはスタンバイ優先読み取りのルーティングポリシーをサポートしており、ユーザー変数 proxy_route_policy でこのルーティングを設定します。スタンバイ優先読み取りは弱い整合性読み取り時にのみ有効となり、プライマリ/スタンバイの均等選択ではなく、常にフォロワーから優先的に読み取ります。
OceanBaseデータベースがサポートするクライアントツールでクラスタの業務テナントにログインした後、以下のステートメントを実行してセッション変数 proxy_route_policy を設定します:
obclient> SET @proxy_route_policy='[policy]';
パラメータ [policy] の取り得る値は3つあります:
値が
follower_firstの場合、ルーティングロジックはスタンバイを優先的に送信します(クラスタがマージ状態でも同様です)。優先順位は以下の通りです:同一データセンター内でマージしていないスタンバイ --> 同一リージョン内の異なるデータセンターでマージしていないスタンバイ --> 同一データセンター内でマージ中のスタンバイ --> 同一リージョン内の異なるデータセンターでマージしているスタンバイ --> 同一データセンター内でマージしていないプライマリ --> 同一リージョン内の異なるデータセンターでマージしていないプライマリ --> 異なるリージョン内でマージしていないスタンバイ --> 異なるリージョン内でマージしているスタンバイ --> 異なるリージョン内でマージしていないプライマリ --> 異なるリージョン内でマージしているプライマリ
値が
unmerge_follower_firstの場合、ルーティングロジックはクラスタがマージ状態にないスタンバイ機(フォロワーノード)を優先的に送信します。優先順位は以下の通りです:同一データセンター内でマージしていないスタンバイ --> 同一リージョン内の異なるデータセンターでマージしていないスタンバイ --> 同一データセンター内でマージしていないプライマリ --> 同一リージョン内の異なるデータセンターでマージしていないプライマリ --> 同一データセンター内でマージ中のスタンバイ --> 同一リージョン内の異なるデータセンターでマージしているスタンバイ --> 異なるリージョン内でマージしていないスタンバイ --> 異なるリージョン内でマージしていないプライマリ --> 異なるリージョン内でマージしているスタンバイ --> 異なるリージョン内でマージしているプライマリ
他の値を指定した場合、通常の弱い整合性読み取りのプライマリ/スタンバイ均等なルーティングロジックに戻ります。優先順位は以下の通りです:
同一データセンター内でマージしていないプライマリまたはスタンバイ --> 同一リージョン内の異なるデータセンターでマージしていないプライマリまたはスタンバイ --> 同一データセンター内でマージ中のプライマリまたはスタンバイ --> 同一リージョン内の異なるデータセンターでマージしているプライマリまたはスタンバイ --> 異なるリージョン内でマージしていないプライマリまたはスタンバイ --> 異なるリージョン内でマージしているプライマリまたはスタンバイ