跳到主要内容
跳到主要内容
编辑此页面

通用 Postgres 源设置指南

信息

如果您使用受支持的提供商之一(在侧边栏中),请参阅该提供商的特定指南。

ClickPipes 支持 Postgres 版本 12 及更高版本。

启用逻辑复制

  1. 要启用 Postgres 实例上的复制,我们需要确保设置以下设置

    wal_level = logical

    要检查相同内容,您可以运行以下 SQL 命令

    SHOW wal_level;

    输出应为 logical。如果不是,请运行

    ALTER SYSTEM SET wal_level = logical;
  2. 此外,建议在 Postgres 实例上设置以下设置

    max_wal_senders > 1
    max_replication_slots >= 4

    要检查相同内容,您可以运行以下 SQL 命令

    SHOW max_wal_senders;
    SHOW max_replication_slots;

    如果值与建议值不符,您可以运行以下 SQL 命令来设置它们

    ALTER SYSTEM SET max_wal_senders = 10;
    ALTER SYSTEM SET max_replication_slots = 10;
  3. 如果您对上述配置进行了任何更改,您需要重新启动 Postgres 实例以使更改生效。

创建具有权限和发布的用户

让我们为 ClickPipes 创建一个新用户,该用户具有适用于 CDC 的必要权限,并创建一个我们将用于复制的发布。

为此,您可以连接到您的 Postgres 实例并运行以下 SQL 命令

  CREATE USER clickpipes_user PASSWORD 'clickpipes_password';
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;

-- Give replication permission to the USER
ALTER USER clickpipes_user REPLICATION;

-- Create a publication. We will use this when creating the pipe
CREATE PUBLICATION clickpipes_publication FOR ALL TABLES;
注意

请务必将 clickpipes_userclickpipes_password 替换为您所需的用户名和密码。

在 pg_hba.conf 中为 ClickPipes 用户启用连接

如果您是自助服务,您需要按照以下步骤允许从 ClickPipes IP 地址连接到 ClickPipes 用户。如果您使用的是托管服务,您可以按照提供商的文档执行相同的操作。

  1. pg_hba.conf 文件进行必要的更改,以允许从 ClickPipes IP 地址连接到 ClickPipes 用户。pg_hba.conf 文件中的示例条目如下所示

    host    all   clickpipes_user     0.0.0.0/0          scram-sha-256
  2. 重新加载 PostgreSQL 实例以使更改生效

    SELECT pg_reload_conf();

增加 max_slot_wal_keep_size

这是一个建议的配置更改,以确保大型事务/提交不会导致复制槽被删除。

您可以通过更新 postgresql.conf 文件,将 PostgreSQL 实例的 max_slot_wal_keep_size 参数增加到更高的值(至少 100GB 或 102400)。

max_slot_wal_keep_size = 102400

您可以重新加载 Postgres 实例以使更改生效

SELECT pg_reload_conf();
注意

为了更好地推荐此值,您可以联系 ClickPipes 团队。

下一步是什么?

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