配置自行管理的 PostgreSQL 数据库

以下部分介绍了如何配置自行管理的 PostgreSQL 数据库。

对数据库启用逻辑复制

  1. 通过将 wal_level=logical 添加到 postgresql.conf 文件,在数据库中设置 wal_level 参数。

  2. 重新启动服务器。

创建发布内容和复制槽

  1. 以超级用户的身份登录 PostgreSQL 控制台。

  2. 创建发布内容。我们建议您仅为要复制的表创建发布内容。这样,Datastream 就可以只读相关数据,并降低数据库和 Datastream 的负载:

    CREATE PUBLICATION PUBLICATION_NAME
    FOR TABLE SCHEMA1.TABLE1, SCHEMA2.TABLE2;

    替换以下内容:

    • PUBLICATION_NAME:发布内容的名称。在 Datastream 数据流创建向导中创建数据流时,您需要提供此名称。
    • SCHEMA:包含表的架构的名称。
    • TABLE:您要复制的表的名称。

    您可以为架构中的所有表创建发布内容。通过此方法,您可以复制对指定架构列表中的表(包括您将来创建的表)的更改:

    CREATE PUBLICATION PUBLICATION_NAME
    FOR TABLES IN SCHEMA1, SCHEMA2;

    您还可以为数据库中的所有表创建发布内容。请注意,此方法会增加源数据库和 Datastream 的负载:

    CREATE PUBLICATION PUBLICATION_NAME FOR ALL TABLES;
    
  3. 输入以下 SQL 命令以创建复制槽:

    SELECT PG_CREATE_LOGICAL_REPLICATION_SLOT('REPLICATION_SLOT_NAME', 'pgoutput');

    替换以下内容:

    • REPLICATION_SLOT_NAME:复制槽的名称。在 Datastream 数据流创建向导中创建数据流时,您需要提供此名称。

创建 Datastream 用户

  1. 如需创建 Datastream 用户,请输入以下 SQL 命令:

    CREATE USER USER_NAME WITH ENCRYPTED PASSWORD 'USER_PASSWORD';

    替换以下内容:

    • USER_NAME:您要创建的 Datastream 用户的名称。
    • USER_PASSWORD:您要创建的 Datastream 用户的登录密码。
  2. 向您创建的用户授予以下特权:

    ALTER ROLE USER_NAME WITH REPLICATION;
    GRANT SELECT ON ALL TABLES IN SCHEMA SCHEMA_NAME TO USER_NAME;
    GRANT USAGE ON SCHEMA SCHEMA_NAME TO USER_NAME;
    ALTER DEFAULT PRIVILEGES IN SCHEMA SCHEMA_NAME
      GRANT SELECT ON TABLES TO USER_NAME;
    

    替换以下内容:

    • USER_NAME:您要授予权限的用户。
    • SCHEMA_NAME:您要向其授予权限的架构的名称。