跳到主要内容
跳到主要内容

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. 授予 schema 权限。以下示例展示了为 public schema 授权的命令。对于每个希望复制的 schema,重复执行这些命令:

    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(发布集):

    CREATE PUBLICATION clickpipes_publication FOR ALL TABLES;
    

配置网络访问

基于 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 事件通知:利用 AWS RDS 事件通知自动触发更新。
  3. 固定的 EC2 实例:部署一个 EC2 实例,作为轮询服务或基于 IP 的代理。
  4. 使用 Terraform 或 CloudFormation 等工具实现 IP 地址管理自动化。

下一步

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