配置迁移对象的匹配规则
本文为您介绍迁移对象匹配规则的背景信息、使用限制、配置方式,以及场景示例和常见问题。
背景信息
您在创建数据迁移项目时,必须指定具体的数据迁移对象。但数据传输支持同步 DDL 后,如果在迁移过程中源端创建了新表,则会由于该表未在指定的数据迁移对象中,导致无法同步该表的数据。
在处理大量对象的场景下,数据传输支持通过配置匹配规则的方式进行对象的选择和映射。同时提供映射源端和目标端关系的重命名以及批量重命名功能,方便您快捷创建数据迁移项目和数据同步项目。匹配规则方式通过简单、高效的字符串匹配,可以显著提升您的工作效率。同时基于匹配规则,能够提升数据传输处理大量对象的性能。
使用限制
数据传输允许输入多条规则,但每条规则使用单行且每条规则前后不允许存在空格。
迁移对象规则不允许为空,排除对象规则允许为空。
Schema 和数据库名称不支持通配选择。
排除对象规则不支持输入
Schema.*
或DataBase.*
。迁移对象规则支持输入特定的对象名称,但该类对象不支持同步 DDL。
执行修改表名称的 DDL 语句时,不允许将排除对象规则中的表重命名为排除对象规则之外的名称。
数据传输不支持在结构迁移、全量迁移期间进行 DDL 变更。
通过匹配规则的方式选择迁移对象时,如果表内包含特殊字符(.|\"'`()=;/&\n),数据传输不支持展示。
注意事项
通过配置匹配规则的方式选择迁移对象时,建议您规范化创建 CATS 语句,通过设置 排除对象规则(例如,
a.cats*
) 来避免出现数据迁移项目中断的情况。当您完成配置迁移对象规则和排除对象规则后,如果源端表名在迁移对象规则和排除对象规则的差集内,则相关对象可以被选择。
说明差集是指对于给定的两个集合,返回一个包含所有存在于第一个集合但不存在于第二个集合的元素的新集合。
开启同步 DDL 功能后,当您使用 DDL 语句在源端创建一张新表或者修改一张表结构时,如果表名或表结构名在迁移对象规则和排除对象规则的差集内,则该 DDL 语句可以被数据传输实时同步至目标端。
多表汇聚场景下:
建议您使用导入对象和匹配规则的方式映射源端和目标端的关系。
建议您自行在目标端创建表结构。如果使用数据传输创建,请在结构迁移步骤跳过部分失败对象。
配置匹配规则
场景示例
本小节以生产环境存在四个库:jenkins_api_mysql56、jenkins_api_mysql57、jenkins_my2dh_one 和 jenkins_my2dh_one_verify 为例,为您介绍不同场景下匹配规则的配置。
整库同步
四个库均需要迁移至目标端,匹配规则的配置如下。

排除历史表和日志表
无需同步数据库 jenkins_api_mysql56 的历史表和日志表,且历史表以 "history_" 开头,日志表以 log 结尾。匹配规则的配置如下。

设置源端和目标端的映射关系
数据库 jenkins_my2dh_one_verify 需要同步至目标端为 target_test 数据库中的表 one,匹配规则的配置如下。

多表汇聚场景
数据库 jenkins_api_mysql56 和 jenkins_api_mysql57 中存在订单表分表 order00 ~ order99,用户希望合入至目标端数据库 jenkins_api_mysql59 中的表 order。匹配规则的配置如下。

常见问题
权限不足
请注意源端用户的权限设置问题。如果您授予用户的权限不足,部分对象未被数据传输从前端展示出来,会导致您不能正确配置匹配规则。因此您需要将未授予权限的对象加入 排除对象规则,以避免数据传输因无法找到目标端对象而造成数据迁移项目中断。
不支持过滤 DML
在未开启同步 DDL 的情况下,数据传输允许使用匹配规则的方式选择对象。在增量同步的过程中,如果新建表满足匹配规则,相关的 DDL 语句会被忽略,但数据传输会继续同步 DML 语句,这样会造成无法写入目标端对象而造成数据迁移项目中断,因此您需要在目标端新建表或者将表加入到组件的黑名单。