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