DM 分库分表合并场景

    假设上游库结构如下:

    • 实例 1

      | Schema | Tables | |:———|:———| | user | information, log_north, log_bak | | store_01 | sale_01, sale_02 | | store_02 | sale_01, sale_02 |

    • 实例 2

      | Schema | Tables | |:———|:———| | user | information, log_east, log_bak | | store_01 | sale_01, sale_02 | | store_02 | sale_01, sale_02 |

    • | Schema | Tables | |:———|:———| | user | information, log_south, log_bak | | store_01 | sale_01, sale_02 | | store_02 | sale_01, sale_02 |

    1. 合并三个实例中的 .information 表至下游 TiDB 中的 user.information 表。
    2. 合并三个实例中的 user.log_{north|south|east} 表至下游TiDB中的 user.log_{north|south|east} 表。
    3. 合并三个实例中的 store_{01|02}.sale_{01|02} 表至下游TiDB中的 store.sale 表。
    4. 过滤掉三个实例的 user.log_{north|south|east} 表的所有删除操作。
    5. 过滤掉三个实例的 user.information 表的所有删除操作。
    6. 过滤掉三个实例的 store_{01|02}.sale_{01|02} 表的所有删除操作。
    7. 过滤掉三个实例的 user.log_bak 表。
    8. 因为 store_{01|02}.sale_{01|02} 表带有 bigint 型的自增主键,将其合并至 TiDB 时会引发冲突。您需要有方案修改相应自增主键以避免冲突。

    假设同步后下游库结构如下:

    • 要满足同步需求 #1 和 #2,配置 Table routing 规则 如下:

    • 要满足同步需求 #3,配置 如下:

      1. ...
      2. store-route-rule:
      3. target-schema: "store"
      4. sale-route-rule:
      5. schema-pattern: "store_*"
      6. table-pattern: "sale_*"
      7. target-schema: "store"
      8. target-table: "sale"
    • 要满足同步需求 #4 和 #5,配置 Binlog event filter 规则 如下:

    • 要满足同步需求 #6,配置 如下:

      1. filters:
      2. ...
      3. sale-filter-rule:
      4. schema-pattern: "store_*"
      5. table-pattern: "sale_*"
      6. events: ["truncate table", "drop table", "delete"]
      7. action: Ignore
      8. store-filter-rule:
      9. schema-pattern: "store_*"
      10. events: ["drop database"]
    • 要满足同步需求 #7,配置 Black & white table lists 如下:

    • 要满足同步需求 #8,配置 如下:

      1. instance-1-sale:
      2. schema-pattern: "store_*"
      3. table-pattern: "sale_*"
      4. expression: "partition id"
      5. source-column: "id"
      6. target-column: "id"
      7. arguments: ["1", "store", "sale", "_"]
      8. instance-2-sale:
      9. schema-pattern: "store_*"
      10. table-pattern: "sale_*"
      11. expression: "partition id"
      12. source-column: "id"
      13. target-column: "id"
      14. arguments: ["2", "store", "sale", "_"]
      15. instance-3-sale:
      16. schema-pattern: "store_*"
      17. table-pattern: "sale_*"
      18. expression: "partition id"
      19. source-column: "id"
      20. target-column: "id"

    同步任务的完整配置如下。详情请参阅 Data Migration 任务配置文件