binlog同步到mysql库,数据入库顺序不一致。

  • 【TiDB 版本】:v3.0.14
  • 【问题描述】:在使用binlog做数据同步,tidb为源头,安装了pump和drainer来进行数据同步,下游为mysql库,已经成功。
    问题:我们现在把tidb库当成主库,mysql当成从库使用。主库接收数据,然后同步到从库中。
    在tidb库中,有A和B两张表,业务数据入库顺序为先入A表,再入B表。在使用binlog同步数据时发现,下游的mysql库中,不时会出现数据先入B表,再入A表的情况出现,请问一下,binlog在做数据同步时,时间的先后顺序控制的精度是在毫秒级别吗?出现同步数据入库顺序先后有颠倒的原因有哪些?请指导一下,谢谢。
  1. A,B两个表在tidb中入库有什么限制吗? 比如 A要入表成功,B才能入表? 具体sql是什么?

程序中控制着先入的tidb中的A表,再入的B表。
A表入成功后才能入B表,具体的sql就是简单的insert语句,没有特别的地方。

但是通过binlog工具同步到mysql后,通过mysql的binlog文件查看会发现有些时候出现了先入B表,再入A表的情况,这个跟sql语句没有关系吧。

您好,binlog 不能保证不同表的同步顺序,只能保证同一行的按照顺序同步。 这里除非您把同步的进程数调整为1,不能并发同步。

你说的意思是,使用binlog工具同步数据时,可以保证的是同一个表里面的记录是按照先后顺序进行的,无法保证多个表的先后顺序吗?
还有怎么更改同步的进程数为1.谢谢。

是修改worker-count?来调整进程数?

不是同一个表,是同一行,也就是保证最终结果是一致的。 是的修改同步的 worker-count. 这样同步会变慢

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