PolarProxyを使用すると、指定された関数または指定されたテーブルを含むリクエストのルーティングルールをカスタマイズできます。 既定では、PolarDBクラスター内の関数を含む読み取り要求は読み取り専用ノードにルーティングされ、PolarDBクラスター内のテーブルを含む読み取り要求はプライマリノードにルーティングされます。 ルーティングルールをカスタマイズして、PolarDBクラスター内の指定された関数を含む読み取り要求を読み取り専用ノードにルーティングできます。 ルーティングルールをカスタマイズして、指定されたテーブルを含む読み取り要求をプライマリノードにルーティングすることもできます。
前提条件
特権アカウントは、PolarDBクラスターのプライマリエンドポイントに接続するために使用されます。
polar_proxy_utils拡張子を作成する
次のステートメントをpolar_superuserユーザーとして実行し、polar_proxy_utils拡張子を作成します。
拡張子polar_proxy_utilsを作成します。ルーティングルールのカスタマイズ
ルーティングルールをカスタマイズするには、次の文を実行します。
polar_add_proxy_routing_strategy(_name, _type, rw_mode);ステートメント内のパラメータ:
_name: ルーティングルールをカスタマイズするテーブルまたは関数の名前。
_type:_nameパラメーターで指定されたオブジェクトがテーブルか関数かを指定します。 値tはテーブルを指定する。 値fは関数を指定する。
rw_mode: プライマリノードと読み取り専用ノードのどちらにリクエストをルーティングするかを指定します。 値wは、プライマリノードを指定する。 値rは読み取り専用ノードを指定します。
たとえば、polar_add_proxy_routing_strategy('lol', 't', 'w'); ステートメントを実行します。
このステートメントが実行される前に、
select * from lol操作は読み取り専用ノードにルーティングされます。このステートメントが実行されると、
select * from lol操作がプライマリノードにルーティングされます。
ルーティングルールの照会
ルーティングルールを照会するには、次の文を実行します。
polar_list_proxy_routing_strategy() を選択します。
ルーティングルールの削除
ルーティングルールを削除するには、次の文を実行します。
polar_delete_proxy_routing_strategy(_name, _type) を選択します。ステートメント内のパラメータ:
_name: 削除するルーティングルールに関連付けられているテーブルまたは関数の名前。
_type:_nameパラメーターで指定されたオブジェクトがテーブルか関数かを指定します。 値tはテーブルを指定する。 値fは関数を指定する。
たとえば、select polar_delete_proxy_routing_strategy('lol', 't'); ステートメントを実行します。
このステートメントが実行される前に、
select * from lol操作がプライマリノードにルーティングされます。このステートメントが実行されると、
select * from lol操作は読み取り専用ノードにルーティングされます。
すべてのルーティングルールを削除する
すべてのルーティングルールを削除するには、次の文を実行します。
polar_truncate_proxy_routing_strategy() を選択します。