WalShadow:物理 WAL 进 ClickHouse
后端约 5 分钟阅读

WalShadow:物理 WAL 进 ClickHouse

ClickHouse WalShadow 从 Postgres 物理 WAL 旁路解码进分析库。延迟叙事漂亮,落地仍看 DDL、全量缝、表引擎语义和源库成本。

ClickHouse 在 9 月 10 日发了 WalShadow:从 Postgres 物理 WAL 解码,直接写出 ClickHouse native block,而不是走经典 logical decoding CDC。官宣数字很刺眼——提交后约 200ms 量级可见,基准里能顶到约 29 万行/秒,并声称跟得上源库节奏。完整生命周期也谈到了:初始全量、持续复制、schema 变更、重启恢复、计划内主库切换。

对后端来说,这不是又一个「Postgres 能同步到分析库」的新闻,而是复制链路的取数位置变了。

物理 WAL 和 logical CDC 差在哪

多数 Postgres → OLAP 管道吃的是 logical replication:publication、decoding plugin、slot、中间件把 insert/update/delete 变成消息。好处是语义清晰、过滤表方便;坏处也熟悉——slot 堆积、大事务、DDL 脾气、源库 CPU 被 decoding 咬一口。

WalShadow 吃的是和物理备库同一类 WAL 流,在源外解码,再写成 ClickHouse 侧块。叙事是:延迟和吞吐往物理 standby 靠,数据却立刻能在 ClickHouse 里分析。

这意味着你要换一套心智:

  • 依赖的是 WAL 保留与读取路径,不只是 wal_level=logical 和 slot
  • 表过滤、类型映射、主键/替换合并策略仍在目标侧设计,但源侧「逻辑变更流」不再是唯一真相
  • 和现有 Debezium / PeerDB / 云厂商 CDC 的运维手册不能整本复印

ClickHouse Managed Postgres 方向也在叠同一故事:托管 PG + 低延迟进 CH。自建的人则要自己扛 WAL 运输和解码器版本。

图:机柜近景——理线与状态灯的特写,和通道全景封面区分开。

什么负载真的该动心

值得认真看的:

  • 交易库已经在扛 logical slot 延迟或 decoding CPU
  • 分析要「刚写完就能查」,分钟级滞后不够
  • 你本来就维护物理备库或 WAL 归档,再多一个消费者的边际成本可控
  • 主路径是 append-heavy 或可接受 ReplacingMergeTree 语义的宽表

先别跟风的:

  • 只要几张表、日更报表,现有 logical CDC 稳得像老黄牛
  • 重度依赖 logical 特有中间件生态(复杂变换、多下游扇出已建成)
  • 合规要求「复制必须可解释为行级逻辑变更审计」,而物理解码链路的审计表述还没写进你们的模板
  • 源库小版本/扩展组合怪异,解码器支持矩阵未验证

换复制引擎的成本,往往高于换一个连接串。

设计时我会盯的五件事

  1. RPO/RTO 与可见性
    200ms 是基准叙事,不是你的 SLO。量的是:源提交时间戳 → CH 可查时间;以及故障时重放进度。把「分析可见」和「备库可 failover」分开写。

  2. DDL
    官宣支持 ADD/RENAME/DROP COLUMN、CREATE TABLE 等。预发用你们真实迁移工具打一遍:锁、长 DDL、在线改表工具是否会让解码器愣住。

  3. 初始全量
    存量拷贝窗口、一致性点、切连续复制的缝。大库最怕「全量末尾 + 增量开头」重复或空洞。

  4. 下游表引擎
    当前态用 ReplacingMergeTree + __current 视图一类模式,还是 append-only 事件表,决定查询怎么写。别假设 CH 里天然等于 PG 行快照。

  5. 源库压力
    物理 WAL 消费声称更轻,仍要在高峰看 IO、WAL 盘、网络。复制从来不是免费的读者。

和「湖上建索引 / BM25 回主库」怎么摆

向量检索外置、关键词回 PG、OLAP 外溢——今年后端一直在拆「一个库扛所有查询」。WalShadow 是 OLTP → OLAP 这一跳的加速器。它不取消你对主键、事务、权限模型的责任;它只是让分析副本更接近「刚发生的事实」。

若团队已经在聊 HTAP,先画查询清单:哪些必须见最新提交,哪些可以 5 分钟。只有前者才配为 WalShadow 付运维复杂度。

小结

WalShadow 把 Postgres 到 ClickHouse 的管道从「逻辑变更流」推近「物理 WAL 旁路解码」。延迟叙事漂亮,但后端落地仍是老问题:DDL、全量缝、表引擎语义、SLO 和源库成本。

先在预发用真实 schema 变更和高峰流量打穿,再谈换掉稳妥的 logical CDC。复制链路没有情绪价值,只有故障时你能不能说清楚数据在哪一秒。

相关文章