执行task时候,报错open dumped_data.dev/metadata: no such file or directory

为提高效率,提问时请尽量提供详细背景信息,问题描述清晰可优先响应。以下信息点请尽量提供:

  • 系统版本 & kernel 版本:
  • TiDB 版本:
  • 磁盘型号:
  • 集群节点分布:
  • 数据量 & region 数量 & 副本数:
  • 集群 QPS、.999-Duration、读写比例:
  • 问题描述(我做了什么):

问题如下

1、在我的上游mysql中,bin log 是从mysql-bin.000017开始的,如果在inventory.ini 的work 配置 bin log name,启动集群的时候后,dmctl 里面执行query-status,总是报错

 query-status
{
    "result": true,
    "msg": "",
    "workers": [
        {
            "result": true,
            "worker": "10.168.1.43:8262",
            "msg": "no sub task started",
            "subTaskStatus": [
            ],
            "relayStatus": {
                "masterBinlog": "(mysql-bin.000019, 2837)",
                "masterBinlogGtid": "",
                "relaySubDir": "15564e70-6f24-11e9-bd30-00163e081084.000001",
                "relayBinlog": "(, 4)",
                "relayBinlogGtid": "",
                "relayCatchUpMaster": false,
                "stage": "Paused",
                "result": {
                    "isCanceled": false,
                    "errors": [
                        {
                            "Type": "UnknownError",
                            "msg": "[code=30015:class=relay-unit:scope=upstream:level=high] TCPReader get event: ERROR 1236 (HY000): Could not open log file
github.com/pingcap/dm/pkg/terror.(*Error).Delegate
	/home/jenkins/workspace/build_dm_master/go/src/github.com/pingcap/dm/pkg/terror/terror.go:267
github.com/pingcap/dm/pkg/binlog/reader.(*TCPReader).GetEvent
	/home/jenkins/workspace/build_dm_master/go/src/github.com/pingcap/dm/pkg/binlog/reader/tcp.go:151
github.com/pingcap/dm/relay/reader.(*reader).GetEvent
	/home/jenkins/workspace/build_dm_master/go/src/github.com/pingcap/dm/relay/reader/reader.go:144
github.com/pingcap/dm/relay.(*Relay).handleEvents
	/home/jenkins/workspace/build_dm_master/go/src/github.com/pingcap/dm/relay/relay.go:346
github.com/pingcap/dm/relay.(*Relay).process
	/home/jenkins/workspace/build_dm_master/go/src/github.com/pingcap/dm/relay/relay.go:280
github.com/pingcap/dm/relay.(*Relay).Process
	/home/jenkins/workspace/build_dm_master/go/src/github.com/pingcap/dm/relay/relay.go:189
github.com/pingcap/dm/dm/worker.(*realRelayHolder).run
	/home/jenkins/workspace/build_dm_master/go/src/github.com/pingcap/dm/dm/worker/relay.go:156
github.com/pingcap/dm/dm/worker.(*realRelayHolder).Start.func1
	/home/jenkins/workspace/build_dm_master/go/src/github.com/pingcap/dm/dm/worker/relay.go:132
runtime.goexit
	/usr/local/go/src/runtime/asm_amd64.s:1337"
                        }
                    ],
                    "detail": null
                }
            },
            "sourceID": "mysql-replica-01"
        }
    ]
}

1、当我在inventory.ini 的work 上配置 bin log name之后,上面的报错就没有了,但是执行“all”模式的任务的时候,会报错

