文档

配置匹配规则

更新时间:

本文为您介绍迁移/同步对象匹配规则的背景信息、使用限制、配置方式,以及场景示例和常见问题。

背景信息

您在创建数据迁移或数据同步项目时,需要指定具体的迁移或同步的对象。数据传输提供指定对象、导入对象和匹配规则三种方式供您选择。其中匹配规则方式支持您通过编写通配规则指定需要迁移或同步的对象,并且支持配置源端及目标端的对象映射逻辑,通过简单、高效的字符串匹配能力,可以有效地降低您在待迁移/同步对象数量众多时的配置难度。同时,符合匹配规则的新增表可以通过增量 DDL 的方式自动同步至目标端。数据迁移增量 DDL 的详情请参见 同步 DDL 的支持范围和使用限制。 

数据传输支持的通配规则及其要求如下。

说明

下方表格中的星号(*)表示通配规则。

类别

支持的通配规则

示例

说明

库表平迁

*.*

kd_test*.person*

将源端 kd_test 开头的所有库下 person 开头的所有表迁移至目标端,库名、表名保持不变。

*.<源端表>

kd_test*.person

将源端 kd_test 开头的所有库下 person 表迁移至目标端,库名、表名保持不变。

<源端库>.*

kd_test.person*

将源端名为 kd_test 的库下 person 开头的所有表迁移至目标端,库名、表名保持不变。

<源端库>.<源端表>

kd_test.person

将源端名为 kd_test 的库下名为 person 的表迁移至目标端,库名、表名保持不变。

库表重命名

<源端库>.<源端表>=<目标端库>.<目标端表>

kd_test.person=kd_test_new.person_new

将源端名为 kd_test 的库下名为 person 的表迁移至目标端,并且将库 kd_test 重命名为 kd_test_new,表 person 重命名为 person_new。

<源端库>.*=<目标端库>.*

kd_test.person*=kd_test_new.person*

将源端名为 kd_test 的库下 person 开头的所有表迁移至目标端,并且将库 kd_test 重命名为 kd_test_new,表名保持不变。

*.<源端表>=*.<目标端表>

kd_test*.person=kd_test*.person_new

将源端 kd_test 开头的所有库下名为 person 的表迁移至目标端,并且将表 person 重命名为 person_new,库名保持不变。

库表汇聚

<源端库>.*=<目标端库>.<目标端表>

kd_test.person*=kd_test.person_all

将源端名为 kd_test 的库下 person 开头的所有表汇聚至目标端库 kd_test 下的表 person_all 中。

*.<源端表>=<目标端库>.<目标端表>

kd_test*.person=kd_test_all.person

将源端以 kd_test 开头的所有库下名为 person 的表汇聚至目标端库 kd_test_all 下的表 person 中。

*.*=<目标端库>.<目标端表>

kd_test*.person*=kd_test_all.person_all

将源端以 kd_test 开头的所有库下以 person 开头的所有表汇聚至目标端库 kd_test_all 下的表 person_all 中。

*.*=<目标端库>.*

kd_test*.person*=kd_test_all.person*

将源端以 kd_test 开头的所有库下以 person 开头的所有表汇聚至目标端库 kd_test_all 下,表名保持不变。

*.*=*.<目标端表>

kd_test*.person*=kd_test*.person_all

将源端以 kd_test 开头的所有库下以 person 开头的所有表汇聚至目标端以 kd_test 开头的库下的表 person_all 中,库名保持不变。

通配规则要求如下:

  • 目标端的库名和表名不允许同时为通配规则。例如,kd_test*.person*=kd_test*.person*

  • 如果源端库和目标端库均为通配规则,则库级别的表达式必须完全一样,表示库平迁。

  • 如果源端表和目标端表均为通配规则,则表级别的表达式必须完全一样,表示表平迁。

  • 如果目标端库为通配规则,则源端库必须也为通配规则。

  • 如果目标端表为通配规则,则源端表必须也为通配规则。

