资讯动态

WalMiner:开启 PostgreSQL 异构 CDC 之旅

发布时间:2026/9/29 22:05:35 来源:尧图企业网站定制
本文整理于 HOW 2026 演讲内容演讲者李传成中国联通数据库内核开发工程师。前言在数据库技术日益多元化的今天PostgreSQL 凭借其强大的功能特性和活跃的开源生态已成为众多企业的核心数据存储方案。然而随着业务的发展单一的关系型数据库往往难以满足所有场景的需求——实时数据分析、数据仓库建设、异构系统数据集成等场景都对数据的实时同步提出了更高的要求。WalMiner 正是为解决这一问题而生的工具。它基于 PostgreSQL WALWrite-Ahead Log日志的解码能力不仅提供了高效的数据恢复方案更构建了一套完整的全局逻辑复制体系能够将 PostgreSQL 的数据实时同步到包括 Doris 在内的多种目标数据库。本文将系统介绍 WalMiner 的核心技术、全局逻辑复制的优势以及如何将其运用于 PG 到 Doris 的同步实践。一、WalMiner 是什么WalMiner 的核心模块基于对 WAL 日志的解析处理。与传统的逻辑解码方案需要将 WAL 级别设置为logical不同WalMiner 支持在replica级别进行解码。通过解码 WAL 日志可以细致地观察 PostgreSQL 数据库的历史数据变化过程为问题诊断和数据恢复提供可靠依据。基于这一核心解码能力WalMiner 实现了多项高级功能服务于不同的业务痛点1. replica 级别的逻辑解码WalMiner 支持在replica级别而非logical级别进行全局逻辑复制有效减少了数据库 WAL 日志的积压问题。这一特性使得逻辑复制不再依赖logical级别的设置降低了生产环境的配置门槛和潜在风险。2. 多重更新识别在数据库发生误操作后如果后续又有正常的业务操作对数据进行了修改WalMiner 能够识别出这种复杂的变更序列帮助恢复出用户期望的数据状态。这一功能在数据恢复场景中具有极高的实用价值。3. 集簇级解码传统的 PostgreSQL 逻辑复制需要针对每个数据库单独进行解码——如果有多个数据库需要同步就需要多次读取和解析 WAL 日志。WalMiner 实现了极速集解码能力只需读取一遍 WAL 即可完成多个数据库的解码工作显著降低了对数据库资源的消耗。4. 无侵入式部署原生逻辑解码需要占用数据库的网络、磁盘和 CPU 资源。而 WalMiner 将解码工作完全移至独立机器执行对生产数据库不产生任何额外负载。5. 多版本兼容WalMiner 的最新版本可以适配所有 PostgreSQL 版本用户无需针对特定的 PG 版本选择不同的工具版本。基于上述核心技术WalMiner 构建了两大类应用场景CDC变更数据捕获相关功能和数据库恢复功能。在 CDC 方面WalMiner 提供了表级别并行导入导出工具实测比pg_dump快 8 倍比原生COPY命令快 2 到 3 倍。二、WalMiner 全局逻辑复制 vs PG 原生逻辑复制2.1 PG 原生逻辑复制的局限PostgreSQL 原生的逻辑复制虽然在许多场景下表现良好但也存在一些明显的不足​资源压力​原生逻辑复制依赖logical级别如果订阅端处理不及时会导致主库 WAL 日志大量积压可能耗尽磁盘资源影响业务正常运行。​多次读取开销​在多库场景下需要对每个数据库分别进行 WAL 的读取和遍历造成数据库资源的重复消耗。​故障转移困难​当主库发生故障时需要手动修改下游备库的连接配置才能继续复制无法实现自动故障转移。​不支持 DDL 同步​新建数据库或修改表结构等 DDL 操作下游无法自动感知和同步。2.2 WalMiner 全局逻辑复制的优势WalMiner 采用独立部署架构通过流复制协议从主库拉取 WAL 日志到本地进行解码。解码完成后结果可以在本地暂存并通过多种方式进行消费​直接同步​启动线程将数据直接应用到目标数据库。​服务化订阅​通过 Java 或 Python 程序通过网络连接服务端拉取解码结果进行消费。​灵活输出​支持标准输出便于测试验证、文件存储、时间分片保存等多种输出方式。其中时间分片保存功能特别适用于网络不稳定或生产库无法直接连接目标库的隔离场景——解码结果可先暂存于本地待网络恢复或通过移动存储介质再行传输。在故障转移方面WalMiner 支持配置多个备库地址。当主库发生切换时程序能够自动感知并连接新的主库继续执行逻辑复制任务实现了高可用架构下的无缝衔接。在 DDL 支持方面WalMiner 的全局逻辑复制能够捕获并同步CREATE DATABASE、CREATE TABLE等 DDL 变更确保源端和目标端的结构一致性。三、PG 到 Doris 的同步实践将 PostgreSQL 数据同步到 Doris 等 AP 型数据库是许多企业构建实时数仓的常见需求。WalMiner 提供了一套完整的解决方案。3.1 流程概览PG 到 Doris 的同步与 PG 到 PG 的同步遵循同一套逻辑框架主要步骤包括初始化配置、创建订阅、启动同步。区别在于目标数据库的连接串需要调整为 Doris 的连接参数。3.2 初始化通过walminer pgto init命令进行初始化需要指定配置目录、源库连接串、目标库连接串以及并行度等参数walminer pgto init -c /path/to/config \ --source-connstr1dbnamepostgres hostlocalhost port10070 ... \ --target-connstrdbnamedb1 hostlocalhost port9030 usernameroot ... \ -t 2 -K 2其中-K参数用于指定目标数据库的类型。Doris 有自己特定的取值用户可通过--help查看最新支持的参数值。3.3 创建订阅通过walminer pgto bind命令创建订阅指定需要同步的库和表walminer pgto bind -c /path/to/config -I [sub1][db1.public.test_pgto_2][db1.db1.test_pgto2]需要注意的是Doris 的库结构为两层库和表而 PostgreSQL 为三层库、schema、表。为保持兼容性在配置映射时需要在 Doris 侧补充类似库名的映射处理。3.4 启动同步与验证执行walminer pgto run命令启动同步进程。同步启动后在 PostgreSQL 源端插入的数据可以在 Doris 中即时查询到。跨库的数据同步同样可以正常完成。四、AI 赋能用大模型操作 WalMinerWalMiner 作为命令行工具拥有丰富的参数和帮助文档天然适合被大语言模型LLM调用。通过将 WalMiner 的技能文档加载到 AI 系统中用户可以用自然语言完成原本需要记忆复杂命令才能执行的操作。4.1 误操作数据找回用户只需告诉 AI“我需要恢复某个表的数据”AI 即可自动生成并执行相应的 WalMiner 命令完成数据恢复无需用户记忆任何具体命令。4.2 WAL 日志分析AI 可以自主分析 WAL 日志输出事务数量、操作时间点、LSN 位置、操作类型以及日志资源消耗等详细信息。如果用户有更具体的分析需求只需在技能文档中补充描述AI 便能据此执行定制化的分析任务。4.3 自动化搭建逻辑复制AI 可以端到端地完成全局逻辑复制的搭建根据环境变量解析源库和目标库的连接参数生成并执行初始化命令。自动绑定所有库和所有表询问用户是否需要进行基础数据的全量同步。调用pg_dump等工具完成元数据同步和基础数据同步。启动逻辑复制进程并持续监控同步速度、Gap 值和解码位点等信息。自动生成测试数据验证 DML 同步和跨库同步是否成功并汇报测试结果。通过 AI 的集成WalMiner 的使用门槛被大幅降低——从配置、同步到监控、测试整个流程都可以通过自然语言交互完成。总结WalMiner 通过创新的 WAL 日志解码技术为 PostgreSQL 用户提供了一套高效、灵活、低侵入的全局逻辑复制方案。无论是在 PG 实例之间构建高可用复制架构还是将数据实时同步到 Doris 等 AP 数据库以支撑实时分析场景WalMiner 都展现出了优于原生逻辑复制的诸多特性。而与大模型的结合更进一步降低了工具的使用门槛让复杂的 CDC 任务可以通过自然语言即可完成。在数据实时流动需求日益增长的今天WalMiner 为 PostgreSQL 的数据同步与集成提供了一条值得探索的快捷路径。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