DM同步时,DM报错 TCPReader get relay event with error: ERROR 1236 (HY000)

通过query-tatus查询出来的异常信息:



查找dm worker下的relay_log目录,relay log同步到了mysqlslave-bin.000078
image

查找上游mysql的bing log信息,已经到mysqlslave-bin.000087

image

偿试过重启dm work不起作用。没有手动同步binlog文件,怕有些数据丢失。
造成这个问题的原因是什么?需要如何处理呢?

您好,需要您这边确认一些信息

  • 这边上游的 mysql 版本
  • 看下这个 max_allowed_packet 设置大小

目前发现 MySQL 5.7.1 (含) 及之前的版本、MariaDB 10.1.2 (含) 及之前的版本,如果上游 server 有主从结构(非单台独立 server),则记录下来的 binlog 会存在问题。在进行增量同步时,可能存在 binlog event position 与 event 实际在文件中的 position 不一致的情况。MySQL 在 5.7.2 中、MariaDB 在 10.1.3 中已经修复。

因此,我们 DM/Syncer 对上游的版本限制需要改变:

如果上游不存在主从结构,则仍然是:

  • 5.5 < MySQL 版本 < 5.8
  • MariaDB 版本 >= 10.1.2

如果上游存在主从结构,则:

  • 5.7.1 < MySQL 版本 < 5.8
  • MariaDB 版本 >= 10.1.3

错误更新 pos 的一个举例:

MySQL 5.7.1:[https://github.com/mysql/mysql-server/blob/72742691286309b61b47f14a3cc734507907aba6/sql/rpl_master.cc#L1161]

上游mysql版本为主从结构,版本:5.6.43-log
max_allowed_packet:1G
原来同步时还挺好的,以后遇到这样的问题需要如何处理呢?将dm work重新部署也解决不了这个问题吧

请问下使用的 DM 的版本是什么?我确认下是否有其他方式,另外建议你这边使用官方要求的上游版本吧。

DM:1.0.3
暂时没办法换。现在使用TiDB是采集数据,而上游mysql是属于业务系统的数据库,权限不够啊

您好,麻烦在上游查一下从这个 pos 开始的那个 binlog 是什么? 看日志是从 1073742027 开始的那个 binlog 解析有问题。

通过show BINLOG EVENTs in ‘mysqlslave-bin.000078’ ;这个命令查出来的



通过mysqlbinlog --no-defaults -vv --start-position=1073742027 /var/lib/mysql/mysqlslave-bin.000078这个命令查看binglong日志一直出错,不清楚错在哪里了。

mysqlbinlog --no-defaults -vv --start-position=1073739375 --stop-position=1073742204 /var/lib/mysql/mysqlslave-bin.000078
通过上面的命令可以查出来数据:



详细数据:binlog日志.txt (4.6 KB)

  1. 提供一下报错前后的 dm-worker.log 我们来分析一下具体的报错原因;
  2. 从 binlog 检查结果看,数据不存在问题,手动修改 relay.meta binlog-pos 到这个出错文件的起始位置,重新启动 dm-worker,重新拉取 relay log 文件,即可恢复同步。

mysqlbinlog --no-defaults -vv --start-position=1073739375 --stop-position=1073742204
按照上面的配置,将relay.meta binlog-pos这个值改为1073739375 ,之后得重启dm还是不行。这个dm里面有多个task。


其中一个task的状态:


手工修改binlog-pos:
image
image

重启前后的dm-worker.log
dm-worker.log (3.2 MB)

需要先停止 dm-worker,然后更新 relay.meta 中的 binlog-pos;再重启 dm-worker; 因为 dm-worker 退出时会 flush 一次 relay.meta 信息

后来没有做这一步,决定将TiDB由3.05直接升级到4.0.0-rc了。之后将这个dm work重新做了一次缩容和扩容,相当于重新做了一次。
目前这个同步已经可以了。
不纠结这个问题,后期再有这个问题时,再按照上面的说法去做,暂时也是为了快速解决这个问题。
感谢回复!

好的,

感谢回复,下次遇到类似问题可以按照上述方式尝试下。

收到,谢谢

:love_you_gesture:

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