选择同步对象
选择同步对象用于确定当前作业的同步范围。Teleport 会按照数据源的对象层级展示 Database、Schema、Table 等对象,并将选择结果保存为 includes 或 excludes 规则。源端新增表后,只要表名仍在这些规则定义的范围内,就会自动同步。
表是否同步由 includes 或 excludes 决定。includes 表示只同步命中的对象;excludes 表示同步未被排除的对象。
选择页面
页面以树形结构展示源端对象。不同数据源的层级可能不同,例如:
- MySQL:Database → TABLES → Table
- PostgreSQL / ProtonBase:Database → Schema → TABLES → Table
- MongoDB:Database → COLLECTIONS → Collection
页面顶部提供以下操作:
- 全选:选中当前页面中可选择的对象。
- 全不选:取消选中当前页面中可选择的对象。
- 预览:按照当前配置重新展示最终同步名单。进入下一步前,建议通过预览确认实际选中的对象。

对于需要预先分析消息结构的部分 Kafka 协议,页面还会显示“重新分析 Schema”和“增量分析 Schema”,具体说明参见Kafka Schema 分析。
includes 和 excludes
同一对象层级使用 includes 或 excludes 表达同步范围:
| 规则 | 含义 | 新增表的行为 |
|---|---|---|
includes | 白名单,只同步精确名称或正则命中的对象 | 精确名称以外的新表不进入范围;命中正则的新表自动进入范围 |
excludes | 黑名单,同步未被排除的对象 | 未命中排除项的新表自动进入范围 |
例如:
includes = [orders, users]:只同步orders和users。includes = [regexp_match(SOURCE_OBJECT, '^order_[0-9]+$')]:同步当前及以后新增的所有order_数字表。excludes = [tmp_orders]:除了tmp_orders之外,当前及以后新增的其他表都在同步范围内。
页面上的勾选、排除和正则挑选会自动生成这些规则,不需要手工编辑配置。判断新增表是否会同步时,需要从 Database、Schema 到 Table 逐级检查其是否在同步范围内。
精确选择对象
逐级选择
展开对象树,通过对象名称前的复选框选择或排除 Database、Schema 和 Table。
- 取消选择上级对象后,其下级对象不会进入同步名单。
- TABLES 等分组节点支持一次选择或排除该节点下的全部对象。
- 分组节点处于半选状态时,表示其下只有部分对象被选中。
对象范围较小且长期固定时,建议逐表明确选择,避免临时表、历史表或其他无关对象进入同步名单。
搜索后选择
在对象分组节点上点击“搜索”,可以按照名称关键字过滤当前显示的对象。搜索不区分大小写,只改变页面显示,不会修改已有选择状态。
搜索后可以勾选所需对象,也可以使用页面顶部的“全选”或“全不选”批量操作当前显示的对象。关闭搜索后,未显示对象原有的选择状态仍会保留。
框选
需要连续调整多项时,可以在对象树中拖动框选。框选会切换命中对象的选择状态:原来已选中的对象会被取消,原来未选中的对象会被选中。
使用正则批量挑选表
正则挑选适合表数量较多、并且表名具有稳定规律的场景,例如分表、按日期建表或使用统一业务前缀的表。
正则的作用范围
正则入口位于每个 TABLES 节点旁边。点击“正则挑选”后,规则只匹配当前路径下的表:
- MySQL 中,规则只作用于当前 Database 下的表。
- PostgreSQL / ProtonBase 中,规则只作用于当前 Database 和 Schema 下的表。
新版界面不再分别填写 Database 正则和 Table 正则。如果多个 Database 或 Schema 都需要相同规则,需要分别在对应的 TABLES 节点下配置。
填写规则
输入框中只需要填写裸正则,界面会自动将其保存为:
regexp_match(SOURCE_OBJECT, '${正则表达式}')例如:
| 需求 | 输入的正则 |
|---|---|
匹配 order_20260801 这类日期表 | ^order_[0-9]{8}$ |
匹配所有 order_ 前缀表 | ^order_.*$ |
只匹配 orders 或 refunds | ^(orders|refunds)$ |
| 匹配以数字结尾的分表 | ^sale_[0-9]+$ |
匹配采用全表名匹配,并按照数据源的对象名称规则处理大小写。建议使用 ^ 和 $ 明确匹配边界,使规则意图更容易阅读。
查看实时预览
输入规则后,弹窗会实时显示:
- 每条规则的命中数量和命中的表。
- 所有规则合计命中的表数。
- 未被任何规则命中的表。
- 同时被多条规则命中的冲突表。
界面还会根据当前表名提供最多若干条智能推荐,例如数字后缀、日期后缀或公共前缀规则。点击推荐项可将其加入规则列表,应用前仍应检查实际命中结果。

