tidb数据库同步到mysql库存在数据同步延迟的情况

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】:v3.0.14
  • 【问题描述】:在使用binlog做数据同步,tidb为源头,安装了pump和drainer来进行数据同步,下游为mysql库,已经成功。
    问题:我们现在把tidb库当成主库,mysql当成从库使用。主库接收数据,然后同步到从库中,使用从库进行数据查询,在测试数据查询的过程中,发现数据存在延迟,大概有3-4秒的延迟情况。请高手指导一下,pump和drainer这2个组件中,是否可以调整这个同步的时间,缩小数据同步延迟,谢谢!
    若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。
1 个赞

可以参考同步下游mysql慢试试
https://pingcap.com/docs-cn/stable/tidb-binlog/tidb-binlog-faq/

目前是在做功能测试,非性能。所以不考虑增加drainer和pump的个数。
因为在3s时做查询,成功率在95%,6s做查询,成功率100%
后来我查询到可以在pump中做配置,如下

gen-binlog-interval

  • 指定写入 fake binlog 的间隔秒数。
  • 默认: 3
    我把gen-binlog-interval配置为1,1s做查询成功率为95%。

请问一下,这个值可以设置成0.001吗?

这个值是用来在某个 pump 没有收到 binlog 的情况下,不 block 其它 pump 的机制。https://pingcap.com/blog-cn/tidb-binlog-source-code-reading-4/#fake-binlog

可以设置成适当大小,取决于业务,但是 0.001 这个值过小,反而会使性能降低。

因为我们的业务有时效性,就是数据在进入到主库tidb后,就要立刻查询mysql从库。在测试的过程中发现通过binlog进行数据同步(tidb-》mysql)存在着3-4秒的延迟,所以才需要调整配置来缩小延迟,请问一下,是配置这个gen-binlog-interval的值来调整数据延迟吗?多谢。

同步时间主要取决于配置和业务 load, 可以调整 gen-binlog-interval,推荐看下这里的配置介绍,
https://docs.pingcap.com/zh/tidb/dev/tidb-binlog-configuration-file ,尝试调整 drainer 的 worker-count 和 txn-batch 来看看有没有帮助

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。