molt replicator 是 CockroachDB 提供的持续变更数据捕获(CDC)复制工具,用于在 molt fetch 完成初始批量加载后,把源数据库的增量变更持续复制到 CockroachDB。它是独立于 molt 的二进制程序,不由 molt fetch 调用;molt fetch 的“加载并复制”模式已弃用,应直接使用 replicator。
架构上,replicator 从源库读取变更,先缓冲到目标 CRDB 集群的暂存库(_replicator schema),再应用到目标表。按源类型提供子命令:PostgreSQL 用 replicator pglogical,MySQL 用 replicator mylogical,Oracle 用 replicator oraclelogminer,Kafka 用 replicator kafka,云存储用 replicator objstore,CockroachDB CDC 用 replicator start。
典型流程:先用 molt fetch 做初始批量加载(如 --table-handling drop-on-target-and-recreate,仅对空目标使用);在源库创建 publication;在目标创建 _replicator 数据库;用 replicator preflight 测试连通性;再启动对应子命令,指定 --sourceConn、--stagingConn、--stagingSchema、--targetConn、--targetSchema 等;通过 --metricsAddr 暴露 Prometheus 指标监控延迟;延迟接近 0 后切换应用写入并停止 replicator。
源端前置条件:PostgreSQL 需 REPLICATION 权限、wal_level=logical 及 publication;MySQL 需 ROW 格式 binlog、GTID 及 REPLICATION CLIENT 权限;Oracle 需归档日志、补充日志和 LogMiner 权限。常用参数包括 --parallelism、--flushSize、--flushPeriod、连接池参数、重试参数、--dlqTableName 死信队列及日志参数。
注意:_replicator 数据库须先手动创建;publication 与 slot 名称需与 molt fetch 一致;DLQ 表会增长需定期清理;replicator 持有源端复制槽会阻塞 WAL 清理,需监控源盘;优雅关闭依赖 --gracePeriod;无内置告警,需外部基于指标配置。