TIDB 4.0.11 支持从mysql 5.7 MGR同步数据吗??

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

【TiDB 版本】TIDB 4.0.11 DM 2.0.1

【问题描述】MGR 5.7 MGR 单主,如果发送切换,这种场景,DM还支持数据正常同步吗???

理论上可以的。可以测试一下,如有问题及时反馈。

https://docs.pingcap.com/zh/tidb-data-migration/stable/usage-scenario-master-slave-switch#切换-dm-worker-与上游-mysql-实例的连接

我配置文件中已经启用了gtid,但是 query-status 查询syncerBinlogGtid 怎么是空的呢???

TIDB 4.0.11 dm 2.0.1

看下日志,enable-gtid 参数是否生效了 ?

首先这个参数enable-gtid: true 是只配置到worker配置文件中的吗????

日志显示配置是false, 没配置成功。

增加enable-gtid: true 到worker中,并重启worker也没用。

https://docs.pingcap.com/zh/tidb-data-migration/dev/manage-source#查看数据源配置示例

使用上面命令查看下数据源当前的配置是否开启 gtid ?

这个具体操作方式是什么 ?

不好意思,我的这个DM还是 2.0.0的版本, 不支持get-config

但是我上游mysql是 mgr配置,肯定是启用了的gtid的, 不然也获取不到gtid信息

                "sync": {
                    "totalEvents": "0",
                    "totalTps": "0",
                    "recentTps": "0",
                    "masterBinlog": "(3306-binlog.000010, 920)",
                    "masterBinlogGtid": "b639a283-5453-47f2-af5e-fb2bc85bdaa6:1-628:1000004-1000062",
                    "syncerBinlog": "(3306-binlog.000010, 920)",
                    "syncerBinlogGtid": "",
                    "blockingDDLs": [

tarting component dmctl: /home/tidb/.tiup/components/dmctl/v2.0.0/dmctl/dmctl --master-addr 10.200.25.254:8261 operate-source show
{
“result”: true,
“msg”: “”,
“sources”: [
{
“result”: true,
“msg”: “”,
“source”: “mysql-replica-01”,
“worker”: “dm-10.200.25.254-8262”
},
{
“result”: true,
“msg”: “”,
“source”: “mysql-replica-02”,
“worker”: “dm-10.200.25.227-8262”
},
{
“result”: true,
“msg”: “”,
“source”: “mysql-replica-03”,
“worker”: “dm-10.200.25.254-8263”
},
{
“result”: true,
“msg”: “”,
“source”: “mysql-replica-04”,
“worker”: “dm-10.200.25.254-8265”
}
]
}

enable-gtid: true 原来是false,后面我是添加到数据源配置文件中的。

添加之后然后重启的 dm-worker 吗 ? 如果是这样操作的话,操作有问题。

可以 使用 operate-source stop 先停掉该 source,修改 source.yaml 的 enable-gtid 之后,执行 operate-source create 重新创建即可。

另外 DM 2.0.0 有一些已知问题,建议升级到 2.0.1

[tidb@localhost ~]$ tiup dmctl --master-addr 10.200.25.254:8261 operate-source stop mysql-replica-03
Found dmctl newer version:

The latest version:         v2.0.1
Local installed version:    v2.0.0
Update current component:   tiup update dmctl
Update all components:      tiup update --all

Starting component dmctl: /home/tidb/.tiup/components/dmctl/v2.0.0/dmctl/dmctl --master-addr 10.200.25.254:8261 operate-source stop mysql-replica-03
{
“result”: false,
“msg”: “[code=46010:class=dm-master:scope=internal:level=medium], Message: source with name mysql-replica-03 need to operate with tasks [mgr] exist”,
“sources”: [
]
}
[tidb@localhost ~]$ tiup dmctl --master-addr 10.200.25.254:8261 operate-source stop /home/tidb/mgr.yaml
Found dmctl newer version:

The latest version:         v2.0.1
Local installed version:    v2.0.0
Update current component:   tiup update dmctl
Update all components:      tiup update --all

Starting component dmctl: /home/tidb/.tiup/components/dmctl/v2.0.0/dmctl/dmctl --master-addr 10.200.25.254:8261 operate-source stop /home/tidb/mgr.yaml
{
“result”: false,
“msg”: “[code=46010:class=dm-master:scope=internal:level=medium], Message: source with name mysql-replica-03 need to operate with tasks [mgr] exist”,
“sources”: [
]
}

stop停止不了,还跟任务配置文件有关系么, 我吧worker都停止了在stop都不行

有关系,先停掉

感谢,GTID已经开启。

但是又发现一个情况, 之前模式不是采用GTID模式的,现在一经开启,DM好像又从最初的数据开始同步。

1 这种情况要从原来的binlog file模式切换到gtid 模式,而且数据要继续原来的同步,是不是会有问题??
2 bingfile pos 与gtid都开启了,DM会怎么选择了采用那个方式呢??

切换 DM-worker 与上游 MySQL 实例的连接 , 这个切换必要要使用GTID模式吗??

修改过 source-id 吗? 修改步骤辛苦描述下。

enable-gtid 如果是开了的话,优先采用 gtid 方式。

DM好像又从最初的数据开始同步

修改过 source-id 吗? 修改步骤辛苦描述下。

我按照你给的步骤,已经启用了gtid,然后我启动同步,就报错了,同步就从第一个gtid开始同步,这样就报错了。source-id 是没有修改过的。

切换数据源方式,必须要启用GTID 吗???

请详细阅读官网

目前测试的情况汇总:
1 从非GTID模式切换到GTID模式同步,有异常,数据同步重复报错,如果期间有表结构变更的情况下,同步因数据类型不一致而报错。

2 那这样的情况下,是不是一开始就要启用gtid。

步骤如下:
1 非gtid模式开启同步,创建表t1 ,数据同步正常
CREATE TABLE t1 (
id1 int(11) NOT NULL,
id2 varchar(6) DEFAULT NULL,
PRIMARY KEY (id1)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
2 非GTID模式下,删除表,重建了一样的表名,但是其中一个字段有varchar 改成了datetime字段,,这同步也是正常的。
CREATE TABLE t1 (
id1 int(11) NOT NULL,
id2 datetime DEFAULT NULL,
PRIMARY KEY (id1)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

3 worker配置文件启用gtid,启用成功

4 GTID模式下,启动同步任务,报错
Starting component dmctl: /home/tidb/.tiup/components/dmctl/v2.0.0/dmctl/dmctl --master-addr 10.200.25.254:8261 query-status mgr
{
“result”: true,
“msg”: “”,
“sources”: [
{
“result”: true,
“msg”: “”,
“sourceStatus”: {
“source”: “mysql-replica-03”,
“worker”: “dm-10.200.25.254-8262”,
“result”: null,
“relayStatus”: null
},
“subTaskStatus”: [
{
“name”: “mgr”,
“stage”: “Paused”,
“unit”: “Sync”,
“result”: {
“isCanceled”: false,
“errors”: [
{
“ErrCode”: 10006,
“ErrClass”: “database”,
“ErrScope”: “not-set”,
“ErrLevel”: “high”,
“Message”: “startLocation: [position: (, 0), gtid-set: ], endLocation: [position: (3306-binlog.000005, 1955), gtid-set: b639a283-5453-47f2-af5e-fb2bc85bdaa6:1-6]: execute statement failed: REPLACE INTO testdb.t1 (id1,id2) VALUES (?,?)”,
“RawCause”: “Error 1366: Incorrect datetime value: ‘hu’ for column ‘id2’ at row 1”,
“Workaround”: “”
},
{
“ErrCode”: 10006,
“ErrClass”: “database”,
“ErrScope”: “not-set”,
“ErrLevel”: “high”,
“Message”: “startLocation: [position: (, 0), gtid-set: ], endLocation: [position: (3306-binlog.000005, 3727), gtid-set: b639a283-5453-47f2-af5e-fb2bc85bdaa6:1-14]: execute statement failed: REPLACE INTO testdb.t1 (id1,id2) VALUES (?,?)”,
“RawCause”: “Error 1366: Incorrect datetime value: ‘bb’ for column ‘id2’ at row 1”,
“Workaround”: “”
}
],
“detail”: null
},
“unresolvedDDLLockID”: “”,
“sync”: {
“totalEvents”: “5”,
“totalTps”: “0”,
“recentTps”: “0”,
“masterBinlog”: “(3306-binlog.000011, 90584)”,
“masterBinlogGtid”: “b639a283-5453-47f2-af5e-fb2bc85bdaa6:1-1059:1000004-1000062”,
“syncerBinlog”: “(3306-binlog.000005, 1750)”,
“syncerBinlogGtid”: “b639a283-5453-47f2-af5e-fb2bc85bdaa6:1-6”,
“blockingDDLs”: [
],
“unresolvedGroups”: [
],
“synced”: false,
“binlogType”: “remote”

relay_log 开了吗? 我尝试复现下。

我没有配置个参数,都是默认的,SOURCE文件如下:

MySQL3308 Configuration.

source-id: “mysql-replica-03”

DM-worker 是否使用全局事务标识符 (GTID) 拉取 binlog。使用前提是在上游 MySQL 已开启 GTID 模式。

enable-gtid: true

from:
host: “10.200.25.92”
user: “tidbslave”
password: “7URoDXK680LE+ClwMOrCt0Asgvsm”
port: 3306

TASK 文件如下:

在操作过程中(DM 已经升级到2.0.1)

tiup dmctl --master-addr 10.200.25.254:8261 stop-task mgr
tiup dmctl --master-addr 10.200.25.254:8261 operate-source stop /home/tidb/mgr.yaml

{
“result”: false,
“msg”: “[code=10001:class=database:scope=not-set:level=high], Message: database driver error, RawCause: dial tcp 10.200.25.92:3306: connect: no route to host, Workaround: Please check the database connection and the database config in configuration file.”,
“sources”: [
]
}

上面第二个语句执行有时候还报错,提示IP:port不能连接,过一会再次操作就正常。

tiup dmctl --master-addr 10.200.25.254:8261 stop-task mgr
tiup dmctl --master-addr 10.200.25.254:8261 operate-source stop /home/tidb/mgr.yaml
tiup dmctl --master-addr 10.200.25.254:8261 operate-source create /home/tidb/mgr.yaml

这三个步骤有问题吗

这个语句跑了不通过,假设机器10.200.25.92 宕机,不能修复启动。
tiup dmctl --master-addr 10.200.25.254:8261 operate-source stop /home/tidb/mgr.yaml

{
“result”: false,
“msg”: “[code=10001:class=database:scope=not-set:level=high], Message: database driver error, RawCause: dial tcp 10.200.25.92:3306: connect: connection refused, Workaround: Please check the database connection and the database config in configuration file.”,
“sources”: [
]
}

10.200.25.92:3306 这个实例假设是故障的实例,是我要移除的。
如果这个步骤不通过,那么create会报错类似这样
, Message: source config with ID mysql-replica-03 already exists",

operate-source show 的结果麻烦给一下。

先回顾下你这个帖子的问题,主从切换后,DM 同步是否支持。
支持的。前面的所有问题都是基于你这边操作是没有开启 gtid。

这个后面跟 yaml 文件有点问题,改成后面跟 source-id 就可以成功 stop 掉。

tiup dmctl --master-addr 10.200.25.254:8261 operate-source stop "source-id"