DM执行任务的时候,只做了Dump,没有进行loader,直接syner了

问题如下

  • 如题目,DM执行任务的时候,只做了Dump,没有进行loader,直接syner了
  • 查看了work的文件目录,看到dump的sql已经存在
  • 上游是阿里云的rds
  • 查看tidb的数据库中,数据库创建了,但是数据库中没有表

任务如下:

name: "脱敏"
task-mode: "all"
target-database:
  host: "脱敏"
  port: 4000
  user: "root"
  password: ""

mysql-instances:
-
  source-id: "mysql-replica-01"
  black-white-list: "global"
  mydumper-config-name: "global"

black-white-list:
  global:
    do-tables:                        
    - db-name: "脱敏"              

mydumpers:
  global:
    mydumper-path: "/data/dm/work-data1_1/bin/mydumper" 
    extra-args: "-B 脱敏  --no-locks"

query-status 如下:

 query-status
{
    "result": true,
    "msg": "",
    "workers": [
        {
            "result": true,
            "worker": "脱敏",
            "msg": "",
            "subTaskStatus": [
                {
                    "name": "脱敏",
                    "stage": "Running",
                    "unit": "Sync",
                    "result": null,
                    "unresolvedDDLLockID": "",
                    "sync": {
                        "totalEvents": "0",
                        "totalTps": "0",
                        "recentTps": "0",
                        "masterBinlog": "(mysql-bin.001932, 306089998)",
                        "masterBinlogGtid": "5511bf34-9f8c-11e8-ade9-7cd30aeb7d98:1-257882236,711c81e0-9f8c-11e8-ade9-7cd30abeb464:1-76301308",
                        "syncerBinlog": "(mysql-bin|000001.001932, 305841360)",
                        "syncerBinlogGtid": "",
                        "blockingDDLs": [
                        ],
                        "unresolvedGroups": [
                        ],
                        "synced": false
                    }
                }
            ],
            "relayStatus": {
                "masterBinlog": "(mysql-bin.001932, 306089998)",
                "masterBinlogGtid": "5511bf34-9f8c-11e8-ade9-7cd30aeb7d98:1-257882236,711c81e0-9f8c-11e8-ade9-7cd30abeb464:1-76301308",
                "relaySubDir": "5511bf34-9f8c-11e8-ade9-7cd30aeb7d98.000001",
                "relayBinlog": "(mysql-bin.001932, 306089998)",
                "relayBinlogGtid": "",
                "relayCatchUpMaster": true,
                "stage": "Running",
                "result": null
            },
            "sourceID": "mysql-replica-01"
        }
    ]
}

看起来似乎你的黑白名单设置有问题,请参考该链接重新配置:

我是希望整个数据库都同步

black-white-list:
  global:
    do-tables:                        
    - db-name: "脱敏" 
      table-name:"*"

是这样些吗,table name 为 *

do-dbs: [] 同步整个库的话,配置这个

好的,我测试一下,另外,请问更新了任务的配置文件之后,怎么重新跑呢,因为我已经dump了,怎么让他从loader开始

  1. dmctl stop-task
  2. 修改配置文件
  3. dmctl update-task
  4. dmctl start-task

或者手动 loader 进去把

  • 1、第3步会提示报错,找不到任务,应该是不能stop任务,只能暂停任务
  • 2、start-task 之后有效果了,不过报错了,提示“Error 1146: Table 'xxx doesn’t exist”

除了手动loader 和 重跑之外,还有其他方案吗?

  • 1、因为数据流比较大,dump的时候,拆分了几千个sql文件了,很不好操作
  • 2、重跑的话,数据量比较大,只能凌晨跑,还不能影响正常业务

因为现在是处在 sync 阶段了,虽然白名单生效了,但是是按照现有白名单去 sync ,所以麻烦手动 loader 一下把。

好的,了解了

start-task 之前需要清理下游已经在增量导入的数据,并且配置 task.yaml 的 remove-meta: true