query-status
{
    "result": true,
    "msg": "",
    "workers": [
        {
            "result": true,
            "worker": "10.168.1.43:8262",
            "msg": "",
            "subTaskStatus": [
                {
                    "name": "dev",
                    "stage": "Paused",
                    "unit": "Load",
                    "result": {
                        "isCanceled": false,
                        "errors": [
                            {
                                "Type": "UnknownError",
                                "msg": "[code=11001:class=functional:scope=internal:level=high] parse mydumper metadata error: open dumped_data.dev/metadata: no such file or directory
github.com/pingcap/dm/pkg/terror.(*Error).Generate
	/home/jenkins/workspace/build_dm_master/go/src/github.com/pingcap/dm/pkg/terror/terror.go:232
github.com/pingcap/dm/pkg/utils.ParseMetaData
	/home/jenkins/workspace/build_dm_master/go/src/github.com/pingcap/dm/pkg/utils/mydumper.go:33
github.com/pingcap/dm/loader.(*Loader).getMydumpMetadata
	/home/jenkins/workspace/build_dm_master/go/src/github.com/pingcap/dm/loader/loader.go:1086
github.com/pingcap/dm/loader.(*Loader).Process
	/home/jenkins/workspace/build_dm_master/go/src/github.com/pingcap/dm/loader/loader.go:423
runtime.goexit
	/usr/local/go/src/runtime/asm_amd64.s:1337"
                            }
                        ],
                        "detail": null
                    },
                    "unresolvedDDLLockID": "",
                    "load": {
                        "finishedBytes": "0",
                        "totalBytes": "0",
                        "progress": "NaN %",
                        "metaBinlog": ""
                    }
                }
            ],
            "relayStatus": {
                "masterBinlog": "(mysql-bin.000019, 2837)",
                "masterBinlogGtid": "",
                "relaySubDir": "15564e70-6f24-11e9-bd30-00163e081084.000001",
                "relayBinlog": "(mysql-bin.000019, 2837)",
                "relayBinlogGtid": "",
                "relayCatchUpMaster": true,
                "stage": "Running",
                "result": null
            },
            "sourceID": "mysql-replica-01"
        }
    ]
}

另外,在deploy文件中找不到dump的文件,但是在不填写inventory.ini的bin log name 的时候,是会生成的。

请问

dm执行all模式的时候,发现如果dm-work配置了bin log,就不再执行mydump了,请问是这样的吗,我这种情况怎么解决呢

补充 task.yaml

# 任务名,多个同时运行的任务不能重名。
name: "dev"
# 全量+增量 (all) 同步模式。
task-mode: "all"
# 下游 TiDB 配置信息。
target-database:
  host: "10.168.1.39"
  port: 4000
  user: "root"
  password: ""

# 当前数据同步任务需要的全部上游 MySQL 实例配置。
mysql-instances:
-
  # 上游实例或者复制组 ID,参考 `inventory.ini` 的 `source_id` 或者 `dm-master.toml` 的 `source-id 配置`。
  source-id: "mysql-replica-01"
  # 需要同步的库名或表名的黑白名单的配置项名称,用于引用全局的黑白名单配置,全局配置见下面的 `black-white-list` 的配置。
  black-white-list: "global"
  # mydumper 的配置项名称,用于引用全局的 mydumper 配置。
  mydumper-config-name: "global"

# 黑白名单全局配置,各实例通过配置项名引用。
black-white-list:
  global:
    do-tables:                        # 需要同步的上游表的白名单。
    - db-name: "test1"              # 需要同步的表的库名。
      tbl-name: "user"          # 需要同步的表的名称。


# mydumper 全局配置,各实例通过配置项名引用。
mydumpers:
  global:
    mydumper-path: "/home/tidb/dm-ansible/resources/bin/mydumper"   # mydumper 二进制文件的路径。
    extra-args: "-B test1 -T user"  # 只导出 `test_db` 库中的 `test_table` 表,可设置 mydumper 的任何参数。

我刚更换了一个任务名称,发现可以了!请问这是什么问题

一开始是没有在 inventory 里 dm-worker 的 binlog-name,然后后来又配置了?1 和 2 是这个差别嘛? 执行的操作步骤能否再提供下。

1 和 2 的区别在于,有没有增加bin log name

1 和 2 的中间的操作步骤请问是怎么样的? 是否是:

  1. stop-task
  2. 修改 worker 配置,增加 binlog-name 配置信息
  3. 重新 start task