【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】 V7.5.5
【复现路径】DM从MySQL同步整库到tidb
【遇到的问题:问题现象及影响】为了节约空间,现在不需要整库同步到tidb,需要排除一些不需要同步的表,能停止同步任务,然后在配置文件中排除不需要同步的表,然后再开启同步么?
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】
原任务上修改应该不支持,可以重新配置个任务
是停止掉原来的任务,然后过滤掉不需要同步的表,然后启增量同步任务么?
是的,必须通过 stop-task + start-task 方式才能改任务配置。不过 DM 会定时将 sync_point 记录到下游的 TiDB 集群上,只要保证配置文件里的task-name
和之前一样,重建任务就不需要重新导数据同步,会按照下游 TiDB 集群上记录的 binlog 位点和 GTID 增量拉取。
学习下
black-white-list:
bw-rule-1:
do-dbs: [“ms_store”]
do-tables:
- db-name: “ms_store”
tbl-name: “~^.*”
ignore-tables:
- db-name: “ms_store”
tbl-name: “base_store”
routes:
instance-1-rule:
schema-pattern: “ms_store”
target-schema: “ms_store_cs”
配置文件中配置了过滤掉base_store,结果开启同步任务后,做全量同步的时候,还是没有过滤掉。
这个删掉,既然设置了 do-dbs 这个 do-tables 里的通配符就没必要了。如果一个表同时命中 do-tables 和 ignore-tables,只会生效 do-tables。 详细的过滤规则可以见: https://docs.pingcap.com/zh/tidb/stable/dm-block-allow-table-lists
更严谨的描述是,只要设置了 do-tables,那 ignore-tables 不管设置什么都没用,只要命中 do-tables 规则就同步,没有命中就过滤掉,会短路掉 ignore-tables 的设置,这个是跟 MySQL 的复制过滤规则类似,不要混用白名单和黑名单,很容易踩坑。
black-white-list:
bw-rule-1:
do-dbs: [“ms_store”]
do-tables:
#- db-name: “ms_store”
# tbl-name: “~^.*”
ignore-tables:
- db-name: “ms_store”
tbl-name: “base_store” 去掉这二行,确实就不会同步这个表了
dm相关 学习
选一个 标记为最佳答案吧,也能给我多加一点儿积分
扭头就给了第一个回答最佳答案
过滤应该可以实现