dm数据迁移报错

【 TiDB 使用环境】生产环境Poc
【 TiDB 版本】6.1.7,MySQL版本5.7.21,dm版本2.0.3

问题描述,使用dm工具进行数据迁移,全量备份阶段,任务状态提示如下报错

{
    "result": true,
    "msg": "",
    "sources": [
        {
            "result": true,
            "msg": "",
            "sourceStatus": {
                "source": "source-xxxx-xxxx",
                "worker": "dm-xx.xx.xx.xx-xxxx",
                "result": null,
                "relayStatus": null
            },
            "subTaskStatus": [
                {
                    "name": "task-xxxx-xxxx",
                    "stage": "Paused",
                    "unit": "Dump",
                    "result": {
                        "isCanceled": false,
                        "errors": [
                            {
                                "ErrCode": 32001,
                                "ErrClass": "dump-unit",
                                "ErrScope": "internal",
                                "ErrLevel": "high",
                                "Message": "mydumper/dumpling runs with error, with output (may empty): ",
                                "RawCause": "sql: SELECT COLUMN_NAME,EXTRA FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA=? AND TABLE_NAME=? ORDER BY ORDINAL_POSITION;: driver: bad connection",
                                "Workaround": ""
                            }
                        ],
                        "detail": null
                    },
                    "unresolvedDDLLockID": "",
                    "dump": {

                    }
                }
            ]
        }
    ]
}

根据官方文档的指导重启任务没法解决问题,重启任务后又会重新做全量备份。dm-worker.log日志报错如下

[2024/04/11 18:12:09.125 +08:00] [ERROR] [dumpling.go:138] ["dump data exits with error"] [task=task-xxxx-xxxx] [unit=dump] ["cost time"=3h55m25.147905887s] [error="ErrCode:32001 ErrClass:\"dump-unit\" ErrScope:\"internal\" ErrLevel:\"high\" Message:\"mydumper/dumpling runs with error, with output (may empty): \" RawCause:\"sql: SELECT COLUMN_NAME,EXTRA FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA=? AND TABLE_NAME=? ORDER BY ORDINAL_POSITION;: driver: bad connection\" "]
[2024/04/11 18:12:09.125 +08:00] [INFO] [subtask.go:289] ["unit process returned"] [subtask=task-xxxx-xxxx] [unit=Dump] [stage=Paused] [status={}]
[2024/04/11 18:12:09.125 +08:00] [ERROR] [subtask.go:308] ["unit process error"] [subtask=task-xxxx-xxxx] [unit=Dump] ["error information"="{\"ErrCode\":32001,\"ErrClass\":\"dump-unit\",\"ErrScope\":\"internal\",\"ErrLevel\":\"high\",\"Message\":\"mydumper/dumpling runs with error, with output (may empty): \",\"RawCause\":\"sql: SELECT COLUMN_NAME,EXTRA FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA=? AND TABLE_NAME=? ORDER BY ORDINAL_POSITION;: driver: bad connection\"}"]

已经排查确认过,MySQL端没有流量访问,不存在有任务去kill连接,且没有类似pt-kill这种工具的任务执行。

DM 用的版本不太对,参考下文档描述:

tidb 用的版本都是 6.1.7了,就用自带的 DM 版本就可以了,不要用太低的…
低版本的 DM 没办法兼容高版本的 tidb

DM 用的版本不太对

等待大佬解答

版本不对

是dm的版本还是dmctl的版本,我看了dm没有6.1.7版本,dmctl倒是有6.1.7.

所以疑惑,我现在是要升级dm还是dmctl,然后升级到哪个版本

尝试用对应版本看看

创建任务的时候呗,dmctl:v6.1.7

用最新的就行了,不要用旧版本了,旧的是独立的,没有和 tiup 整合… 版本号也是独立的,所以和tidb 的版本也是分开的

查看DM版本

tiup list dm-master

升级dmctl版本

tiup update dmctl:v6.1.7

部署dm集群

tiup dm deploy dm-test ${version} ./topology.yaml

试了tidb4.0.13版本也是报一样的错误,都是全量备份到中途就报上面的错误了,整库大概2T,备份到1.3T就报那个错了,所以感觉跟dm的版本没关系呢

配置的用户权限,能执行这个么?

sql: SELECT COLUMN_NAME,EXTRA FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA=? AND TABLE_NAME=? ORDER BY ORDINAL_POSITION

driver: bad connection
时间久了连接自动或超时断了吗?

用2.0.3的时候并发数是2,用6.1.7的时候给了8,所以执行时间减少了差不多3/4

最后执行完毕了没有?