TiDB 4.0.5 版本上游加列后, binlog 工具没能将该列的数据同步到 kafka

【 TiDB 使用环境】生产环境
【 TiDB 版本】v4.0.5
【复现路径】
使用 drainer + pump 将 tidb 的数据同步到 kafka ,然后在用阿里云的数据同步任务将数据同步到 MySQL,上游表新增一列后,下游 MySQL 新的列没有数据。
【遇到的问题:问题现象及影响】
在上游 tidb 的表中新增一列数据,下游 mysql 对应的表中没有新增列。
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】
drainer.toml

WARNING: This file is auto-generated. Do not edit! All your modification will be overwritten!

You can use ‘tiup cluster edit-config’ and ‘tiup cluster reload’ to update the configuration

All configuration items you want to change can be added to:

server_configs:

drainer:

aa.b1.c3: value

aa.b2.c4: value

[syncer]
db-type = “kafka”
replicate-do-db = [“db1”, “db2”]

[syncer.to]
kafka-addrs = “XX:XX”
kafka-version = “0.11.0.2”
topic-name = “XX”

[pump.toml]

WARNING: This file is auto-generated. Do not edit! All your modification will be overwritten!

You can use ‘tiup cluster edit-config’ and ‘tiup cluster reload’ to update the configuration

All configuration items you want to change can be added to:

server_configs:

pump:

aa.b1.c3: value

aa.b2.c4: value

请确认一下sync的表在drainer的配置文件里是否有配置

有配置,这个表能够顺利同步到下游,但是加完字段后,新的字段没有同步到下游。

如果有增量日志,可以用reparo解析一下binlog看是drainer未同步到下游,还是本身pump记录就有问题。
https://docs.pingcap.com/zh/tidb/v6.5/tidb-binlog-reparo#reparo-使用文档,reparo配置文件 dest-type = “print” 可以打印出来看一下

可能是由以下几个原因引起的:

  1. 数据同步延迟:可能存在数据同步延迟的问题,导致新增列的数据尚未同步到下游 MySQL。您可以检查数据同步任务的延迟情况,确认数据是否正在传输中。

  2. DDL 同步问题:Drainer 在同步 DDL 变更时可能存在问题。您需要确认 Drainer 是否正确处理了 DDL 变更。可以通过检查 Drainer 的日志来确认是否有关于 DDL 同步失败的错误信息。

  3. 数据同步配置:请检查您的 drainer.tomlpump.toml 配置文件,确认是否包含了正确的配置项,特别是与数据同步相关的配置。您提供的配置文件中有一些占位符(如 aa.b1.c3: value),需要确保这些配置项被正确替换为实际的配置值。

  4. 版本兼容性问题:您使用的是 TiDB 4.0.5 版本,需要确认该版本是否支持列的新增和删除操作,以及这些操作是否能够被 Drainer 和 Pump 正确处理。有时候,旧版本的 TiDB 或相关组件可能不支持某些 DDL 操作的同步。

  5. 阿里云数据同步任务配置:还需要检查阿里云数据同步任务的配置,确认它是否能够正确处理来自 Kafka 的数据变更,包括表结构的变化。