从Neon Postgres迁移到ClickHouse Managed Postgres
DataHot 速览
ClickHouse官方博客分享了三支团队将生产Postgres工作负载从Neon迁移到ClickHouse Managed Postgres的案例。迁移原因包括负载下的可靠性问题、性能不稳定、基础设施成本和网络传输费用上升。迁移后,团队报告了更稳定的查询性能、更少运维问题和更低成本;Infinitas Learning在相同schema下p99查询延迟从秒级降至个位数毫秒,且通过ClickPipes在数小时内完成数据迁移。
为什么值得关注:真实迁移案例展示了托管Postgres在扩展阶段的性能与成本权衡,以及ClickPipes支持快速数据迁移的实践价值,对维护数据基础设施的从业者有参考意义。
本文目录 6 节
译文
AI 逐段翻译摘要:在过去的几个月里,越来越多的团队将其生产环境的Postgres工作负载从Neon迁移到ClickHouse Managed Postgres。他们的原因各不相同,但在我们的对话中出现了共同的主题:负载下的可靠性问题、工作负载增长时性能变得不太可预测、基础设施成本上升以及网络传输费用。迁移后,这些团队告诉我们,他们看到了改进的可靠性、更快更一致的查询性能、更少的运营问题以及更低的成本。每个人还使用ClickPipes在数小时内完成了数据迁移。
我们与其中三个团队进行了交流,以了解更多关于他们的经验。他们处于非常不同的阶段:Shipsidekick是一家AI驱动的物流初创公司,socialpruf.是一个快速增长的实时社交情报平台,而Infinitas Learning是欧洲领先的教育出版商之一。我们向他们每个人问了同样的四个问题。以下是我们得到的信息。
"在完全相同的架构下,我们的p99 Postgres查询延迟从秒级改善到个位数毫秒。" — Jerome van den Heuvel,Infinitas Learning工程经理
贵公司做什么,Postgres如何支持您的产品?
Sawyer Bateman,Shipsidekick创始人:"我们通过将Shopify与物流提供商连接,使运输和仓储变得无缝。Postgres为一切提供支持——从我们在Vercel上的Next.js应用程序到我们的后端运营。"
Semyon Khlavich,socialpruf.创始人兼CTO:"我们将社交数据转化为面向品牌、人才经纪公司和体育媒体公司的实时洞察。Postgres是我们的记录系统,而ClickHouse为我们的客户分析提供支持。"
Jerome van den Heuvel,Infinitas Learning工程经理:"Infinitas Learning是欧洲最大的教育出版商之一。我们的Results & Insights团队使用Postgres和ClickHouse处理和分析在我们数字学习平台上完成的练习。"
三种不同的产品,三种不同的规模,但底层模式相同:Postgres是记录系统,而在这三个中的两个中,ClickHouse已经在其旁边用于分析。
您在Neon上遇到了哪些挑战?
具体细节不同,但主题相同。这些团队最初使用Neon效果很好,但随着工作负载和生产需求的增长,每个团队都遇到了挑战。
对于Shipsidekick来说,这变成了一个面向客户的问题。Sawyer告诉我们:"Neon成为客户沮丧的根源。我们经历了频繁的崩溃、高峰时段超过10分钟的停机,以及共享网关上的连接池耗尽。即使达到最大16个计算单元,CPU使用率仍然很高,缓存命中率很低。"
socialpruf.随着数据增长,既遇到了可靠性限制,也遇到了成本限制。用Semyon的话说:"当我们扩展到数百GB时,Neon变得不可靠且更昂贵。连接中断和重启使我们的数据管道停滞,需要手动干预。最重要的是,到ClickHouse的网络传输费用增长到超过我们计算成本的一半。"
Infinitas Learning遇到了运营和平台问题的组合。Jerome:"我们遇到了Neon的几个挑战:
- 支持变得缓慢且响应不及时。
- CPU和内存利用率在没有明确解释的情况下增加。
- Neon弃用其Azure区域要求我们迁移。
- 在主要Postgres版本之间升级意味着迁移到全新的服务器。"
自从迁移到ClickHouse Managed Postgres后,您看到了什么价值?
每个团队都将改进描述为立竿见影,而这完全来自平台变化,而不是重写查询或架构。
Shipsidekick:"差异立竿见影:零停机,99%的缓存命中率,峰值工作负载在类似规模的计算上仅使用约10%的CPU。我们如今支付的费用更少,还有进一步缩减规模的空间。"
socialpruf.:"影响立竿见影:零连接中断或重启,整体查询速度提高约30%,某些查询的性能提升高达5倍。一个关键查询从42毫秒降至22毫秒。我们还消除了网络传输成本,现在可以可靠地处理数千个并发连接,使用PgBouncer。"
Infinitas Learning:"在完全相同的架构下,我们的p99 Postgres查询延迟从秒级改善到个位数毫秒。我们还看到了更可靠和可预测的性能。"
这里有两件事值得一提。首先,这些结果与ClickHouse Managed Postgres架构的优势一致,该架构使用本地NVMe存储来消除网络附加存储瓶颈。这有助于提供更快且同样重要的更可预测的查询性能。其次,对于已经使用ClickHouse进行分析的团队,两个系统现在位于同一平台上,因此将Postgres更改流式传输到ClickHouse的网络传输费用完全消失。
您是如何进行迁移的,整体体验如何?
这是我们最好奇的部分,因为迁移风险通常是将团队留在他们已经超越的平台上的原因。这三家都使用了ClickPipes,它内置于ClickHouse Managed Postgres中,处理架构迁移、使用并行快照进行优化的初始加载,以及变更数据捕获(CDC),以便在切换前保持两个数据库同步。
"我们750GB的数据库在不到16小时内完成了迁移。相比之下,将较小的250GB数据库迁移到Neon花费了三天,并且需要大量手动干预。" — Jerome van den Heuvel,Infinitas Learning工程经理
Shipsidekick遵循指南并在周末完成切换。Sawyer:"迁移快速而直接。我们遵循了Neon迁移指南,使用ClickPipes在四到五个小时内移动了数据,并在周末无缝切换到ClickHouse Managed Postgres。"
socialpruf.在改用 ClickPipes 之前,我首先尝试了手动方法。Semyon:“在原生逻辑复制失败后,ClickHouse 团队帮助我们使用 ClickPipes 在短短几个小时内迁移了 0.5 TB 的数据。我们保持两个数据库同步一周,使用数据库分支进行测试,然后顺利完成生产切换。”
Infinitas Learning 在早期迁移到 Neon 时有直接的对比经验。Jerome:“使用 ClickPipes 的迁移很简单。我们配置了服务器,创建了模式,并使用 ClickPipes 传输数据。我们的 750 GB 数据库在 16 小时内完成迁移。相比之下,将较小的 250 GB 数据库迁移到 Neon 花了三天时间,并且需要大量手动干预。”
“在原生逻辑复制失败后,ClickHouse 团队帮助我们使用 ClickPipes 在短短几个小时内迁移了 0.5 TB 的数据。” — Semyon Khlavich,创始人,socialpruf。
共同点是:初始加载在数小时内完成,CDC 在团队测试时保持目标数据库最新,切换按团队自己的时间表进行。
迁移路径
如果您正在考虑进行同样的迁移,以下是简要说明。完整的 Neon 到 ClickHouse 托管 Postgres 迁移指南 包含所有步骤。
1. 准备 Neon。 创建一个具有读取和复制权限的专用用户,并在 Neon 控制台的 设置 → 逻辑复制 下启用逻辑复制。每个要复制的表都需要主键或 REPLICA IDENTITY FULL。如果使用 IP 限制,请允许 ClickPipes 静态 IP。Neon 源设置指南 详细介绍了这一点。
2. 使用 ClickPipes 迁移。 在 ClickHouse Cloud 控制台中,从托管 Postgres 服务转到 数据源 → 开始导入,指向 Neon,然后选择 初始加载 + CDC。ClickPipes 将模式迁移到空的目标数据库,运行并行初始加载,然后保持目标数据库与 Neon 同步。您可以在控制台中查看每个表的进度和复制延迟。
3. 切换。 一旦复制延迟接近零:停止在 Neon 上写入,验证行数和模式,重置序列,并更新应用程序的连接字符串。短暂保持 Neon 只读,以防需要回滚,然后删除 ClickPipe 及其复制槽。
需要记住的一些事项:
- 分支。 Neon 的写时复制分支是即时的。在 ClickHouse 托管 Postgres 中,分支是通过 时间点恢复 创建的独立部署,通常根据数据库大小在几分钟到几十分钟内可用。许多团队保留一个小型开发数据库,包含脱敏数据,并从中进行分支。请参阅 分支文档。
- Neon Serverless 驱动。 如果您的应用程序使用
@neondatabase/serverless(常见于 Vercel),请将其替换为标准驱动程序,例如 node-postgres。对于许多短生命周期连接,使用 捆绑的 PgBouncer,它以事务池模式运行。 - 连接限制。 默认是 500 个直接连接;PgBouncer 支持多达 5,000 个客户端连接,且
max_connections可以在 设置 → 编辑参数 中提高。 - 迁移期间的模式更改。 CDC 复制插入、更新、删除和
ADD COLUMN。其他 DDL(索引、触发器、枚举更改、约束、函数)必须在切换前手动应用到目标数据库。保持启动 ClickPipes 和切换之间的时间窗口较短。迁移常见问题解答 涵盖了常见错误。
开始使用
“我们今天支付更少,并且还有进一步缩减的空间。” — Sawyer Bateman,创始人,Shipsidekick
Sawyer、Semyon 和 Jerome 都认为这次迁移快速且低风险,并且现在都在以更低的成本运行更快、更可预测的 Postgres。
如果您正在考虑从 Neon 迁移,ClickHouse 托管 Postgres 只需要几个小时的工作。我们的 迁移指南 将指导您完成整个过程,如果您需要帮助,联系我们,我们将与您一起解决。
这篇内容对你有用吗?
反馈只用于改善内容筛选,不等同于收藏