现象:
- drainer 无报错,但是不产生 binlog 到下游
原因1:
- 新部署的 TiDB-Binlog,启动 pump drainer 后,发现无报错,但是下游没有数据写入的情况,可以检查 binlog.enable 参数是否是打开的状态。参数配置可以参考该链接:https://github.com/pingcap/tiup/blob/master/examples/topology.example.yaml#L154
解决方案:
- 配置 binlog.enable:true,并 reload 集群
原因2:
- 稳定正常运行的 TiDB-Binlog,突然 drainer 不产生日志到下游,并且 drainer.log 也都是 INFO 信息,需要确认 tidb 配置中 ignore-error 是否为开启的状态。TiDB 配置开启 ignore-error 写 binlog 失败后触发 critical error 告警,后续都不会再写 binlog,所以会有 binlog 数据丢失。
解决方案:
排查方式
- 通过 curl http://127.0.0.1:10080/info/all 可以查看当前集群中 binlog_status 的状态,正常状态下,binlog_status 都是 on,如果 binlog 未开启,binlog_status 状态会是 off;skipping 表示当前正在进行跳过错误,需要进一步确认 tidb 集群中是否配置* ignore-error *参数。