重新更新任务配置文件,或者重新同步过滤的库?

【 TiDB 使用环境】测试环境
【 TiDB 版本】6.3
【遇到的问题】
task-mode: all
场景:
1、原数据迁移任务配置过滤某个库中的某个表,现在已跑一段时间,正常运行
2、现在我想把之前过滤的某个表重新同步
3、需要如何配置再一个任务配置文件里面更新,或者有哪种步骤支持这种场景

测试:
我使用命令tiup dmctl --master-addr xxx start-task --remove-meta ./task.yaml
我使用这个命令,好像可以同步之前忽略的表,请问下这个命令对后续同步有何影响吗?

  1. 使用这个命令,好像可以同步之前忽略的表,请问下这个命令对后续同步有何影响吗?
    a. 首先 all 模式需要经过 dump(上游导出 schema and table 数据) load(下游初始化数据) sync(持续同步binlog) 不同阶段;
    b. 下游数据库中存储的 checkpoint,meta-schema(非实时更新),如果强制移除 checkpoint,remove-meta,任务会重新开始 dump/sync,overwrite (没有清理的)下游数据; 在数据量较小的情况下,是没什么问题的,但是相当于多了前面的步骤,视机器性能、数据量大小不同,可能出现的延迟是不一样的。


  2. 如何配置再一个任务配置文件里面更新,或者有哪种步骤支持这种场景
    a. 有人有过同样的发问 请问修改了DM的task.yaml文件,如何重启生效?
    b. 实现忽略某表对应的功能点 → Block & Allow Table Lists → https://docs.pingcap.com/zh/tidb-data-migration/v5.3/dm-key-features#block--allow-table-lists
    c. 综上,用 Block & Allow Table Lists 重起 task 应该可以忽略该表。

这个命令应该是删掉元数据表,然后重新同步吧。前提也是需要清空下游的表

我这里操作流程是:

  1. 新建一个任务,专门只同步那个表
  2. 等表同步完成,找到那个表变更的低峰期。
  3. 确保两个任务都没有延时,先stop-task全量任务的同步,再stop-task新表的任务同步(这个是保证全量任务执行的GTID比新表要少,防止新表的变更丢失)
  4. 修改全量任务的配置,start-task全量任务(start-task/resume-task时候,DM会自动开启safe_mode,所以理论上即便两次stop-task期间,新表有变更,也可以正常同步下去)

https://docs.pingcap.com/zh/tidb/dev/dm-faq#如何为已有迁移任务增加需要迁移的表

标准的操作步骤,可以看官方文档,不过需要手动改元数据