跳转到主内容
跳转到主内容

RDS Postgres 源配置指南

支持的 Postgres 版本

ClickPipes 支持 Postgres 12 及更高版本。

启用逻辑复制

如果您的 RDS 实例已经配置了以下设置,可以跳过本节:

  • rds.logical_replication = 1
  • wal_sender_timeout = 0

如果您之前已经使用过其他数据复制工具,这些设置通常已经预先配置好。

postgres=> SHOW rds.logical_replication ;
 rds.logical_replication
-------------------------
 on
(1 row)

postgres=> SHOW wal_sender_timeout ;
 wal_sender_timeout
--------------------
 0
(1 row)

如果尚未完成配置,请按照以下步骤操作:

  1. 针对您的 Postgres 版本创建一个新的参数组,并配置以下必需参数:
    • rds.logical_replication 设置为 1
    • wal_sender_timeout 设置为 0
在 RDS 中在哪里找到参数组?
修改 rds.logical_replication
修改 wal_sender_timeout
  1. 将新的参数组应用到您的 RDS Postgres 数据库
使用新参数组修改 RDS Postgres
  1. 重启您的 RDS 实例以应用更改
重启 RDS Postgres

配置数据库用户

以管理员用户身份连接到你的 RDS Postgres 实例,并执行以下命令:

  1. 为 ClickPipes 创建一个专用用户:

    CREATE USER clickpipes_user PASSWORD 'some-password';
    
  2. 为你在上一步创建的用户授予模式级别的只读访问权限。以下示例展示了对 public 模式的权限设置。对于每个包含你希望复制的表的模式,请重复执行这些命令:

    GRANT USAGE ON SCHEMA "public" TO clickpipes_user;
    GRANT SELECT ON ALL TABLES IN SCHEMA "public" TO clickpipes_user;
    ALTER DEFAULT PRIVILEGES IN SCHEMA "public" GRANT SELECT ON TABLES TO clickpipes_user;
    
  3. 为该用户授予复制权限:

    GRANT rds_replication TO clickpipes_user;
    
  4. 为你希望复制的表创建一个publication。我们强烈建议只在 publication 中包含你需要的表,以避免性能开销。

    注意

    任何包含在 publication 中的表必须定义有 primary key或者 将其 replica identity 配置为 FULL。有关如何设置 publication 作用范围的指导,请参阅 Postgres 常见问题

    • 为特定表创建 publication:

      CREATE PUBLICATION clickpipes FOR TABLE table_to_replicate, table_to_replicate2;
      
    • 为特定模式中的所有表创建 publication:

      CREATE PUBLICATION clickpipes FOR TABLES IN SCHEMA "public";
      

    clickpipes publication 将包含由指定表生成的一组变更事件,并将在后续用于摄取该复制流。

配置网络访问

基于 IP 的访问控制

如果您希望限制访问 RDS 实例的流量,请将文档中列出的静态 NAT IP 添加到 RDS 安全组的 Inbound rules 中。

在 RDS Postgres 中查找安全组的位置
为上述安全组编辑入站规则

要通过私有网络连接到您的 RDS 实例,可以使用 AWS PrivateLink。请参阅我们的 适用于 ClickPipes 的 AWS PrivateLink 设置指南 来完成连接配置。

针对 RDS Proxy 的变通方案

RDS Proxy 不支持逻辑复制连接。如果你的 RDS 使用动态 IP 地址,且无法使用 DNS 名称或 Lambda 函数,可以考虑以下替代方案:

  1. 使用 cron 作业,定期解析 RDS 端点的 IP,并在发生变化时更新 NLB。
  2. 使用结合 EventBridge/SNS 的 RDS 事件通知(RDS Event Notifications):利用 AWS RDS 事件通知自动触发更新。
  3. 使用稳定的 EC2 实例:部署一个 EC2 实例作为轮询服务或基于 IP 的代理。
  4. 使用 Terraform 或 CloudFormation 等工具自动化 IP 地址管理。

下一步

现在您可以创建您的 ClickPipe,并开始将 Postgres 实例中的数据摄取到 ClickHouse Cloud 中。 请务必记录在设置 Postgres 实例时使用的连接详情,因为在创建 ClickPipe 的过程中您将需要用到这些信息。