sync-diff-inspector table-rules能否支持正则?

【背景】
使用sync-diff-inspector校验分库分表场景下的数据,说明如下:
上游数据库情况:
库名:sandbox
表名:

  1. box_{0-127} # 共128张分表
  2. box_config、box_other # 两张普通表

只同步分表到TiDB:
库名:sandbox
表名:box

现在要使用sync-diff-inspector对分表进行数据校验
配置如下:
######################### Tables config #########################
[[check-tables]]
schema = “sandbox” # 库的名称
tables = [“box”]

[[table-rules]]
schema-pattern = “sandbox”
table-pattern = “box_*”
target-schema = “sandbox”
target-table = “box”

【现象】
在运行校验的时候,sync-diff-inspector匹配到的表有128张分表(box_{0-127})以及两张普通表(box_config、box_other)

【问题】
在实际校验的时候我只需要校验分表,如何过滤box_config、box_other这两张表?table-pattern是否可以配置成:
table-pattern = “~^box_[0-9]+$”

【版本】
sync_diff_inspector: v5.0.3

3 个赞

可以这样配置

1 个赞

这样配置只能匹配到名为box的表,日志如下:

校验配置:

附库表信息:
上游库:

tidb库:

1 个赞

哦哦,把~去掉

1 个赞

一样的错误,配置:

1 个赞

:thinking: table-rules 是不支持正则的。

另外,DM 中的 table routing 也是不支持正则的。只能用通配符。

1 个赞

现在只能用 table-config方式把128张分表全部列出来吗?分表可能有256、1024张,可能还有分库,全部列出来太多了,后面会不会出版本支持?

1 个赞

改成box_??? 试试, 有可能是仅支持 *和?两种通配符 /尴尬

1 个赞

分库分表可以考虑这个场景
https://docs.pingcap.com/zh/tidb/stable/shard-diff#分库分表场景下的数据校验

1 个赞

好尴尬呀,竟然不支持正则

1 个赞

DM我用block-allow-list区限制了,类似:

1 个赞

DM 的 block-allow-list 是支持正则的,但是 table route 只支持通配符。这个官网有描述,建议详细看一下。如果描述不清晰,可以提 PR 更正哈~

另外 sync-diff 如果有需求,可以在 GitHub 上提一下需求。

我的这个sync-diff-inspector需求你这边能帮我提上去吗?

可以试试加上 exclude-tables = [“box_config”, “box_other”]
https://github.com/pingcap/tidb-tools/blob/db8d388d5cf22256bb0ebd65321f26dc5a5ace29/sync_diff_inspector/config.toml#L62

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