WalShadow 是面向 ClickHouse Managed Postgres 的原生复制引擎,直接从 PostgreSQL 的预写日志 (WAL) 读取数据。它针对更低延迟和高吞吐工作负载进行了优化,可实现从 Postgres 到 ClickHouse 的亚秒级复制延迟。该项目以开源方式开发,代码位于 ClickHouse/walshadow。
WalShadow 是 Sync to ClickHouse 提供的两种复制方式之一。另一种是 ClickPipes,一条全托管的数据管道。如果你需要最低的延迟和最小的复制开销,请选择 WalShadow。
当你的服务可以使用 WalShadow 时,Overview 页面上会显示 私有预览 横幅。点击 Configure WalShadow 即可开始。
在继续之前,请确保 ClickHouse 能够访问你的 Postgres 服务。
WalShadow 会直接连接作为目标端的 ClickHouse 服务,因此你需要一个具备创建数据库和表权限的 ClickHouse 用户及密码。1
选择复制引擎
选择 WalShadow 作为复制引擎,然后点击 Next。
2
配置复制服务
填写复制设置:
- ClickHouse service:选择已有的 ClickHouse 服务,或新建一个
- Postgres database:选择作为复制来源的源数据库,或新建一个
- Replication method:从以下选项中选择:
- Initial load + CDC:导入现有数据,并持续将新变更同步到表中 (推荐)
- Initial load only:一次性导入现有数据,不再持续更新
- CDC only:跳过初始加载,仅捕获此后产生的新变更
3
选择要复制的表
选择目标数据库,并指定要复制的表:
- Destination database:选择已有的 ClickHouse 数据库,或新建一个
- Tables:展开各个 schema 并逐个选择表,或切换 Select all tables。对于每张表,你可以自定义 Destination table name 并调整 Column settings。
- ClickHouse user 和 ClickHouse password:
WalShadow会直接连接目标 ClickHouse 服务,因此所用凭据需具备创建目标数据库和表的权限。
4
监控 WalShadow
启动复制后,
WalShadow 会出现在 Sync to ClickHouse 页面上。在管道预配和初始加载准备期间,其状态显示为 Creating。预配完成后,状态将变为 Running。页面会实时展示复制的相关指标:- Status:管道的当前状态 (例如
Running) - Rows synced:已同步行数
- Backfills pending:仍在等待初始加载的表数量
- Lag:仍待应用的 WAL 数据量
- Lag time:目标端当前落后 Postgres 的时长
- Uptime:管道已运行的运行时间
- Last updated:指标上次上报的时间
注意事项
在WalShadow 处于私有预览阶段期间,请注意以下几点:
- 目前每个 Postgres 服务仅支持一个
WalShadow。 - 操作以及更详细的指标已列入 roadmap。