DM同步上游主从mysql时,是否可以只指定一台,不用管上游主从切换

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

  • 【TiDB 版本】:TiDB-v3.1.0-beta.2
  • 【问题描述】:公司断网之后,发现上游主从切换之后,dm同步任务失败;而上游非主从的,则可以自己自动恢复同步。

若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。

您好,工具类问题麻烦提供下工具版本,多谢。

请问下上游主从切换,dm 是连接的主从的域名或者是 虚 IP 么?如果是虚 IP 或者域名,上游主从发生切换后,虚 IP 飘到新的主库上,dm 是需要从新的主库上拉取 binlog,详细流程可以参考该文档:https://pingcap.com/docs-cn/tidb-data-migration/stable/usage-scenario-master-slave-switch/#切换-dm-worker-与上游-mysql-实例的连接

接上述问题,dm 同步上游主从时,可以指定主库或者从库的 IP 即可。
另外补充下,注意以下限制。

  1. DM版本号 :v1.0.4-hotfix
    image

  2. mysql版本 :5.6.33-log
    image

  3. metadata
    image

多次重启task没有解决问题,重装worker重新生成任务解决了这个问题

麻烦回答下上述问题,多谢。

另外,上述描述过于简单,mysql 版本是上游实例的版本么,包括主从架构的和单独实例的,还有 metadata 是 mydumper 生成的么,如果可以的话,麻烦详细描述下步骤,多谢。

这个metadata是DM的task的dump阶段生成的,DM连接的就是上游mysql的IP;mysql版本就是上游mysql的版本,现在连的实例应该是上有的从库image

抱歉我没太明白您这边的问题以及诉求是什么?

首先针对标题的问题“ DM同步上游主从mysql时,是否可以只指定一台,不用管上游主从切换

答案是可以的,指定上游的从库或者是主库 IP 即可。另外看下第二个帖子中的内容,主从复制结构是有版本限制的,所以建议您这边接主从结构的主库即可。

当前如果 dm 连接的是上游的域名或者是虚拟 IP,上游主从发生切换后,是需要手动操作恢复的。同理也是参考第二个帖子中的链接。

后续帖子中提到的 metadata 的信息,如果有疑问麻烦详细描述下。

那可能是我没说清楚,就是我配了两个任务,都因为断网导致连接失败,有一个(非主从)自动拉起成功了,也继续同步了,但是另外一个(主从结构)虽然自动拉起了,但是没有继续同步。我是想知道这个问题要怎么处理

您好:

    上游如果主从切换,需要手工处理,可以参考这篇文章

https://pingcap.com/docs-cn/tidb-data-migration/stable/usage-scenario-master-slave-switch/

也可能不是主从的问题,我发一下当时的log和grafana信息。dm-worker-2020-04-01T06-58-05.532.rar (1.4 MB)

您好,我这边还是需要问下,您这边主从结构,dm 接的是上游的域名、虚拟 IP 还是什么?另外日志信息我们稍等 看下。多谢

就是正常的HOST

  1. 这个里面配置的是物理ip对吧?
  2. 你的要求是 上游mysql 主从, 假如主切换到了从, DM 保持抱错就好? 等到你手工把上游的主从,再切换为之前的,DM再正常运行就行,是这个意思吗?
  1. 配的是物理IP

  2. 上游发生切换,什么也不用改是最好的。但是我发现我之前连的主库是204,断网DM自动拉起之后,同步没有继续,然后把IP切到205之后,连接成功也同步成功了,但是我发现205现在是个slave。所以我觉得之前任务同步失败可能和切换IP没有啥关系,我想知道是什么原因导致的这个问题

您好:

`1. 从日志看是这个时间主库异常断开,导致无法连接

[2020/03/31 12:21:22.281 -04:00] [ERROR] [syncer.go:2032] [“fail to estimate unreplicated binlog size”] [task=ent_advertise] [unit=“binlog replication”] [error="[code=10001:class=database:scope=not-set:level=high] database driver error: dial tcp 172.16.100.204:3306: connect: connection timed out"] [errorVerbose="[code=10001:class=database:scope=not-set:level=high] database driver error: dial tcp 172.16.100.204:3306: connect: connection timed out

  1. 从日志看,4.1 5点多重启了dm-worker恢复的,这个时候已经改了ip对吧? [2020/04/01 05:36:26.320 -04:00] [INFO] [printer.go:54] [“Welcome to dm-worker”]

  2. 这个问题你只重启了task,实际上重启dm-worker应该就好了。 由于上游网络问题,relay log 没有恢复,并且只会做有限次的重连尝试,在你上游网络没有恢复前,重试完成。那么就需要重启dm-worker来恢复

:sob:应该先问老师的,搞得好复杂啊。谢谢老师解答

:handshake:

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