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

使用 CDC 将数据从 Postgres 摄取到 ClickHouse

你可以使用 ClickPipes 将源 Postgres 数据库中的数据摄取到 ClickHouse Cloud。源 Postgres 数据库可以托管在本地环境或云端,例如 Amazon RDS、Google Cloud SQL、Azure Database for Postgres、Supabase 等。

前提条件

在开始之前,需要先确保您的 Postgres 数据库已正确配置。根据您使用的源端 Postgres 实例类型,可以参考以下任一指南:

  1. Amazon RDS Postgres

  2. Amazon Aurora Postgres

  3. Supabase Postgres

  4. Google Cloud SQL Postgres

  5. Azure Flexible Server for Postgres

  6. Neon Postgres

  7. Crunchy Bridge Postgres

  8. 通用 Postgres 源,如果您使用的是其他任何 Postgres 服务提供商,或使用自建实例。

  9. TimescaleDB,如果您在托管服务或自建实例上使用 TimescaleDB 扩展。

注意

PgBouncer、RDS Proxy、Supabase Pooler 等 Postgres 代理不支持基于 CDC(变更数据捕获)的复制。请务必不要在 ClickPipes 配置中使用这些代理,而应填写实际 Postgres 数据库的连接信息。

在完成源端 Postgres 数据库的配置之后,您就可以继续创建 ClickPipe 了。

创建 ClickPipe

请确保你已登录到 ClickHouse Cloud 账号。如果你还没有账号,可以在这里注册。

  1. 在 ClickHouse Cloud 控制台中,找到并进入你的 ClickHouse Cloud 服务实例。
ClickPipes 服务
  1. 在左侧菜单中选择 Data Sources 按钮,然后点击 “Set up a ClickPipe”。
选择导入
  1. 选择 Postgres CDC 卡片。

    选择 Postgres

添加源 Postgres 数据库连接

  1. 填写你在前提条件步骤中已经配置好的源 Postgres 数据库连接信息。

    参考资料

    在开始添加连接信息之前,请确保你已经在防火墙规则中将 ClickPipes 的 IP 地址加入白名单。你可以在这里找到 ClickPipes IP 地址列表。 更多信息请参考本页顶部链接的源 Postgres 设置指南。

    填写连接信息

如果你的源 Postgres 数据库托管在 AWS 上,你可以使用 AWS Private Link 进行连接。这样可以让你的数据传输保持私有。 你可以按照此设置指南来配置连接

(可选)配置 SSH 隧道

如果你的源 Postgres 数据库无法公开访问,你可以配置 SSH 隧道。

  1. 启用 “Use SSH Tunnelling” 开关。

  2. 填写 SSH 连接信息。

    SSH 隧道
  3. 若要使用基于密钥的认证,点击 “Revoke and generate key pair” 生成新的密钥对,并将生成的公钥复制到 SSH 服务器的 ~/.ssh/authorized_keys 中。

  4. 点击 “Verify Connection” 以验证连接。

注意

请确保在 SSH 堡垒机的防火墙规则中将 ClickPipes IP addresses 加入白名单,以便 ClickPipes 能够建立 SSH 隧道。

填写完所有连接信息后,点击 “Next”。

配置复制设置

  1. 确保从下拉列表中选择你在前提条件步骤中创建的 replication slot。

    选择 replication slot

高级设置

如有需要,你可以配置高级设置。下面是每个设置项的简要说明:

  • Sync interval:ClickPipes 轮询源数据库变更的时间间隔。这会对目标 ClickHouse 服务产生影响。对于成本敏感型用户,我们建议将其设置为较大的数值(大于 3600)。
  • Parallel threads for initial load:用于获取初始快照的并行工作线程数量。当你有大量表并希望控制用于获取初始快照的并行工作线程数量时,此设置会很有用。此设置按表生效。
  • Pull batch size:单次批量拉取的行数。这是一个尽力而为的设置,在某些情况下可能不会被严格遵守。
  • Snapshot number of rows per partition:初始快照期间,每个分区要获取的行数。当你的表中有大量行,并希望控制每个分区中获取的行数时,此设置会很有用。
  • Snapshot number of tables in parallel:初始快照期间并行获取的表数量。当你有大量表,并希望控制并行获取的表数量时,此设置会很有用。

配置表

  1. 在这里你可以为 ClickPipe 选择目标数据库。你可以选择一个已有数据库,或者创建一个新数据库。

    选择目标数据库
  2. 你可以从源 Postgres 数据库中选择要复制的表。在选择表时,你还可以在目标 ClickHouse 数据库中重命名这些表,并排除特定列。

    注意

    如果你在 ClickHouse 中定义的排序键与 Postgres 中的主键不同,别忘了阅读与其相关的所有注意事项

检查权限并启动 ClickPipe

  1. 在权限下拉菜单中选择 “Full access” 角色,然后点击 “Complete Setup”。

    检查权限

接下来是什么?

在您设置好 ClickPipe,将数据从 PostgreSQL 复制到 ClickHouse Cloud 之后,就可以专注于如何查询和建模数据以获得最佳性能。请参阅迁移指南,评估哪种策略最适合您的需求,并参考去重策略(使用 CDC)排序键页面,了解 CDC 工作负载的最佳实践。

如需了解 PostgreSQL CDC 的常见问题及故障排除方法,请参阅 Postgres 常见问题页面