> ## 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.

# 使用 WalShadow 同步到 ClickHouse

> 使用 WalShadow 将 Postgres 数据复制到 ClickHouse；WalShadow 是一款直接读取 PostgreSQL WAL 的原生复制引擎

私有预览

`WalShadow` 是面向 ClickHouse Managed Postgres 的原生复制引擎，直接从 PostgreSQL 的预写日志 (WAL) 读取数据。它针对更低延迟和高吞吐工作负载进行了优化，可实现从 Postgres 到 ClickHouse 的亚秒级复制延迟。该项目以开源方式开发，代码位于 [ClickHouse/walshadow](https://github.com/ClickHouse/walshadow)。

`WalShadow` 是 **Sync to ClickHouse** 提供的两种复制方式之一。另一种是 [ClickPipes](https://clickhouse.com/docs/zh/cloud/managed-postgres/clickpipes.md)，一条全托管的数据管道。如果你需要最低的延迟和最小的复制开销，请选择 `WalShadow`。

当你的服务可以使用 `WalShadow` 时，**Overview** 页面上会显示 **私有预览** 横幅。点击 **Configure WalShadow** 即可开始。

![Postgres 服务概览页面，显示 WalShadow 私有预览横幅以及 Learn more 和 Configure WalShadow 链接](https://mintcdn.com/private-7c7dfe99/1IUPNo0kgSNuyelj/images/managed-postgres/walshadow/overview-banner.webp?fit=max\&auto=format\&n=1IUPNo0kgSNuyelj\&q=85\&s=868266fa6f2514dcdbdaef9696e53327)

> [!NOTE]
>
> 在继续之前，请确保 ClickHouse 能够访问你的 Postgres 服务。`WalShadow` 会直接连接作为目标端的 ClickHouse 服务，因此你需要一个具备创建数据库和表权限的 ClickHouse 用户及密码。

要设置复制，请在 Postgres 实例的侧边栏中点击 **Sync to ClickHouse**，然后点击 **Replicate data in ClickHouse**。

![Sync to ClickHouse 着陆页，显示 ClickPipes 和 WalShadow 两种复制方式](https://mintcdn.com/private-7c7dfe99/1IUPNo0kgSNuyelj/images/managed-postgres/walshadow/sync-landing.webp?fit=max\&auto=format\&n=1IUPNo0kgSNuyelj\&q=85\&s=5932d900f2bd6438fa1ce524a3bc7979)

**1. 选择复制引擎**

选择 **WalShadow** 作为复制引擎，然后点击 **Next**。

![选择复制引擎步骤，显示 ClickPipes 和 WalShadow 选项，其中已选中 WalShadow](https://mintcdn.com/private-7c7dfe99/1IUPNo0kgSNuyelj/images/managed-postgres/walshadow/select-engine.webp?fit=max\&auto=format\&n=1IUPNo0kgSNuyelj\&q=85\&s=4c8138e85677394c695cc11a9455730b)

**2. 配置复制服务**

填写复制设置：

* **ClickHouse service**：选择已有的 ClickHouse 服务，或新建一个
* **Postgres database**：选择作为复制来源的源数据库，或新建一个
* **Replication method**：从以下选项中选择：
  * **Initial load + CDC**：导入现有数据，并持续将新变更同步到表中 (推荐)
  * **Initial load only**：一次性导入现有数据，不再持续更新
  * **CDC only**：跳过初始加载，仅捕获此后产生的新变更

![配置复制服务步骤，显示 ClickHouse 服务、Postgres 数据库和复制方式选项](https://mintcdn.com/private-7c7dfe99/1IUPNo0kgSNuyelj/images/managed-postgres/walshadow/configure-service.webp?fit=max\&auto=format\&n=1IUPNo0kgSNuyelj\&q=85\&s=df2a577cb52e60eefc1fca5f887492f6)

点击 **Next** 继续。

**3. 选择要复制的表**

选择目标数据库，并指定要复制的表：

* **Destination database**：选择已有的 ClickHouse 数据库，或新建一个
* **Tables**：展开各个 schema 并逐个选择表，或切换 **Select all tables**。对于每张表，你可以自定义 **Destination table name** 并调整 **Column settings**。
* **ClickHouse user** 和 **ClickHouse password**：`WalShadow` 会直接连接目标 ClickHouse 服务，因此所用凭据需具备创建目标数据库和表的权限。

![选择表步骤，显示 schema 与表的选择、目标表名称以及 ClickHouse 凭据](https://mintcdn.com/private-7c7dfe99/1IUPNo0kgSNuyelj/images/managed-postgres/walshadow/select-tables.webp?fit=max\&auto=format\&n=1IUPNo0kgSNuyelj\&q=85\&s=03d6e3f80a706c99f2082408ba3e7832)

点击 **Replicate data to ClickHouse** 开始复制。

**4. 监控 WalShadow**

启动复制后，`WalShadow` 会出现在 **Sync to ClickHouse** 页面上。在管道预配和初始加载准备期间，其状态显示为 **Creating**。

![Sync to ClickHouse 页面，显示处于 Creating 状态的 WalShadow](https://mintcdn.com/private-7c7dfe99/1IUPNo0kgSNuyelj/images/managed-postgres/walshadow/walshadow-creating.webp?fit=max\&auto=format\&n=1IUPNo0kgSNuyelj\&q=85\&s=caead405c1e77d03f529034584be0289)

预配完成后，状态将变为 **Running**。页面会实时展示复制的相关指标：

* **Status**：管道的当前状态 (例如 `Running`)
* **Rows synced**：已同步行数
* **Backfills pending**：仍在等待初始加载的表数量
* **Lag**：仍待应用的 WAL 数据量
* **Lag time**：目标端当前落后 Postgres 的时长
* **Uptime**：管道已运行的运行时间
* **Last updated**：指标上次上报的时间

![Sync to ClickHouse 页面，显示处于 Running 状态的 WalShadow，以及已同步行数、滞后和运行时间等指标](https://mintcdn.com/private-7c7dfe99/1IUPNo0kgSNuyelj/images/managed-postgres/walshadow/walshadow-running.webp?fit=max\&auto=format\&n=1IUPNo0kgSNuyelj\&q=85\&s=2bb2a79206e83ac4ef801f944b97602f)

## 注意事项

在 `WalShadow` 处于私有预览阶段期间，请注意以下几点：

* 目前每个 Postgres 服务仅支持一个 `WalShadow`。
* 操作以及更详细的指标已列入 roadmap。
