云数据库 RDS-使用rds_hwdrs_privs插件:基本使用

时间:2024-09-06 14:25:18

基本使用

此插件只能由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';第二个参数是可以缺省的,是否缺省取决于要执行的函数是否需要参数值。

support.huaweicloud.com/usermanual-rds/rds_09_0068.html