使用限制

  • 数据同步项目中,仅数据库至数据库同步支持通过配置匹配规则的方式选择同步对象。

  • 数据传输允许输入多条规则,但需要注意每条规则不能跨行且前后不允许有空格。

  • 迁移或同步对象规则不允许为空,排除对象规则允许为空。

  • 数据传输不支持在结构迁移、全量迁移期间进行 DDL 变更。

  • 通过匹配规则的方式选择迁移或同步对象时,数据传输不支持表名包含特殊字符(包括换行、空格,以及 .|"'`()=;/&*?[][!])。

  • 数据传输不支持通过多条匹配规则,将源端同一个库下的不同表映射至目标端的不同库下。例如,a.a* = b.a* & a.b* = c.b*

  • 存在库或表汇聚的场景下,不支持反向增量。

    说明

    数据传输仅在保存或启动数据迁移/数据同步项目时,根据已有的库表是否存在汇聚场景进行判断。如果在项目运行过程中新出现库表汇聚的场景,则不会被数据传输拦截,可能出现反向增量无法正确识别库表映射关系,导致数据质量问题。

  • 数据传输暂不支持 CREATE DATBASE 的 DDL 语句。如果新建的库名在迁移/同步的匹配规则内,您需要手动在目标端创建数据库才能继续新增库的数据同步。

注意事项

  • 当您完成配置迁移/同步对象规则和排除对象规则后,如果源端表名在迁移/同步对象规则和排除对象规则的差集内,则相关对象可以被选择。

    说明

    差集是指对于给定的两个集合,返回一个包含所有存在于第一个集合但不存在于第二个集合的元素的新集合。

  • 开启同步 DDL 功能后,当您使用 DDL 语句在源端创建一张新表或者修改一张表结构时,如果对应的表名在迁移/同步对象规则和排除对象规则的差集内,则该 DDL 语句可以被数据传输同步至目标端。

  • 库表汇聚场景下:

    • 建议您使用导入对象或匹配规则的方式映射源端和目标端的关系。

    • 建议您自行在目标端创建表结构。如果使用数据传输创建,请在结构迁移步骤跳过部分失败对象。

    • 如果您在库或表汇聚的场景下勾选了 DDL 同步,可能存在误删风险。例如,源端多个库或表汇聚至目标端的一个库或表中。此时,删除源端的一个库或表,可能导致目标端的汇聚库或表被删除。

    • 您在创建数据迁移或数据同步项目时,请配置 全量迁移目标端对象存在记录时处理策略 为 忽略

      说明

      选择 忽略,全量校验将使用 IN 模式拉取数据,无法校验目标端多数据的场景,并且校验性能存在一定程度降级。

  • 如果表存在重命名映射,则优先重命名映射。例如,同时存在规则 a.b[0-3]a.b[3-5]=a.c,则表 a.b3 重命名为 a.c

  • 执行 RENAME TABLE 的 DDL 语句时,如果 RENAME 后的表对象不在原匹配规则或排除规则内,可能导致非预期同步问题,请谨慎操作。

配置匹配规则

  1. 新建数据迁移或数据同步项目,并配置至 选择迁移对象 选择同步对象 步骤。

    详情请参见相应类型的 数据迁移数据同步 项目文档。

    说明
  2. 选择迁移对象 页面,选择当前数据迁移项目的迁移对象。

    您可以通过 指定对象匹配规则 两个入口选择迁移对象,本文仅为您介绍如何配置匹配规则。

    1. 勾选 匹配规则

      image

    2. 选择迁移范围 区域,输入 迁移对象规则排除对象规则(可选)。支持的匹配规则详情请参见 通配符规则说明

      说明

      如果您配置的规则中包含空格,可能导致迁移或同步对象有误。

    3. 单击 校验

      如果您需要查看匹配结果,请在校验成功后单击 预览对象 进行查看。您填写的通配迁移对象规则和排除对象规则,会同时应用于表和视图。匹配结果 包括最终对象、新增对象和减少对象。

      对象

      描述

      最终对象

      配置的匹配规则最终匹配的迁移对象。

      新增对象

      最终匹配结果和前一次配置的匹配结果相比,新增的迁移对象。

      减少对象

      最终匹配结果和前一次配置的匹配结果相比,减少的迁移对象。

  3. 根据提示完成后续的项目配置。

场景示例

库表平迁

将源端 jenkins_api 开头的所有库下,以 test 开头的所有表迁移至目标端,库名、表名保持不变。匹配规则的配置如下。

image.png

库表重命名

将源端名为 jenkins_my2dh_one 的库下,以 test 开头的所有表迁移至目标端,并且将库 jenkins_my2dh_one 重命名为 jenkins_my2dh_one_new,表名保持不变。匹配规则的配置如下。

image.png

库表汇聚

将源端以 jenkins_api 开头的所有库下,以 order 开头的所有表汇聚至目标端库 jenkins_api_all 下的表 order 中。匹配规则的配置如下。

截屏2023-12-04 18.33.49.png

配置排除对象规则

设置无需同步源端名为 jenkins_api_mysql56 的库下的历史表和日志表,且历史表以 "history_" 开头,日志表以 log 结尾。匹配规则的配置如下。

image.png

常见问题

  • 权限不足

    请注意源端用户的权限设置问题。如果您授予用户的权限不足,部分对象未被数据传输从前端展示出来,会导致您不能正确配置匹配规则。因此您需要将未授予权限的对象加入 排除对象规则,以避免数据传输因无法找到目标端对象而造成数据迁移或数据同步项目中断。

  • 不支持过滤 DML

    在未开启同步 DDL 的情况下,数据传输允许使用匹配规则的方式选择对象。在增量同步的过程中,如果新建表满足匹配规则,相关的 DDL 语句会被忽略,但数据传输会继续同步 DML 语句,这样会造成无法写入目标端对象而造成数据迁移或数据同步项目中断,因此您需要在目标端新建表或者将表加入黑名单。

  • 本页导读 (0)