Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Supabase 数据源设置指南

这是一份介绍如何配置 Supabase Postgres 以供 ClickPipes 使用的指南。

创建具有权限和 replication slot 的用户

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

  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:

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

      CREATE PUBLICATION clickpipes FOR TABLES IN SCHEMA "public";

clickpipes publication 定义了将流式传输到 ClickPipes 的那组表的变更事件。除非你打算复制所有表,否则我们不建议使用 FOR ALL TABLES,因为包含不必要的表会增加从 Postgres 到 ClickPipes 的 WAL 流量,并降低整体复制效率。

增加 max_slot_wal_keep_size

用于 Supabase 的连接详细信息

前往你的 Supabase 项目的 Project Settings -> Database (位于 Configuration 下) 。

重要:在此页面上关闭 Display connection pooler,然后前往 Connection parameters 部分,记录或复制这些参数。

找到 Supabase 连接详细信息

关于 RLS 的说明

ClickPipes 的 Postgres 用户不得受到 RLS 策略的限制,否则可能会导致数据缺失。你可以运行以下命令,为该用户禁用 RLS 策略:

ALTER USER clickpipes_user BYPASSRLS;

接下来做什么?

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

Navigation