云数据库 RDS-使用rds_hwdrs_privs插件:基本使用
基本使用
此插件只能由root用户或者root的成员用户执行。
可以通过root用户直接执行,或者通过如下操作:
grant root to drs_sync;
将root权限赋予drs_sync,这样drs_sync用户也能够执行。
- 赋予某个用户对pg_catalog.pg_authid的select权限。
select control_select_on_pg_authid('grant', 'drs_sync');
其中,第一个参数可以选择grant, revoke;第二个参数是具体的用户,用户必须已存在。
- 对用户赋予bypassrls, replication的权限。
select control_user_privilege('bypassrls', 'drs_sync');
其中,第一个参数是要赋予的权限,可选范围是bypassrls, nobypassrls, replication, noreplication;第二个参数是具体的用户,用户必须已存在。
- 创建对all tables的发布。
select create_publication_for_all_tables('foo_pub', 'insert, update'); select create_publication_for_all_tables('foo_pub');
该函数只创建for all tables的发布,对于某个表的发布可以使用正常的SQL。
其中,第一个参数是发布名,不能和已有的发布重名;第二个参数是选项,可以缺省,缺省情况下和create publication foo_pub for all tables一样;不缺省的情况下,在RDS for PostgreSQL 10版本中可选的是insert, update, delete,在11版本中可选项多了truncate。
创建出来的publication的owner是root。可以使用root用户或者root的成员用户,通过SQL对该publication进行接下来的操作。
- 执行部分pg_replication_origin_xxx函数。
-- 创建一个复制源 select exec_pg_replication_origin_func('pg_replication_origin_create', 'foo_repl_origin'); -- 删除这个复制源 select exec_pg_replication_origin_func('pg_replication_origin_create', 'foo_repl_origin'); -- 查看当前会话是否绑定了复制源 select exec_pg_replication_origin_func('pg_replication_origin_session_is_setup');
其中,第一个参数是要执行的函数名,可选范围是'pg_replication_origin_create', 'pg_replication_origin_drop', 'pg_replication_origin_oid', 'pg_replication_origin_session_setup', 'pg_replication_origin_session_reset', 'pg_replication_origin_session_is_setup';第二个参数是可以缺省的,是否缺省取决于要执行的函数是否需要参数值。