CDC同步数据错误

能否提供一下 changefeed 配置

配置如下:

# 指定配置文件中涉及的库名、表名是否为大小写敏感
# 该配置会同时影响 filter 和 sink 相关配置,默认为 true
case-sensitive = true

# 是否输出 old value,从 v4.0.5 开始支持,从 v5.0 开始默认为 true
# enable-old-value = true

[filter]
# 忽略指定 start_ts 的事务
#ignore-txn-start-ts = [1, 2]

# 过滤器规则
# 过滤规则语法:https://docs.pingcap.com/zh/tidb/stable/table-filter#表库过滤语法
rules = ['test.rxbn']

[[filter.event-filters]]
matcher = ["test.rxbn"]
ignore-insert-value-expr = "createtime <= '2025-01-01'"
ignore-update-old-value-expr = "createtime <= '2025-01-01'"  

[mounter]
# mounter 线程数,用于解码 TiKV 输出的数据
worker-num = 4

[sink]
# 对于 MQ 类的 Sink,可以通过 dispatchers 配置 event 分发器
# 支持 partition 及 topic(从 v6.1 开始支持)两种 event 分发器。二者的详细说明见下一节。
# matcher 的匹配语法和过滤器规则语法相同,matcher 匹配规则的详细说明见下一节。
#dispatchers = [
#    {matcher = ['test1.*', 'test2.*'], topic = "Topic 表达式 1", partition = "ts" },
#    {matcher = ['test3.*', 'test4.*'], topic = "Topic 表达式 2", partition = "index-value" },
#    {matcher = ['test1.*', 'test5.*'], topic = "Topic 表达式 3", partition = "table"},
#    {matcher = ['test6.*'], partition = "ts"}
#]

# 对于 MQ 类的 Sink,可以指定消息的协议格式
# 目前支持 canal-json、open-protocol、canal、avro 和 maxwell 五种协议。
protocol = "canal-json"

[integrity]
integrity-check-level = "correctness"

确实感觉没啥问题,你把noteid索引去掉,或者把noteid的长度加长到255看下有没有效果呢,我这没有8.1的环境没法测试

可不可能测试只保留表结构,其它索引和约束去掉以后,是否同步正常呢?

我试试

我试一下

还是不行

试了,还是不行

你这个太奇怪了,tidb 和 tikv 的版本和 cdc 一致吗?重新建 changefeed,按照复现 sql 测试也会有有这个问题?

是的,版本都是8.1.0。表和changefeed都重建过,还是一样会出问题。

查询这个表的时候报错:
DB::TiFlashException: Income key ranges is empty for region_id=4914689476,我估计和这个问题有关系,查询报错的问题我看已经解决了:查tiflash报1105 - DB::TiFlashException: Income key ranges is empty for region_id= ,后面等我们升级完版本之后再看看同步的问题是否正常。

1 个赞