Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Postgres TimescaleDB 源设置指南

Beta 版功能

背景

TimescaleDB 是由 Timescale Inc 开发的开源 Postgres 扩展, 旨在提升分析查询性能,同时无需离开 Postgres。为此,它会创建由该扩展管理的 “hypertable”,并支持自动分区为 “chunks”。 hypertable 还支持透明压缩和混合行列式存储 (称为 “hypercore”) ,不过这些 功能需要使用采用专有许可的扩展版本。

Timescale Inc 还为 TimescaleDB 提供两种托管服务:

  • Managed Service for Timescale
  • Timescale Cloud.

此外,也有第三方厂商提供支持使用 TimescaleDB 扩展的托管服务,但由于 许可限制,这些厂商仅支持该扩展的开源版本。

Timescale hypertable 在多个方面的行为都不同于普通的 Postgres 表。这给复制它们的过程带来了一些复杂性, 因此,复制 Timescale hypertable 的能力应视为 尽力而为

支持的 Postgres 版本

ClickPipes 支持 Postgres 12 及以上版本。

启用逻辑复制

具体需要执行哪些步骤,取决于您的 TimescaleDB Postgres 实例是如何部署的。

  • 如果您使用的是托管服务,且您的提供商已列在侧边栏中,请按照该提供商对应的指南操作。
  • 如果您是自行部署 TimescaleDB,请按照通用指南操作。

对于其他托管服务,如果尚未启用逻辑复制,请向您的提供商提交支持工单,请其协助启用。

配置

Timescale hypertable 本身不会存储插入其中的数据。相反,数据会存储在多个对应的 “chunk” 表中,这些表位于 _timescaledb_internal schema 下。对于在 hypertable 上执行查询,这并不是问题。但在逻辑复制期间,我们检测到的不是 hypertable 中的变更,而是 chunk 表中的变更。Postgres ClickPipe 内置了自动将 chunk 表中的变更重新映射到父 hypertable 的逻辑,但这需要额外的配置步骤。

  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. 以 Postgres superuser/admin 身份,使用你想要复制的 hypertable 创建一个 publication。该 publication 还必须包含整个 _timescaledb_internal schema,这样管道才能接收底层 chunk 表的变更。我们强烈建议仅在 publication 中包含所需的表,以避免额外的性能开销。

   -- When adding new tables to the ClickPipe, you'll need to add them to the publication manually as well.
   CREATE PUBLICATION clickpipes FOR TABLE table_to_replicate, table_to_replicate2, TABLES IN SCHEMA _timescaledb_internal;

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

完成这些步骤后,你应该就可以继续创建 ClickPipe了。

配置网络访问

如果你想限制对 Timescale 实例的流量访问,请将文档中列出的静态 NAT IP 地址加入允许列表。 具体操作因提供商而异;如果侧边栏中列出了你的提供商,请参考相应说明,或向他们提交 工单。

Navigation