drainer 下游kafka配置问题

我用delete删除1 GB的数据会提示binlog过大,写入tikv的kv size限制理论多大?

大小限制可以看下这里 https://github.com/pingcap/tidb/blob/master/config/config.toml.example#L246

顺便上一个问题,

`但是实际遇到了savepoint被更新了,而且kafka也有数据进来`

如果这个情况发生了,应该是比较严重的 bug , 能帮忙确认下吗?

drainer的日志被rotate,我稍后复现一下


tidb配置的是100M限制,但是delete仍然能删除1G的数据,产生1G的binlog,请问这个还有其他关联的配置吗

另外,想确认一下pump的gc是否会对drainer产生影响,如果drainer有问题,滞后了N天,N天之内发生了PUMP的GC,那drainer恢复后,请求的binlog全部丢失?

目前没有其它配置了,txn-total-size-limit 这里限制的是 tidb 往 tikv 写入的大小,如果是 delete 的话,这个大小只统计了 key ,不包含 value, 但是 binlog 这里是包含 value 的,所以会产生大于1G的情况。

现在遇到的问题是卡住过不去了,对吗?

这种情况下就会发生数据丢失

卡住过不去的问题,可以解决,改kafka配置(1G,有点大),或者想办法从上游限制binlog,但是生产出现drainer由于message过大,卡住就算了,结果重启若干次以后出现kafka有数据进来了

这个drainer重启若干次,理论上也不会往kafka发数据,这块如果有 debug 日志的话,我们排查下

生产的kafka已经切换了,复现到会跟帖,那我现在有什么配置去限制binlog大小吗


你好,从监控上能看出drainer当时有同步数据到下游吧?

从监控看,像是没有数据同步到下游,最后是一条直线,实际上只有两个点

最后的直线是正常的,符合预期,但是根据对应时间6/22 12:45 的日志,是有数据到下游的

这里是说 12:45:40 发生了中断之后,还是有数据到下游了吗?监控上看不太出来,最好有日志确认

你好,我这边又发生了binlog同步被跳过的问题,Pump的GC周期是2天,23号有1.0 GB的binlog推送失败,后面一直没有管drainer,也没有放大下游的kafka配置,现在drainer已经正常推送了,按理说应该卡在1.0GB的binlog吧

drainer日志(debug日志不全,由于debug日志输入太多,期间关闭过debug):
链接:https://pan.baidu.com/s/1dYY7y9HOoe9jE70Z4nDYYQ
提取码:2fec

ok,你的问题已收到,链接下载速度较慢,这边分析有进展会及时更新帖子。

pump GC 时间是两天的话,那么可能是情况是 pump GC 掉了 1G 的 binlog, 然后 drainer 重启后更新了 GC 后的 checkpoint, 现在应该是发生了丢失。具体我再看日志确认下。

1 个赞

请问,现在有什么配置能够硬限制binlog产生的大小吗, txn-total-size-limit能够实现?

目前没有了,可以参考之前的回答https://asktug.com/t/topic/35495/45?u=luancheng-pingcap


image

drainer debug日志
链接:百度网盘-链接不存在
提取码:pd1g

出现这个报错,但是kafka正常有数据进来,drainer不断重启,检查kafka状态正常,topic 配置message大小是1G,日志中附带drainer配置。

你好

  1. 如果调整 kafka 之后,还是超过了 kafka 的最大 msg 的限制,看是否可以再次调大些
  2. 否则可以修改程序,减小 drainer 的 msg 的写入大小