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

Postgres with TimescaleDB 源设置指南

Beta feature. Learn more.

背景

TimescaleDB 是由 Timescale Inc 开发的开源 Postgres 扩展,它旨在提高分析查询的性能,而无需迁移离开 Postgres。这是通过创建由扩展管理的“超表”,并支持自动分区为“块”来实现的。超表还支持透明压缩和混合行列存储(称为“hypercore”),尽管这些功能需要具有专有许可证的扩展版本。

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

  • Managed Service for Timescale
  • Timescale Cloud

有第三方供应商提供托管服务,允许您使用 TimescaleDB 扩展,但由于许可证限制,这些供应商仅支持开源版本的扩展。

Timescale 超表在多个方面的行为与常规 Postgres 表不同。这给复制它们的过程带来了一些复杂性,这就是为什么考虑复制 Timescale 超表的能力应被视为 尽力而为

支持的 Postgres 版本

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

启用逻辑复制

要遵循的步骤取决于您的 TimescaleDB 实例的部署方式。

  • 如果您使用的是托管服务,并且您的服务提供商在侧边栏中列出,请遵循该提供商的指南。
  • 如果您自己部署 TimescaleDB,请遵循通用指南。

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

信息

Timescale Cloud 不支持启用逻辑复制,这是在 CDC 模式下 Postgres 管道所需的。因此,Timescale Cloud 的用户只能进行一次性加载数据(Initial Load Only)与 Postgres ClickPipe。

配置

Timescale 超表不存储插入到其中的任何数据。相反,数据存储在 _timescaledb_internal 模式下的多个对应“块”表中。对于在超表上运行查询,这并没有问题。但在逻辑复制过程中,我们检测到的变化不是在超表中,而是在块表中。Postgres ClickPipe 有逻辑可以自动将块表中的更改重新映射到父超表,但这需要额外的步骤。

信息

如果您只想进行一次性加载数据(Initial Load Only),请跳过第 2 步及后续步骤。

  1. 为管道创建一个 Postgres 用户,并授予其 SELECT 权限,允许查询您希望复制的表。
备注

确保将 clickpipes_userclickpipes_password 替换为您希望使用的用户名和密码。

  1. 作为 Postgres 超级用户/管理员用户,在源实例上创建一个发布,其中包含您要复制的表和超表 并且还包括整个 _timescaledb_internal 模式。在创建 ClickPipe 时,您需要选择此发布。
提示

我们不推荐创建 FOR ALL TABLES 的发布,这会导致更多的流量从 Postgres 到 ClickPipes(发送其他不在管道中的表的更改),并降低整体效率。

信息

某些托管服务未授予其管理员用户创建整个模式发布所需的权限。如果是这种情况,请向您的服务提供商提交支持票。或者,您可以跳过此步骤及后续步骤,并进行一次性加载数据。

  1. 授予先前创建的用户复制权限。

完成这些步骤后,您应该能够继续 创建 ClickPipe

故障排查

表的初始加载可能会遇到错误:

您可能需要禁用 压缩hypercore 列存储 对于这些表。

配置网络访问

如果您想限制对 Timescale 实例的流量,请允许列入白名单的 文档中的静态 NAT IP 地址。不同供应商的操作步骤会有所不同,请咨询侧边栏,如果您的供应商在列出中,或者向他们提交票据。