DM1.0.6版本同步任务测试问题

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:

【TiDB 版本】V4.0.9 DM V1.0.6

【问题描述】为了测试同步任务,dm集群设置enable_gtid=true,上游mysql (已开启gtid) master库手工reset的情况下,观察同步任务运行情况。以下是具体操作过程
1、新建任务test_uat-task.yaml

备注:dm-worker连接的是上游的备库。
1、新建任务
image
2、reset master库后 ,查看任务状态
image
3、手工插入5000条表数据,重启dm-worker后报错
image
image

问题1:上游mysql 在reset master主库的情况下,enable_gtid=true 这个参数是否没有意义?
问题2:enable_gtid=true 是否只支持上游mysql主备切换的异常情况?
问题3:任务是否有断点修复的方法?

:flushed: 我和同事都不能打开图片查看,麻烦重新上传下报错吧。

上游 mysql 主备切换时,必须打开 enable_gtid 。

断点修复可以尝试修改 下游的 dm_meta 中的 checkpoint 信息。跳过错误位点。

task.docx (201.9 KB)

操作记录见附件,测试的情况并非主备切换,而是直接reset 上游mysql的master的gtid,以下3个问题还请帮忙回答下,谢谢

问题1:上游mysql 在reset master主库的情况下,enable_gtid=true 这个参数是否没有意义?
问题2:enable_gtid=true 是否只支持上游mysql主备切换的异常情况?
问题3:任务是否有断点修复的方法?

问题 1
上游 reset master 之后,binlog 被清理,relay_log 拉取上游 pos 位点失败,因此会报错。 看你是哪个版本,gtid 信息也会清理的。enable_gtid 参数有意义啊。拉取 relay_log 以 gtid 拉取

问题 2
不是。

问题 3
报错中也已经提示到了,请修改 relay_log 中 relay.meta 中 pos 以及 gtid 信息,resume relay 重新同步。

问题2:
我看文档中也只说了这个参数是为了处理主备切换的场景。

问题3:
这里有个问题,gtid是填写下面哪一个?
gtid我是直接更新的master的。


cat relay.meta
binlog-name = “mysql-bin.000001”
binlog-pos = 4
binlog-gtid = “391de323-ca57-11ea-8811-fa210e96fe00:9591266-9591279

然后执行了
resume-relay -w “10.71.185.195:18262”

然鹅还是报错

帮看下是哪里出了问题?

binlog文件也一直是这样的
image

不是只支持这个的。是回答你上面的问题的。如果是 mysql 主备切换,是必须要打开 gtid 的;除此之外,使用 gtid 或者是 使用 pos 都可以拉取 relay log。

上游 show master 去查一下 gtid 的信息。
修改 relay.meta 建议按照以下方式:
1.停掉 dm-worker
2.修改 relay.meta 中 gtid 信息
3.启动 dm-worker

昨天试了下,用这种方式确实可以解决拉取 relay log报错的问题,但是任务还存在以下报错:
[2021/04/15 17:38:17.530 +08:00] [ERROR] [subtask.go:458] [“wait condition”] [subtask=test_uat] [error=“[code=40067:class=dm-worker:scope=internal:level=high] waiting for relay binlog pos to catch up with loader end binlog pos is timeout (exceeding 5m0s), loader end binlog pos: (mysql-bin.000001, 363164535), relay binlog pos: (mysql-bin.000001, 588538)”]

报错中“loader end binlog pos: (mysql-bin.000001, 363164535)” 这个pos是指dm_meta库中test_uat_loader_checkpoint的pos点位吗,但我看记录又是这样的

我试着把test_uat_syncer_checkpoint 这张表(不是test_uat_loader_checkpoin表)的binlog_pos修改为4,

然后resume-task test_uat 恢复任务,任务没有任何问题了,但是张表的数据并没有增加(reset master后在上游的这张表增加了5000条记录)
上游记录
image
下游记录
image

想问下是哪里出了问题

这个问题解决了,我这边在刚开始填gtid的时候,填错了,导致增量数据没有增加,请无视上面的问题。

:ok_hand: 有其他问题可以重新开贴。

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