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

Google Cloud SQL Postgres 源端设置指南

信息

如果您使用侧边栏中列出的受支持提供商之一,请参阅该提供商的相应指南。

支持的 Postgres 版本

Postgres 12 及更高版本

启用逻辑复制

如果 cloudsql. logical_decoding 已经为 on 且 wal_sender_timeout 为 0,则无需执行以下步骤。若您是从其他数据复制工具迁移,这些设置通常已经预先配置好。

  1. 在概览页面点击 Edit 按钮。
Cloud SQL Postgres 中的 Edit 按钮
  1. 打开 Flags,将 cloudsql.logical_decoding 修改为 on,并将 wal_sender_timeout 修改为 0。这些更改需要重启您的 Postgres 服务器才能生效。
将 cloudsql.logical_decoding 修改为 on
已修改 cloudsql.logical_decoding 和 wal_sender_timeout
重启服务器

创建 ClickPipes 用户并授予权限

使用管理员用户连接到 Cloud SQL 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. 为该用户授予复制权限:

    ALTER USER clickpipes_user WITH REPLICATION;
    
  4. 使用需要复制的表创建一个 publication。强烈建议仅在 publication 中包含所需的表,以避免额外的性能开销。

    注意

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

    • 为指定的表创建 publication:

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

      CREATE PUBLICATION clickpipes FOR TABLES IN SCHEMA "public";
      

    clickpipes publication 将包含由指定表生成的变更事件集合,之后会被用于摄取复制流。

将 ClickPipes IP 添加到防火墙

请按照以下步骤将 ClickPipes IP 添加到您的网络中。

注意

如果您使用的是 SSH 隧道(SSH Tunneling),则需要将 ClickPipes IP 添加到跳板机/堡垒机(Jump Server/Bastion)的防火墙规则中。

  1. 转到 Connections 区域
Cloud SQL 中的 Connections 区域
  1. 转到 Networking 子菜单
Cloud SQL 中的 Networking 子菜单
  1. 添加 ClickPipes 的公网 IP
将 ClickPipes 网络添加到防火墙
已将 ClickPipes 网络添加到防火墙

下一步

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