Skip to main content
Managed Postgres 支持使用时间点恢复 (PITR) 创建隔离的数据库分支。 分支是基于现有数据库某一特定时间点的状态创建的完全独立的 PostgreSQL 部署。分支可用于开发、暂存、测试、调试、数据验证或恢复工作流,且不会影响源数据库。 不同于与主节点数据库共享存储的写时复制实现,Managed Postgres 分支是从备份中恢复而来的,并作为独立的 PostgreSQL 部署运行。

分支的工作原理

分支创建基于与 时间点恢复 (PITR) 相同的备份和恢复基础设施。 创建分支时,Managed Postgres 会先从对象存储中恢复基础备份,再重放所需的 WAL 分段以到达请求的恢复时间点,并基于恢复后的状态预配一个新的 PostgreSQL 部署。恢复完成后,该分支便会独立于源数据库运行。 生成的分支是源数据库在所选时间点的完整副本。

常见用例

开发与测试

从生产数据库或暂存数据库创建分支,以基于真实数据验证应用更改、迁移或新功能。

暂存环境

维护一个尽可能贴近生产环境的暂存环境,同时又不影响生产工作负载。

数据验证

在部署到生产环境之前,先测试 schema 变更、索引策略和查询优化方案。

恢复与调查

将数据库恢复到特定时间点,用于故障排查、审计或验证应用程序行为。

分支规格规划

分支是独立的 PostgreSQL 部署,其规格可以独立于源数据库单独配置。 例如,生产部署可能使用更大的配置,而开发或暂存分支则可以使用较小的计算 profile 以降低成本。这样,团队就能创建临时环境,而无需配备与生产环境相同规模的计算资源。

分支创建时间

由于 Managed Postgres 使用 NVMe 支持的 PostgreSQL 存储,分支是通过从备份中恢复来创建的,而不是通过存储层的写时复制机制创建。因此,分支创建并非瞬时完成。 分支创建通常需要几分钟到几十分钟,具体取决于以下因素:
  • 数据库大小
  • 备份大小
  • 恢复点
  • 需要重放的 WAL 量
  • 整体集群配置
对于大多数部署,分支会在几分钟内可用。较大的数据库可能需要更长时间。 如果分支创建时间成为工作流中的瓶颈,请联系 ClickHouse 团队。在很多情况下,可以根据工作负载特征和恢复要求对分支恢复性能进行优化。

分支与本地开发

一个常见问题是,是否每位开发者都应该使用生产分支作为开发环境。 虽然分支对于测试、验证和暂存工作流很有用,但通常并不建议将其作为日常应用开发的主要方式。每个分支都是一个独立的 PostgreSQL 部署,需要从备份中恢复并单独维护。创建大量分支会增加基础设施成本和运维复杂性。 对于大多数组织,我们建议:
  • 使用 PostgreSQL 分支进行暂存、测试、调试和验证工作流。
  • 使用本地 PostgreSQL 环境进行日常开发。
  • 在适当情况下生成用于开发的合成数据集,或使用经过脱敏处理的数据集。
  • 避免直接在源自生产环境的分支上进行常规开发。
这种方式可以降低生产系统的负载,提高开发效率,并有助于确保生产数据得到妥善保护。 如需了解如何使用 Docker 创建本地 PostgreSQL 开发环境,请参阅本地开发环境 常见的流程如下:
分支最适合用于需要接近生产环境的数据库副本的场景。对于日常开发,本地 PostgreSQL 环境通常能提供更快、成本更低且扩展性更强的工作流。
Last modified on July 3, 2026