Data Migration - fail to initial unit Sync of subtask task_c8_replication : heartbeat config is different from previous used: serverID not equal, self: 100423, other: 100523"

【TiDB 版本】: v4.0.10
【Data Migration 版本】: v2.0.1
【DM佈署拓樸如下】:


【TiDB佈署拓樸】:

【问题描述】: DM-Master(HA)某一個節點重開後,某個task出現fail to initial unit Sync of subtask task_c8_replication : heartbeat config is different from previous used: serverID not equal, self: 100423, other: 100523"

發現以下目的端TiDB表格 資訊有誤:

  1. task_c8_replication_loader_checkpoint
  2. task_c8_replication_syncer_checkpoint

實際上task_c8_replication的source: “c8-db-dm”

p.s. 我們曾切換過前端mysql source (from “prd-c8-backup” to “c8-db-dm”)

source列表:

目前我們暫時的解決方式是將此task綁定回重啟的那台機器dm-worker(172.31.13.107:8262)上
resume-task後,DM會恢復運作,但這樣代表HA機制運作是失敗的。

想請教顧問,是否有work around方式去讓上述兩個表的資訊恢復正常? 並讓HA機制恢復運作?

可以提供 task 配置么?看样子是配置了 heartbeat 吧?

顧問好,

詳細task配置檔案
task_c8_replication.yaml (2.4 KB)

p.s.的確有配置heartbeat

嗯,把 heartbeat 参数去掉吧,2.0 里面这个部分功能还不完善。

另外在 DM 1.0 时,heartbeat 开启时,会在上游数据库中创建库表,上游发生切换后,可能会导致一些问题。建议把 heartbeat 参数去掉,重启 task 后再看下 HA 的效果。

1赞

顧問好,

我們嘗試把enable-heatbeat: false後,task HA功能可正常運作了,太神啦!!!
分享步驟如下:
1. 修改task_c8_replication.yaml
enable-heatbeat: false

2. pause-task
bin/dmctl -master-addr 172.31.13.107:8261,172.31.13.108:8261,172.31.13.109:8261 pause-task task_c8_replication


3. stop-task
bin/dmctl -master-addr 172.31.13.107:8261,172.31.13.108:8261,172.31.13.109:8261 stop-task conf/task_c8_replication.yaml

4. start-task
bin/dmctl -master-addr 172.31.13.107:8261,172.31.13.108:8261,172.31.13.109:8261 start-task conf/task_c8_replication.yaml
5. query-status
bin/dmctl -master-addr 172.31.13.107:8261,172.31.13.108:8261,172.31.13.109:8261 query-status task_c8_replication

6. tiup dm restart dm --node 172.31.13.107:8262 (故意重啟dm-worker)
下圖可看出task綁定到另外一個dm-worker

7. query-status (再次check task => 正常運作)

1赞

:+1: 感谢分享

1赞