配置 Amazon Aurora PostgreSQL 数据库

如需将 Amazon Aurora PostgreSQL 数据库中的变更数据捕获 (CDC) 更新流式传输到 BigQuery、Cloud Storage 或其他受支持的 目标,您需要在您的 源集群上进行逻辑复制。如需为 Datastream 准备数据库,请配置集群参数组,创建发布内容和复制槽,并设置 Datastream 用户。

在开始之前,请确保您已拥有 Amazon Aurora 集群,并且已连接到主数据库服务器的写入器端点。

创建参数组

  1. 启动 Amazon RDS 信息中心。
  2. 在抽屉式导航栏中,点击参数组,然后点击创建参数组。此时会显示创建参数组 页面。
  3. 使用下表填充此页面的字段,然后点击创建:
    字段说明
    参数组系列选择与您的数据库匹配的系列。
    类型选择数据库集群参数组。
    群组名称为参数组提供名称。
    说明提供参数组的说明。
  4. 选中新建参数组左侧的复选框,然后在参数组操作下点击修改。
  5. 将 rds.logical_replication 参数的值更改为 1 。
  6. 点击保存更改 。

将参数组分配给数据库实例

  1. 启动 Amazon RDS 信息中心。
  2. 在抽屉式导航栏 中,点击数据库 ,然后选择您的 数据库实例。
  3. 从实例操作 菜单中选择修改 。此时会显示修改数据库实例 对话框。
  4. 在其他配置 部分中,选择您创建的数据库集群 参数组。
  5. 将备份保留期限 设置为 7 天 。
  6. 点击继续 。
  7. 在修改时间安排 窗格中,选择立即应用 选项。

重启数据库实例

  1. 启动 Amazon RDS 信息中心。
  2. 在抽屉式导航栏 中,点击数据库 ,然后选择您的 数据库实例。
  3. 在操作 下拉菜单中,依次选择重启 和确认 。

创建发布内容和复制槽

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

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

    替换以下内容:

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

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

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

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

    替换以下内容:

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

创建 Datastream 用户

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

    CREATE USER USER_NAME WITH ENCRYPTED PASSWORD 'USER_PASSWORD';

    替换以下内容:

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

    GRANT RDS_REPLICATION TO USER_NAME;
    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;
    

    替换以下内容:

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

后续步骤