> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# 分支

> 从特定时间点快照创建隔离的数据库分支，用于开发、暂存、测试和恢复工作流

Managed Postgres 支持使用时间点恢复 (PITR) 创建隔离的数据库分支。

分支是基于现有数据库某一特定时间点的状态创建的完全独立的 PostgreSQL 部署。分支可用于开发、暂存、测试、调试、数据验证或恢复工作流，且不会影响源数据库。

不同于与主节点数据库共享存储的写时复制实现，Managed Postgres 分支是从备份中恢复而来的，并作为独立的 PostgreSQL 部署运行。

<div id="branching">
  ## 分支的工作原理
</div>

分支创建基于与 [时间点恢复 (PITR) ](/docs/zh/products/managed-postgres/backup-and-restore) 相同的备份和恢复基础设施。

创建分支时，Managed Postgres 会先从对象存储中恢复基础备份，再重放所需的 WAL 分段以到达请求的恢复时间点，并基于恢复后的状态预配一个新的 PostgreSQL 部署。恢复完成后，该分支便会独立于源数据库运行。

生成的分支是源数据库在所选时间点的完整副本。

<div id="common-use-cases">
  ## 常见用例
</div>

<div id="dev-and-testing">
  ### 开发与测试
</div>

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

<div id="staging-environments">
  ### 暂存环境
</div>

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

<div id="date-validation">
  ### 数据验证
</div>

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

<div id="recovery-and-investigation">
  ### 恢复与调查
</div>

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

<div id="branch-sizing">
  ## 分支规格规划
</div>

分支是独立的 PostgreSQL 部署，其规格可以独立于源数据库单独配置。

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

<div id="branch-creation-time">
  ## 分支创建时间
</div>

由于 Managed Postgres 使用 NVMe 支持的 PostgreSQL 存储，分支是通过从备份中恢复来创建的，而不是通过存储层的写时复制机制创建。因此，分支创建并非瞬时完成。

分支创建通常需要几分钟到几十分钟，具体取决于以下因素：

* 数据库大小
* 备份大小
* 恢复点
* 需要重放的 WAL 量
* 整体集群配置

对于大多数部署，分支会在几分钟内可用。较大的数据库可能需要更长时间。

如果分支创建时间成为工作流中的瓶颈，请联系 ClickHouse 团队。在很多情况下，可以根据工作负载特征和恢复要求对分支恢复性能进行优化。

<div id="branches-v-local-dev">
  ## 分支与本地开发
</div>

一个常见问题是，是否每位开发者都应该使用生产分支作为开发环境。

虽然分支对于测试、验证和暂存工作流很有用，但通常并不建议将其作为日常应用开发的主要方式。每个分支都是一个独立的 PostgreSQL 部署，需要从备份中恢复并单独维护。创建大量分支会增加基础设施成本和运维复杂性。

对于大多数组织，我们建议：

* 使用 PostgreSQL 分支进行暂存、测试、调试和验证工作流。
* 使用本地 PostgreSQL 环境进行日常开发。
* 在适当情况下生成用于开发的合成数据集，或使用经过脱敏处理的数据集。
* 避免直接在源自生产环境的分支上进行常规开发。

这种方式可以降低生产系统的负载，提高开发效率，并有助于确保生产数据得到妥善保护。

如需了解如何使用 Docker 创建本地 PostgreSQL 开发环境，请参阅[本地开发环境](/docs/zh/products/managed-postgres/local-development)。

<div id="recommended-workflow">
  ## 推荐流程
</div>

常见的流程如下：

```text theme={null}
Production Database
        │
        ├─────────────► Branch
        │                  │
        │                  ├── Staging
        │                  ├── Validation
        │                  ├── Migration Testing
        │                  └── Incident Investigation
        │
        └─────────────► Local Development
                               │
                               ├── Docker PostgreSQL
                               ├── Application Migrations
                               └── Synthetic Test Data
```

分支最适合用于需要接近生产环境的数据库副本的场景。对于日常开发，本地 PostgreSQL 环境通常能提供更快、成本更低且扩展性更强的工作流。
