为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【TiDM 版本】:1.0.3
【问题描述】:我最近在试着用 maxscale 建一个binlog 中转服务,maxscale 可以模拟成一个 binlog server,然而问题来了,tidm 连上去发了几个命令后,崩了。
打印 maxscale 服务端的日志,发现是以下命令:
SET NAMES utf8mb4’
SHOW GLOBAL VARIABLES LIKE ‘sql_mode’
SHOW GLOBAL VARIABLES LIKE ‘server_uuid’
SHOW GLOBAL VARIABLES LIKE ‘BINLOG_CHECKSUM’
在服务端,这些命令的确不兼容,查询不到数据。
于是 dm 就崩了。
怎么办?dm 可不可以兼容一下这种情况呢,还是必须得拿到 ‘BINLOG_CHECKSUM’ 才行?
我这儿要跨外网同步一个库的数据到TiDB,但是运维那边不允许我直接给数据库开外网,所以我找到了 maxscale,想由它来作为binlog代理开外网访问,然后让dm连它同步数据到TiDB。(或者,请问有其他跨网同步的方案不,两边数据库都不允许外网连接)
2.我现在还在尝试dm拉取binlog阶段,一连上maxscale 就报错了。
我大概定位到问题。
我是用maxscale 开一个 binlog 模拟服务。
然后登进去呢, SHOW VARIABLES LIKE ‘sql_mode’ 这个命令拿不到返回值。
所以问题应该是在maxscale这儿,我还在找有没有办法解决。
而tidm这边,根据报错信息,https://github.com/siddontang/go-mysql/blob/master/replication/binlogsyncer.go 的253行这儿,如果没有返回值应该会崩吧。 好像也不是dm能解决的。
所以,我还是得回去找maxscale。
惨。
Lucien
( Lucien)
2020 年3 月 13 日 13:08
5
你可以在 GitHub 提一个 issue ,然后提一个 pr 自己修改一下。如果我们的 committer 确认 pr 可以合进去,那么你就是我们的的 contributor 。https://github.com/pingcap/dm/issues
这个问题是在go-mysql 库里, 所以我把issue提那儿去了。 https://github.com/siddontang/go-mysql/issues/483
不过想要等解决恐怕早呢。
昨天1.0.4dm包也出来了,我今天折腾了一天,看看如何自己打包,第一次正儿八经的整GO语言,配环境过程中各种坑。
最后,我魔改了go-mysql的代码,我也不管逻辑了,反正我直接注释掉了会报错的代码。
重新打包后,果然成功连上了maxscale,更多情况,待我继续观察。
yilong
(yi888long)
2020 年3 月 14 日 14:57
7
感谢反馈。 期待您更多分享,另外DM工具的疑问,建议可以和DM工具组直接联系即可,多谢https://github.com/pingcap/dm/issues
system
(system)
关闭
2022 年10 月 31 日 19:15
8
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。