自定义函数与表的路由规则

数据库代理提供函数或表的自定义路由功能,通过此功能可以让自定义函数的读操作路由到只读库(原默认路由到主库),或者让自定义表读的操作路由到主库(原默认路由到只读库)。

前提条件

本章节所有操作需要使用高权限账号通过主地址连接到postgres库中进行。

创建插件

polar_superuser用户执行以下命令,创建polar_proxy_utils插件。

create extension polar_proxy_utils;

插入记录

执行以下命令,插入记录。

polar_add_proxy_routing_strategy(_name, _type, rw_mode);
说明

其中:

  • _name:需要添加的路由的表名或者函数名。

  • _type:标记此次添加的为表名或者函数名。t:表示表名;f:表示函数名。

  • rw_mode:涉及表名或者函数名的查询请求,要路由到主库还是只读库。w:表示只能路由到主库;r:表示可以路由到只读库。

例如,执行polar_add_proxy_routing_strategy('lol', 't', 'w');命令。插入记录

  • 添加这条记录之前,执行select * from lol有机会路由到只读库。

  • 添加这条记录之后,执行select * from lol只会路由到主库。

展示白名单信息

执行以下命令,展示白名单信息。

select polar_list_proxy_routing_strategy();

展示白名单信息

删除一条白名单记录

执行以下命令,删除一条白名单记录。

select polar_delete_proxy_routing_strategy(_name, _type);
说明

其中:

  • _name:需要删除的路由的表名或者函数名。

  • _type:标记此次删除的是表名还是函数名。t:表示表名;f:表示函数名。

例如,执行select polar_delete_proxy_routing_strategy('lol', 't');命令。删除一条白名单

  • 删除这条记录之前,执行select * from lol会路由到主库。

  • 删除这条记录之后,执行select * from lol就会路由到只读库。

删除所有白名单记录

执行以下命令,删除所有白名单记录。

select polar_truncate_proxy_routing_strategy();

删除所有白名单记录