返回介绍

表库过滤

发布于 2020-10-26 07:01:25 字数 2037 浏览 1113 评论 0 收藏 0

TiDB 生态工具默认情况下作用于所有数据库,但实际使用中,往往只需要作用于其中的部分子集。例如,用户只想处理 foo*bar* 形式的表,而无需对其他表进行操作。

从 TiDB 4.0 起,所有 TiDB 生态系统工具都使用一个通用的过滤语法来定义子集。本文档介绍如何使用表库过滤功能。

使用表库过滤

命令行

在命令行中使用多个 -f--filter 参数,即可在 TiDB 生态工具中应用表库过滤规则。每个过滤规则均采用 db.table 形式,支持通配符(详情见TOML 配置文件

在 TOML 文件中,表库过滤规则以字符串数组的形式指定。以下为各个工具中的使用示例:

  • Lightning:

    [mydumper]
    filter = ['foo*.*', 'bar*.*']
  • TiCDC

    [filter]
    rules = ['foo*.*', 'bar*.*']
    
    [[sink.dispatchers]]
    matcher = ['db1.*', 'db2.*', 'db3.*']
    dispatcher = 'ts'

表库过滤语法

直接使用表名

每条表库过滤规则由“库”和“表”组成,两部分之间以英文句号 (.) 分隔。只有表名与规则完全相符的表才会被接受。

db1.tbl1
db2.tbl2
db3.tbl3

表名只由有效的标识符组成,例如:

  • 数字(09
  • 字母(azAZ
  • $
  • _
  • 非 ASCII 字符(U+0080U+10FFFF

其他 ASCII 字符均为保留字。部分标点符号有特殊含义,详情见下一节。

使用通配符

表名的两个部分均支持使用通配符(详情见 fnmatch(3))。

  • *:匹配零个或多个字符。
  • ?:匹配一个字符。
  • [a-z]:匹配 “a” 和 “z” 之间的一个字符。
  • [!a-z]:匹配不在 “a” 和 “z” 之间的一个字符。
db[0-9].tbl[0-9a-f][0-9a-f]
data.*
*.backup_*

此处,“字符”指的是一个 Unicode 码位,例如:

  • U+00E9 (é) 是 1 个字符。
  • U+0065 U+0301 (é) 是 2 个字符。
  • U+1F926 U+1F3FF U+200D U+2640 U+FE0F (

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文