通过query-tatus查询出来的异常信息:
查找dm worker下的relay_log目录,relay log同步到了mysqlslave-bin.000078
查找上游mysql的bing log信息,已经到mysqlslave-bin.000087
偿试过重启dm work不起作用。没有手动同步binlog文件,怕有些数据丢失。
造成这个问题的原因是什么?需要如何处理呢?
通过query-tatus查询出来的异常信息:
偿试过重启dm work不起作用。没有手动同步binlog文件,怕有些数据丢失。
造成这个问题的原因是什么?需要如何处理呢?
您好,需要您这边确认一些信息
目前发现 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 对上游的版本限制需要改变:
如果上游不存在主从结构,则仍然是:
如果上游存在主从结构,则:
错误更新 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=1073739375 --stop-position=1073742204 /var/lib/mysql/mysqlslave-bin.000078
通过上面的命令可以查出来数据:
mysqlbinlog --no-defaults -vv --start-position=1073739375 --stop-position=1073742204
按照上面的配置,将relay.meta binlog-pos这个值改为1073739375 ,之后得重启dm还是不行。这个dm里面有多个task。
需要先停止 dm-worker,然后更新 relay.meta 中的 binlog-pos;再重启 dm-worker; 因为 dm-worker 退出时会 flush 一次 relay.meta 信息
后来没有做这一步,决定将TiDB由3.05直接升级到4.0.0-rc了。之后将这个dm work重新做了一次缩容和扩容,相当于重新做了一次。
目前这个同步已经可以了。
不纠结这个问题,后期再有这个问题时,再按照上面的说法去做,暂时也是为了快速解决这个问题。
感谢回复!
好的,
感谢回复,下次遇到类似问题可以按照上述方式尝试下。
收到,谢谢
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。