dm无法同步数据

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

  • 【TiDB 版本】:
  • 【问题描述】:

问题:
subTaskStatus": [
{
“name”: “live_xxx”,
“stage”: “Running”,
“unit”: “Load”,
“result”: null,
“unresolvedDDLLockID”: “”,
“load”: {
“finishedBytes”: “75900936707”,
“totalBytes”: “272910359115”,
“progress”: “27.81 %”,
“metaBinlog”: “(mysql-bin.001862, 603563668)”
}
}
任务状态显示:running,但progress和finishedBytes不在发生变化。经确认是一个bug。
dm 版本:dm Version: v2.0.0-rc.2
解决方案:
使用nightly版本替换dm-worker,但由于dm 元数据信息增加了字段,替换后

报错““Message”: “fail to initial unit Sync of subtask test_live_xxx : query statement failed: SELECT cp_schema, cp_table, binlog_name, binlog_pos, binlog_gtid, exit_safe_binlog_name, exit_safe_binlog_pos, exit_safe_binlog_gtid, table_info, is_global FROM dm_meta_test_live_xxx.test_live_xxx_syncer_checkpoint WHERE id = ?”,”
解决方法:
先把集群升级到2.0 ga版本,然后在替换dm-worker可执行文件?是否可以解决

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

任务状态显示:running,但progress和finishedBytes不在发生变化。经确认是一个bug。

这个原因是在全量导入(load)阶段 stop-task 或者 pause-task 时,内部用于数据同步的工作线程会暂停,而外部的管控线程没能正确退出,导致任务状态未能转变到 stoped 或 paused,同时也不能继续数据同步。

影响版本:<= DM 2.0.0(GA)
fix 版本:2020/11/04 及之后的 nightly 版本(以及后续发布的 2.0.1+ 版本)


报错““Message”: “fail to initial unit Sync of subtask test_live_xxx : query statement failed: SELECT cp_schema, cp_table, binlog_name, binlog_pos, binlog_gtid, exit_safe_binlog_name, exit_safe_binlog_pos, exit_safe_binlog_gtid, table_info, is_global FROM dm_meta_test_live_xxx . test_live_xxx_syncer_checkpoint WHERE id = ?”,”
Error 1054: Unknow column ‘exit_safe_binlog_name’ in ‘field list’

这个原因是不同 DM 版本,可能会对元数据表做一些变更。DM 通过在版本升级时,由 DM-master 的 leader 来自动对元数据表做维护更新。如果只升级了 DM-worker,则会遇到类似的问题。

解决办法:升级 DM-master 到与 DM-worker 匹配的版本

1 个赞