> ## 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 的原生复制引擎

export const Image = ({img, alt, size = "lg", background}) => {
  const normalizedSize = ["sm", "md", "lg"].includes(size) ? size : "lg";
  const backgroundColor = background === "white" ? "white" : background === "black" ? "rgb(31 31 28)" : undefined;
  return <div className={`ch-image-${normalizedSize}`}>
      <Frame>
        <img src={img} alt={alt} style={{
    backgroundColor
  }} />
      </Frame>
    </div>;
};

export const PrivatePreviewBadge = () => {
  return <div className="privatePreviewBadge">
            <div className="privatePreviewIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path d="M5.33301 6.66667V4.66667V4.66667C5.33301 3.194 6.52701 2 7.99967 2V2C9.47234 2 10.6663 3.194 10.6663 4.66667V4.66667V6.66667" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path d="M8.00033 9.33337V11.3334" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path fillRule="evenodd" clipRule="evenodd" d="M11.333 14H4.66634C3.92967 14 3.33301 13.4033 3.33301 12.6666V7.99996C3.33301 7.26329 3.92967 6.66663 4.66634 6.66663H11.333C12.0697 6.66663 12.6663 7.26329 12.6663 7.99996V12.6666C12.6663 13.4033 12.0697 14 11.333 14Z" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>
        </div>
            {'私有预览'}
        </div>;
};

<PrivatePreviewBadge />

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

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

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

<Image img="https://mintcdn.com/private-7c7dfe99/1IUPNo0kgSNuyelj/images/managed-postgres/walshadow/overview-banner.webp?fit=max&auto=format&n=1IUPNo0kgSNuyelj&q=85&s=868266fa6f2514dcdbdaef9696e53327" alt="Postgres 服务概览页面，显示 WalShadow 私有预览横幅以及 Learn more 和 Configure WalShadow 链接" size="md" border width="3680" height="2392" data-path="images/managed-postgres/walshadow/overview-banner.webp" />

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

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

<Image img="https://mintcdn.com/private-7c7dfe99/1IUPNo0kgSNuyelj/images/managed-postgres/walshadow/sync-landing.webp?fit=max&auto=format&n=1IUPNo0kgSNuyelj&q=85&s=5932d900f2bd6438fa1ce524a3bc7979" alt="Sync to ClickHouse 着陆页，显示 ClickPipes 和 WalShadow 两种复制方式" size="md" border width="3680" height="2392" data-path="images/managed-postgres/walshadow/sync-landing.webp" />

<Steps>
  <Step title="选择复制引擎" id="select-replication-engine">
    选择 **WalShadow** 作为复制引擎，然后点击 **Next**。

    <Image img="https://mintcdn.com/private-7c7dfe99/1IUPNo0kgSNuyelj/images/managed-postgres/walshadow/select-engine.webp?fit=max&auto=format&n=1IUPNo0kgSNuyelj&q=85&s=4c8138e85677394c695cc11a9455730b" alt="选择复制引擎步骤，显示 ClickPipes 和 WalShadow 选项，其中已选中 WalShadow" size="md" border width="3680" height="2392" data-path="images/managed-postgres/walshadow/select-engine.webp" />
  </Step>

  <Step title="配置复制服务" id="configure-replication-service">
    填写复制设置：

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

    <Image img="https://mintcdn.com/private-7c7dfe99/1IUPNo0kgSNuyelj/images/managed-postgres/walshadow/configure-service.webp?fit=max&auto=format&n=1IUPNo0kgSNuyelj&q=85&s=df2a577cb52e60eefc1fca5f887492f6" alt="配置复制服务步骤，显示 ClickHouse 服务、Postgres 数据库和复制方式选项" size="md" border width="3680" height="2392" data-path="images/managed-postgres/walshadow/configure-service.webp" />

    点击 **Next** 继续。
  </Step>

  <Step title="选择要复制的表" id="select-tables">
    选择目标数据库，并指定要复制的表：

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

    <Image img="https://mintcdn.com/private-7c7dfe99/1IUPNo0kgSNuyelj/images/managed-postgres/walshadow/select-tables.webp?fit=max&auto=format&n=1IUPNo0kgSNuyelj&q=85&s=03d6e3f80a706c99f2082408ba3e7832" alt="选择表步骤，显示 schema 与表的选择、目标表名称以及 ClickHouse 凭据" size="md" border width="3680" height="2392" data-path="images/managed-postgres/walshadow/select-tables.webp" />

    点击 **Replicate data to ClickHouse** 开始复制。
  </Step>

  <Step title="监控 WalShadow" id="monitor-walshadow">
    启动复制后，`WalShadow` 会出现在 **Sync to ClickHouse** 页面上。在管道预配和初始加载准备期间，其状态显示为 **Creating**。

    <Image img="https://mintcdn.com/private-7c7dfe99/1IUPNo0kgSNuyelj/images/managed-postgres/walshadow/walshadow-creating.webp?fit=max&auto=format&n=1IUPNo0kgSNuyelj&q=85&s=caead405c1e77d03f529034584be0289" alt="Sync to ClickHouse 页面，显示处于 Creating 状态的 WalShadow" size="md" border width="3680" height="2392" data-path="images/managed-postgres/walshadow/walshadow-creating.webp" />

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

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

    <Image img="https://mintcdn.com/private-7c7dfe99/1IUPNo0kgSNuyelj/images/managed-postgres/walshadow/walshadow-running.webp?fit=max&auto=format&n=1IUPNo0kgSNuyelj&q=85&s=2bb2a79206e83ac4ef801f944b97602f" alt="Sync to ClickHouse 页面，显示处于 Running 状态的 WalShadow，以及已同步行数、滞后和运行时间等指标" size="md" border width="3680" height="2392" data-path="images/managed-postgres/walshadow/walshadow-running.webp" />
  </Step>
</Steps>

<h2 id="caveats">
  注意事项
</h2>

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

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