各位好,我想使用dm将云上的RDS-MYSQL迁移到自建的TIDB集群上发生错误
{
“result”: true,
“msg”: “”,
“workers”: [
{
“result”: true,
“worker”: “IP地址”,
“msg”: “”,
“subTaskStatus”: [
{
“name”: “test”,
“stage”: “Paused”,
“unit”: “Dump”,
“result”: {
“isCanceled”: false,
“errors”: [
{
“Type”: “UnknownError”,
“msg”: "[code=32001:class=dump-unit:scope=internal:level=high] mydumper runs with error: exit status 1.
",
“error”: null
}
],
“detail”: null
},
“unresolvedDDLLockID”: “”,
“dump”: {
}
}
],
"relayStatus": {
"masterBinlog": "(mysql-bin.003890, 123176638)",
"masterBinlogGtid": "c9217eaf-d666-11e8-8ae0-6c92bf3bb29d:1-351841791,b6d60458-d666-11e8-8c7d-7cd30adb883a:1-770091200",
"relaySubDir": "b6d60458-d666-11e8-8c7d-7cd30adb883a.000001",
"relayBinlog": "(mysql-bin.003890, 123176638)",
"relayBinlogGtid": "",
"relayCatchUpMaster": true,
"stage": "Running",
"result": null
},
"sourceID": "mysql-replica-01"
}
]
}
为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【TiDB 版本】:3.0
【问题描述】:DM迁移云上数据库到TIDB
若提问为性能优化、故障排查 类问题,请下载脚本 运行。终端输出的打印结果,请务必全选 并复制粘贴上传。
请问RDS-MYSQL是否可以采用DM的方式进行迁移,如果能是如何从云上进行mysqldump的。如果不能,那么我该采用什么方案进行数据迁移
不懂就问
(zhouyueyue)
2019 年12 月 13 日 10:26
3
我检查了sharding DDL lock状态,并没有ddl锁,而且我的上游数据库没有分表,不会产生多表合并的场景。我没有从您推荐的文档中找到解决的方法。请问 这个mysqldump的报错 还有什么处理的方案? DM如果从阿里的RDS上获取进行mysqldump的操作的?
看下 task 配置,和 inventory.ini 配置。
另外把 query-error 完整报错也发一下。
query-error
{
“result”: true,
“msg”: “”,
“workers”: [
{
“result”: true,
“worker”: “xxx.xxx.xxx.xxx”,
“msg”: “”,
“subTaskError”: [
{
“name”: “test”,
“stage”: “Paused”,
“unit”: “Dump”,
“dump”: {
“msg”: “”
}
}
],
“RelayError”: {
“msg”: “”
}
}
]
}
resume-task的结果:
resume-task test
{
“op”: “Resume”,
“result”: true,
“msg”: “”,
“workers”: [
{
“meta”: {
“result”: false,
“worker”: “xxxx:8262”,
“msg”: “[code=38032:class=dm-master:scope=internal:level=high] operation 843 of task test on worker 172.17.7.254:8262 not success: [code=40051:class=dm-worker:scope=internal:level=high] current stage is not paused not valid\ngithub.com/pingcap/dm/pkg/terror.(*Error ).Generate\
\t/home/jenkins/agent/workspace/build_dm_master/go/src/github.com/pingcap/dm/pkg/terror/terror.go:232\ngithub.com/pingcap/dm/dm/master.(*Server ).waitOperationOk\
\t/home/jenkins/agent/workspace/build_dm_master/go/src/github.com/pingcap/dm/dm/master/server.go:1939\ngithub.com/pingcap/dm/dm/master.(*Server ).handleOperationResult\
\t/home/jenkins/agent/workspace/build_dm_master/go/src/github.com/pingcap/dm/dm/master/server.go:1974\ngithub.com/pingcap/dm/dm/master.(*Server ).OperateTask.func2\
\t/home/jenkins/agent/workspace/build_dm_master/go/src/github.com/pingcap/dm/dm/master/server.go:396\ngithub.com/pingcap/dm/dm/master.(*AgentPool ).Emit\
\t/home/jenkins/agent/workspace/build_dm_master/go/src/github.com/pingcap/dm/dm/master/agent_pool.go:117\
runtime.goexit\
\t/usr/local/go/src/runtime/asm_amd64.s:1357”
},
“op”: “Resume”,
“logID”: “843”
}
]
}
query-error的结果:
{
“result”: true,
“msg”: “”,
“workers”: [
{
“result”: true,
“worker”: “xxxx:8262”,
“msg”: “”,
“subTaskError”: [
{
“name”: “test”,
“stage”: “Paused”,
“unit”: “Dump”,
“dump”: {
“msg”: “”
}
}
],
“RelayError”: {
“msg”: “”
}
}
]
}
» check-task ./task.yaml
{
“result”: true,
“msg”: “check pass!!!”
}
应该是没问题的
我想请教一下,DM从RDS dump的原理,mysqldump 这一步是不是会造成锁表
应该是需要的,是不是上游账号没有 reload 权限
可以在 mydumper 上加个参数: --no-locks
我尝试单独使用mysqldump进行数据导出。提示报错 ** (mydumper:829): CRITICAL **: 15:39:15.477: Couldn’t acquire global lock, snapshots will not be consistent: Access denied; you need (at least one of) the RELOAD privilege(s) for this operation。 确实提示缺少reload权限