dm query-status "totalEvents": "0",

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

  • 【TiDB 版本】:3.0
  • 【问题描述】: 2个yaml文件,进行2个不同名称的作业将上游mysql的joytime-erp库,同步至下游tidm的joytime-erp库和test0111库,原有的task正常,新增了一个task_test0111。
    现在同步到test0111库的task_test0111已经启动正常,可totalEvents一直 是0,就是说任务看似启动了,其实没有同步数据。
    下面是query-status
    [tidb@i-maoh9wf3 bin]$ ./dmctl -master-addr 10.39.49.5:8261 query-status task_qhdtest210111
    {
    “result”: true,
    “msg”: “”,
    “workers”: [
    {
    “result”: true,
    “worker”: “10.39.49.5:8263”,
    “msg”: “”,
    “subTaskStatus”: [
    {
    “name”: “task_qhdtest210111”,
    “stage”: “Running”,
    “unit”: “Sync”,
    “result”: null,
    “unresolvedDDLLockID”: “”,
    “sync”: {
    “totalEvents”: “0”,
    “totalTps”: “0”,
    “recentTps”: “0”,
    “masterBinlog”: “(mysql-bin.000036, 70563535)”,
    “masterBinlogGtid”: “”,
    “syncerBinlog”: “(mysql-bin|000001.000036, 70558214)”,
    “syncerBinlogGtid”: “”,
    “blockingDDLs”: [
    ],
    “unresolvedGroups”: [
    ],
    “synced”: false
    }
    }
    ],
    “relayStatus”: {
    “masterBinlog”: “(mysql-bin.000036, 70563535)”,
    “masterBinlogGtid”: “”,
    “relaySubDir”: “c1ed5e25-6c37-11ea-a23e-00163e0bfe49.000001”,
    “relayBinlog”: “(mysql-bin.000036, 70563535)”,
    “relayBinlogGtid”: “”,
    “relayCatchUpMaster”: true,
    “stage”: “Running”,
    “result”: null
    },
    “sourceID”: “mysql-replica-02”
    }
    ]
    }

下面是新task设置
task_qhd210111.yaml (1.6 KB)

name: task_qhdtest210111 # global unique
task-mode: all # full/incremental/all

target-database:
host: “10.1.50.80”
port: 4000
user: “dm”
password: “NiU2SLoENJoxgXS+h2rWsUDQdbEQFcnOLQ4dgII=”
mysql-instances: # one or more source database, config more source database for sharding merge

source-id: "mysql-replica-02"
black-white-list: "instance"

# number of threads to use for dump data
mydumper-thread: 4

# number of threads to use for load data
loader-thread: 16

# number of threads to use for replicate binlog
syncer-thread: 16
syncer-config-name: "global"

route-rules: ["route-rule-1"]
filter-rules: ["filter-rule-1"]

filters: # 上游数据库实例匹配的表的 binlog event filter 规则集
filter-rule-1: # 配置名称
schema-pattern: “joytime-erp” # 库名匹配规则,支持通配符 “" 和 “?”
table-pattern: "

events: [“truncate table”, “drop table”, “delete”]
action: Ignore
routes:
route-rule-1:
schema-pattern: “joytime-erp”
target-schema: “test0111”

black-white-list:
instance:
do-dbs: [“joytime-erp”] # white list of upstream schemas needs to be replicated, regular expression (starts with ~) is supported
do-tables: # white list of upstream tables needs to be replicated, (db-name, tbl-name) regular expression (starts with ~) is supported
- db-name: “joytime-erp”
tbl-name: “~.*”

syncers:
global:
worker-count: 64
batch: 5000
max-retry: 100
enable-heartbeat: true

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

query-status 信息展示下。

已更新,帮忙分析一下,3Q

阐述当前问题即可,多个 task 之间不冲突,只要下游不重合就行,

整理下问题:
将 mysql 的 joytime-erp 数据库同步到 tidb 中 test0111 数据库,启动成功后没有报错,但是在 test0111 数据库中没有数据?

辛苦把 tidb 中 dm 数据库下关于 task-name:task_qhdtest210111 的表都 select 下?

image
task_qhdtest210111_loader_checkpoint 这个表空的
image
task_qhdtest210111_syncer_checkpoint

dm 版本辛苦提供下,建议重建这个同步。大致思路是;

  1. 关闭 dm 集群,清理下游已同步的数据,当前 drop tidb 中 test0111 库即可,请先对数据进行备份。
  2. 删除 dm 数据中 name:task_qhdtest210111 相关的表。
  3. 启动 dm 集群

dm_version = v1.0.3
刚才的操作过程,stop-task之后
1、删除了下游tidb库dm中的两个数据表
task_qhdtest210111_loader_checkpoint、task_qhdtest210111_syncer_checkpoint
2、删除dumped_data.task_qhdtest210111
3、删除下游test0111数据库
4、重启了dm-work:ansible-playbook start.yml --tags=dm-worker -l dm-worker1_2
现在还是不成


下图是原任务,正常

=========================================================
我在上游新增一个数据库,然后再对这个库进dm操作到下游tidb,就没问题。

请将 dm 版本提升到 2.0.x 或者到 1.0.x 最新版本试下?

刚调整了一下参数,之前是默认4-16-16
image
重启任务,目前query-status正常
数据同步正常了

跟参数应该没有关系的。。。重启任务才是重点感觉,这个问题还是不是很清晰