ticdc 删除操作的old value 显示异常

TiDB 使用环境】tidb-5.4
使用场景: tidb 集群通过ticdc 将数据同步到下游的kafak 中,但是最近发现delete 操作的时候,kafka 解析不到old value ,显示为null 。如下

此集群一直在使用ticdc 同步,最近升级到5.4 之后发现这个问题。
cdc 任务query 状态如下, old-value 显示是开启的。

  "info": {
    "sink-uri": "kafka://xxxxxxx:9092/tidb_fastjson?partition-num=5\u0026max-message-bytes=10485760",
    "opts": {
      "max-message-bytes": "10485760"
    },
    "create-time": "2022-02-18T18:03:00.92298006+08:00",
    "start-ts": 431222441616937000,
    "target-ts": 0,
    "admin-job-type": 0,
    "sort-engine": "unified",
    "sort-dir": "",
    "config": {
      "case-sensitive": true,
      "enable-old-value": true,
      "force-replicate": false,
      "check-gc-safe-point": true,
      "filter": {
        "rules": [
          "up_ks_pigai.*"
        ],
        "ignore-txn-start-ts": [
          1,
          2
        ]
      },

自 5.4 版本开始,delete 类型的事件,相关的数据,将会存放在 Data 字段,这符合 Canal 官方对 Canal-JSON 格式的实现。

old 字段,在 canal-json 的定义中,用于存储之前的数据,仅被 Update 类型使用,其他情况均为 null。

消费端程序,处理 Delete 事件时,应该处理 Data 字段。

TiCDC Canal-JSON Protocol | PingCAP Docs

1 个赞

该主题在最后一个回复创建后60天后自动关闭。不再允许新的回复。