避免规则冲突
同一张表最多只能被一条正则规则命中。多条规则同时命中同一张表时,该表应该继承哪一组表级属性和映射规则并不明确,作业会报错。
例如,以下两条规则都会命中 order_20260801,不能同时使用:
^order_.*$
^order_[0-9]{8}$发生冲突时,应删除范围过大的规则,或调整规则使各自的命中集合互不重叠。
应用正则规则
点击确定后,当前 TABLES 节点会转为按同步名单选择:
- 正则命中的表归入对应的正则节点。
- 原来已选中但没有被正则命中的表仍会以精确表名保留,不会因为应用正则而丢失。
- 未被正则命中且原来未选中的表,仍不会加入同步名单。
- 保存后的正则会持续作为
includes规则使用,以后新增且命中该正则的表也会自动进入同步范围。
正则节点会显示完整的 regexp_match(SOURCE_OBJECT, '...') 表达式,命中的表以只读子节点展示。可以在正则节点上统一设置同步属性和映射规则,让当前规则内的表继承相同配置。
删除一条正则规则时,该规则原先命中的表会恢复为精确表名并保持选中,不会直接从同步名单中删除;以后新增的同类表则不再受这条正则覆盖。如果不再需要当前这些表,还需要取消选择对应的表。
正则规则最佳实践
- 先在具体的 Database 或 Schema 下缩小范围,再配置表名正则。
- 优先使用能够表达完整命名约束的规则,例如
^order_[0-9]{8}$,避免直接使用.*。 - 每添加或修改一条规则,都检查命中数量、未命中列表和冲突提示。
- 在正则节点上配置目标表映射时,普通同名同步应保留
SOURCE_OBJECT,不要把所有表映射到同一个固定表名。 - 只有明确的分库分表合并场景才将多张源表映射到同一目标表,并提前检查表结构、主键和唯一索引是否兼容。
- 保存后运行预检查,并在表映射列表中确认每张源表的最终目标位置。
映射规则的详细语法请参见设置映射规则。分表合并请参见数据同步分库分表最佳实践。
新增表的匹配行为
对于包含增量同步的作业,源端新增表会使用作业中已经保存的对象规则进行匹配:
- 新表所在的 Database 和 Schema 必须在同步范围内。
- 表级使用
excludes时,只要新表没有被排除,就会自动同步。 - 表级使用
includes时,新表名必须命中其中一条正则规则;仅配置精确表名不会匹配其他新表。 - 命中正则的新表会继承正则节点上的同步属性和映射规则。
因此,如果业务会持续创建 order_日期 一类的表,建议使用范围准确的正则 includes,而不是逐张填写当前已有表名。开放范围同时要求同步账户具有读取未来新表的权限;预检查发现权限只覆盖当前表时会给出相应提示。
Kafka Schema 分析
对于 Canal JSON、Canal Protobuf、OGG JSON 等需要从消息中分析表结构的 Kafka 协议,“选择同步对象”页面提供:
- 重新分析 Schema:清除已有分析结果,重新分析整个 Schema。
- 增量分析 Schema:加入新发现的表、覆盖已有表的分析结果,并保留其他表。
这类协议的可同步表集合同时受 Schema 分析结果和 includes / excludes 约束。新增 Kafka 表时,应先执行“增量分析 Schema”,让系统获得完整字段结构;随后,只要新表命中已有对象规则,就会进入同步范围。
保存前检查
进入下一步前,点击“预览”并确认:
- 需要同步的 Database、Schema 和 Table 都已出现。
- 临时表、历史表和其他无关对象没有进入同步名单。
- 正则规则没有冲突或意外扩大命中范围。
includes/excludes对未来新增表的匹配范围符合预期。- 对象数量与预期一致。
保存对象范围后,如果继续修改连接、同步对象、属性或映射规则,应重新运行预检查。