DM 任务更新过滤规则

我有一个DM 任务,全量+增量的,现在处于增量阶段

我想做的操作是,上游有一部分表不想要再同步到下游了

我做了的操作:
1、pause 暂停一下任务,
2、然后task 文件增加一条过滤规则,check-task ./task.yaml,这一步一直不对

我想知道,可以动态的这样加过滤规则吗,有人成功过吗,这一部分是我对配置文件的改动

报错说yaml 格式有问题,我感觉是胡说,是不是任务每法动态该规则啊
这里说的11行,就是那个block-allow-list 这一行

尝试过一些其他的操作,写法,就是不行,所以怀疑是没法动态加规则

mysql-instances:
  - source-id: "source-instance-01"
    block-allow-list: "default-rule"
    loader-config-name: "default-loader"
    syncer-config-name: "default-syncer"
    filter-rules:
      - "ignore-ddl-rule-01"
      - "ignore-ddl-rule-02"
      - "ignore-ddl-rule-03"
      - "ignore-ddl-rule-04"
      - "ignore-ddl-rule-05"
      - "ignore-dml-rule-01"
      - "ignore-dml-rule-02"

block-allow-list:
  default-rule:
    ignore-dbs: ["system_db", "internal_db"]
    do-tables:
      - db-name: "business_db"
        tbl-name: "*"

filters:
  ignore-ddl-rule-01:
    schema-pattern: "business_db"
    table-pattern: "table_a"
    events: ["alter table"]
    action: Ignore

  ignore-ddl-rule-02:
    schema-pattern: "business_db"
    table-pattern: "table_b"
    events: ["alter table", "delete", "drop"]
    action: Ignore

  ignore-ddl-rule-03:
    schema-pattern: "business_db"
    table-pattern: "table_c"
    events: ["alter table", "delete", "drop table"]
    action: Ignore```

然后执行

tiup dmctl --master-addr localhost:8261  stop-task  任务名
tiup dmctl --master-addr localhost:8261  start-task  配置文件
1 个赞

这个是有什么用途

DM 同步延迟先看 relay log 有没有堆积,检查源库和目标之间的网络延迟。全量阶段慢可以调大 worker 数量和 batch size,增量延迟看 source 的 binlog 大小是否合理。

DM 的全量同步基于 dump/load 模式,增量同步基于 binlog 拉取和回放。增量延迟的本质是 binlog 消费速度跟不上生产速度,常见瓶颈在 worker 线程数、目标库写入能力、或者网络带宽。建议先看 dm_worker 的 metrics。

增量阶段不能直接改配置,需停任务后更新规则再重启,先核对 YAML 缩进格式。

1 个赞

你现在是 YAML 格式写错,不是 DM 不支持动态改
第 11 行 block-allow-list: 报错,看看是不是下面几种之一:

  1. 缩进不对:用了 Tab、或空格数和上一层不一致(必须全空格,不能 Tab)。
  2. 冒号后没空格block-allow-list:xxx :x:block-allow-list: xxx :white_check_mark:
  3. 层级放错block-allow-list全局一级,不能塞在 mysql-instances 里面。
  4. 规则名没引用:定义了 block-allow-list: bw-rule,但 mysql-instances 里没写 block-allow-list: bw-rule

规则修改限制:DM 增量阶段不支持动态修改过滤规则,需先停止任务,更新配置后重启任务才能生效。
报错根源:并非功能限制,是 YAML 语法错误,常见问题:混用 Tab 缩进、层级错误、冒号后缺少空格、规则引用格式不规范。

DM 同步延迟先看 relay log 有没有堆积,检查源库和目标之间的网络延迟。

这里的yaml 写法会和标准yaml 写法略有不同。

要实现目标,确实是先 stop-task 再start-task 就行 ,只要任务名不变,下游的位点不要去散户就行

此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。