dm2.0 同一个task多个监控值,导致告警频发

【DM 版本】 2.0

【问题描述】

我们使用dm2.0做mysql到tidb的同步,昨天部分mysql做了切换,dm的source做修改,重启后source绑定的worker改变了。
重新启动task发现存在两条监控数据。
task status 如下:
old_worker-taskname [4]
new_worker-taskname [2]

我们的会判断task状态为4电话告警,导致当前task状态正常电话告警乱告的情况出现。
请问有什么办法去掉历史的task,或者更新监控?

  1. tiup display dm 状态
  2. 具体都操作了什么? 做了哪些配置的改变?
  3. 是指整个 DM 集群都重启了吗?


1.当前状态是正常的。
2.改变了source的地址,批量的重启。
3.dm集群没有重启。

task名相同,重启后bound的worker做了改变,导致监控有两个。现在是想消除掉之前bound的worker信息,图片上task status 为4的监控。

我们又发现,大部分task status是有两个监控值,但是极少数几个query-status查看task当前状态是正常的,但是task status是4,监控值是不对的。

  1. 请问是参考哪个文档修改的source地址? 这个吗? https://docs.pingcap.com/zh/tidb-data-migration/stable/usage-scenario-master-slave-switch#切换-dm-worker-与上游-mysql-实例的连接
  2. 能否麻烦您发一下当前的配置信息吗?
  3. 重启的命令是什么?多谢。

# 1. 修改 source 的配置文件

enable-relay: true

relay-binlog-name: 'mysql-bin-changelog.000002' # 拉取上游 binlog 的起始文件名,可以通过查看当前任务的masterBinlog、syncerBinlog;或者直接去上游查看master status

# 2. 停止相关的task

dba_dmctl stop-task db3.task2

# 3. 停止source

dba_dmctl operate- source stop database-3

# 4. 启动soruce

dba_dmctl operate- source create source -database-3.yaml

# 5. 启动task

dba_dmctl start-task .. /conf/db3 .task1.yaml

以上是我们的操作步骤,我们是为了解决同一个source 多个dump thread问题,添加了enable-relay参数后。重启worker和task。

  1. 为什么要设置 stopped 为报警状态呢?应该 paused 更有意义一些,出错暂停后会是 paused 状态
  2. 现在这个 v2.0.2 stage 也会保持在 stopped 状态,下个版本应该会删掉这种状态,
    现在要解决可以 a. 重启状态不对的 dm-worker b. 我写一个 hotfix, 换用这个版本的 dm-worker

1.我在dm1.06有关注到报错的task,有的时候状态会是stopped状态,所以我们的设置task status大于2的都电话告警。dm2.0沿用的之前的告警规则。

2.我查阅文档没有发现dm-worker如何重启,是下线再上线吗?

3.另外我也还有一个疑问,如果task我们废弃了,如何下线掉废弃task的监控?

  1. stopped 状态不建议报警,目前 stopped 状态产生有两种可能:
    a. 用户手动通过 stop-task 停止任务
    b. 任务发生调度,原 worker 上 stop 该任务,即这次遇到的情况
    两种情况都不太需要报警,如果遇到错误 dm 会进入 paused 状态,这个需要报警

  2. 通过 tiup dm restart <dmcluster-name> -N <dm-worker-ip:port> 重启,可以参考这个,把 cluster 改成 dmhttps://docs.pingcap.com/zh/tidb/stable/tiup-component-cluster-restart

  3. 现在的已发行 dm 监控没有废弃 task 状态监控,但是其他的一些监控项会删除掉,dm 计划在最新版本修复这个问题,我可以在修复后贴到这里来。

重启确实可以解决问题,感谢大佬。

想咨询下,什么时候发修复问题的版本?

DM 于 4/9 发布了 v2.0.2 版本,短期内暂时不会发布新版本。
我建了一个 issue trace 这个问题: https://github.com/pingcap/dm/issues/1594
你可以在 dm repo 里 trace 这个问题以及新发版计划

@lichunzhu-PingCAP 我是 @SURZ 的同事,我们还发现一个问题,Task的延迟指标数据没有了,grafana上为空,prometheus中也没有这个指标了。

例如:10.120.51.127:8263 这个worker
curl ‘http://10.120.51.113:9090/api/v1/query?query=dm_syncer_replication_lag&time=2021-04-15T03:44:00Z
{“status”:“success”,“data”:{“resultType”:“vector”,“result”:[]}}

是说新 worker 上没有了?这个不开 heart-beat 的话应该就是没有的,现在 dm2.0 还没有支持 heart-beat

因为开启后,遇到无法重新启动的问题,看到你们文档后我们就关闭了:
如果用户在同步任务配置文件中开启 enable-heartbeat 会干扰高可用特性,在配置文件中关闭该项(通过设置 enable-heartbeat: false,然后更新任务配置)即可解决。DM 将会在后续版本强制关闭该功能。

那究竟是关还是开呢?

现在 dm-2.0 保持关闭就可以了,后续等这个功能支持后再开吧

如果开启影响高可用
如果不开又缺少监控,这怎么看延迟呢?

可以看 binlog file gap,这个要是 > 1 超过 10 分钟有告警
https://docs.pingcap.com/zh/tidb-data-migration/stable/monitor-a-dm-cluster#binlog-replication

你们什么时候能兼得呢?

请问具体的指标名称是什么?我没有找到 和 gap 有关的metric

在后两个月内有开发这个的计划。enable-heartbeat 后面可能后续不会支持,因为这个功能写了上游数据库,后续会考虑用别的方式来计算延时