数据迁移任务配置向导

    配置需要迁移的数据源之前,首先应该确认已经在 DM 创建相应数据源:

    仿照下面的 示例定义数据迁移任务需要同步的单个或者多个数据源。

    配置迁移的目标 TiDB 集群

    仿照下面的 target-database: 示例定义迁移的目标 TiDB 集群。

    1. ---
    2. ## ********* 任务信息配置 *********
    3. name: test # 任务名称,需要全局唯一
    4. ## ******** 数据源配置 **********
    5. mysql-instances:
    6. - source-id: "mysql-replica-01" # 从 source-id = mysql-replica-01 的数据源迁移数据
    7. - source-id: "mysql-replica-02" # 从 source-id = mysql-replica-02 的数据源迁移数据
    8. ## ******** 目标 TiDB 配置 **********
    9. target-database: # 目标 TiDB 配置
    10. host: "127.0.0.1"
    11. port: 4000
    12. password: "" # 如果密码不为空,则推荐使用经过 dmctl 加密的密文

    如果不需要过滤或迁移特定表,可以跳过该项配置。

    配置从数据源迁移表的黑白名单,则需要添加两个定义,详细配置规则参考 Block & Allow Lists

      1. block-allow-list:
      2. bw-rule-1: # 规则名称
      3. # ignore-dbs: ["mysql", "account"] # 忽略哪些库,支持通配符 "*" 和 "?"
      4. do-tables: # 迁移哪些表,do-tables 和 ignore-tables 只需要配置一个,如果两者同时配置只有 do-tables 会生效
      5. - db-name: "test.*"
      6. tbl-name: "t.*"
      7. - db-name: "user"
      8. tbl-name: "information"
      9. bw-rule-2: # 规则名称
      10. ignore-tables: # 忽略哪些表
      11. - db-name: "user"
      12. tbl-name: "log"
    1. 在数据源配置中引用黑白名单规则,过滤该数据源需要迁移的表

    配置需要过滤的操作

    如果不需要过滤特定库或者特定表的特定操作,可以跳过该项配置。

    配置过滤特定操作,则需要添加两个定义,详细配置规则参考 Binlog Event Filter

    1. 定义全局的数据源操作过滤规则

      1. filters: # 定义过滤数据源特定操作的规则,可以定义多个规则
      2. filter-rule-1: # 规则名称
      3. schema-pattern: "test_*" # 匹配数据源的库名,支持通配符 "*" 和 "?"
      4. table-pattern: "t_*" # 匹配数据源的表名,支持通配符 "*" 和 "?"
      5. events: ["truncate table", "drop table"] # 匹配上 schema-pattern 和 table-pattern 的库或者表的操作类型
      6. action: Ignore # 迁移(Do)还是忽略(Ignore)
      7. filter-rule-2:
      8. events: ["all dml"]
    2. 在数据源配置中引用数据源操作过滤规则,过滤该数据源的指定库或表的指定操作

      1. mysql-instances:
      2. - source-id: "mysql-replica-01" # 从 source-id = mysql-replica-01 的数据源迁移数据
      3. block-allow-list: "bw-rule-1" # 黑白名单配置名称,如果 DM 版本早于 v2.0.0-beta.2 则使用 black-white-list
      4. filter-rules: ["filter-rule-1"] # 过滤数据源特定操作的规则,可以配置多个过滤规则
      5. - source-id: "mysql-replica-02" # 从 source-id = mysql-replica-02 的数据源迁移数据
      6. block-allow-list: "bw-rule-2" # 黑白名单配置名称,如果 DM 版本早于 v2.0.0-beta.2 则使用 black-white-list
      7. filter-rules: ["filter-rule-2"] # 过滤数据源特定操作的规则,可以配置多个过滤规则

    配置数据源表迁移到目标 TiDB 表的路由规则,则需要添加两个定义,详细配置规则参考 Table Routing

    1. 定义全局的路由规则

    2. 在数据源配置中引用路由规则,过滤该数据源需要迁移的表

      1. mysql-instances:
      2. - source-id: "mysql-replica-01" # 从 source-id = mysql-replica-01 的数据源迁移数据
      3. block-allow-list: "bw-rule-1" # 黑白名单配置名称,如果 DM 版本早于 v2.0.0-beta.2 则使用 black-white-list
      4. filter-rules: ["filter-rule-1"] # 过滤数据源特定操作的规则,可以配置多个过滤规则
      5. route-rules: ["route-rule-1", "route-rule-2"] # 数据源表迁移到目标 TiDB 表的路由规则,可以定义多个规则
      6. - source-id: "mysql-replica-02" # 从 source-id = mysql-replica-02 的数据源迁移数据
      7. block-allow-list: "bw-rule-2" # 黑白名单配置名称,如果 DM 版本早于 v2.0.0-beta.2 则使用 black-white-list
      8. filter-rules: ["filter-rule-2"] # 过滤数据源特定操作的规则,可以配置多个过滤规则

    配置是否进行分库分表合并

    如果是分库分表合并的数据迁移场景,并且需要同步分库分表的 DDL,则必须显式配置 shard-mode,否则不要配置该选项。

    分库分表 DDL 同步问题特别多,请确认了解 DM 同步分库分表 DDL 的原理和限制后,谨慎使用。

    1. ---
    2. ## ********* 任务信息配置 *********