DM 6.1.1开启relay-log后,start-task成功但是relay-log不落盘

另外附两个查询异常relay的数据源名称的SHELL命令

# 1. 查询没有开启relay-log的数据源
[tidb@prod-tiup-f01 task]$ tiup dmctl --master-addr 127.0.0.1:8261 query-status --more | jq -r '.sources[] | select(.sourceStatus.relayStatus == null) | .sourceStatus.source'
tiup is checking updates for component dmctl ...
Starting component `dmctl`: /home/tidb/.tiup/components/dmctl/v6.1.1/dmctl/dmctl --master-addr 127.0.0.1:8261 query-status --more

# 2. 查询处于错误状态的数据源都有哪些
[tidb@prod-tiup-f01 task]$ tiup dmctl --master-addr 127.0.0.1:8261 query-status --more | jq -r '.sources[] | select(.sourceStatus.relayStatus.stage == "Paused") | {src: .sourceStatus.source, worker: .sourceStatus.worker }'
tiup is checking updates for component dmctl ...
Starting component `dmctl`: /home/tidb/.tiup/components/dmctl/v6.1.1/dmctl/dmctl --master-addr 127.0.0.1:8261 query-status --more

另外:如果你跟我一样之前开启过relay-log,已经很长时间没有开启relay-log,这个时候直接start-relay大概率会出现错误:


这是因为dm-worker在start-relay时候会从上次暂停的时间点来向MySQL请求binlog,如果relay-log已经断了很长时间,大概率binlog已经被清理掉了(其实我们也不需要这些binlog的,毕竟task状态是正常的,这些binlog其实早被task给应用过了,只不过没落盘而已)。
这个时候,你可以根据上面我给的 命令2 来找到数据源对应的dm-worker,然后到DM的deploy目录,删除掉relay_log目录,清理之前遗留的元数据。然后stop-relay & start-relay重启下relay就可以了。