Data Migration 简单使用场景

    假设上游结构为:

    • 实例 1
    • 实例 2
    • 实例 3
    1. 不合并 库。

      1. 将实例 1 中的 user 库同步到下游 TiDB 的 user_north 库中。

      2. 将实例 2 中的 user 库同步到下游 TiDB 的 user_east 库中。

      3. 将实例 3 中的 user 库同步到下游 TiDB 的 user_south 库中。

    2. 将上游 store 库同步到下游 store 库中,且同步过程中不合并表。

      1. 实例 2 和实例 3 中都存在 store_sz 表,且这两个 store_sz 表分别被同步到下游的 store_suzhou 表和 store_shenzhen 表中。

      2. 任何情况下都不删除 store 库的任何数据。

    3. log 库需要被过滤掉。

    假设下游结构为:

    • 为了满足同步要求中第二点的第一条要求,需要配置以下 :

      1. routes:
      2. ...
      3. instance-2-store-rule:
      4. schema-pattern: "store"
      5. table-pattern: "store_sz"
      6. target-schema: "store"
      7. target-table: "store_suzhou"
      8. instance-3-store-rule:
      9. schema-pattern: "store"
      10. table-pattern: "store_sz"
      11. target-schema: "store"
      12. target-table: "store_shenzhen"
    • 为了满足同步要求中第一点的第四条要求,需要配置以下 :

    • 为了满足同步要求中第二点的第二条要求,需要配置以下 :

      1. filters:
      2. ...
      3. store-filter-rule:
      4. schema-pattern: "store"
      5. events: ["drop database", "truncate table", "drop table", "delete"]
      6. action: Ignore

    以下是完整的同步任务配置,详见配置介绍

    1. name: "one-tidb-slave"
    2. task-mode: all
    3. meta-schema: "dm_meta"
    4. target-database:
    5. host: "192.168.0.1"
    6. port: 4000
    7. user: "root"
    8. password: ""
    9. mysql-instances:
    10. -
    11. source-id: "instance-1"
    12. route-rules: ["instance-1-user-rule"]
    13. filter-rules: ["log-filter-rule", "user-filter-rule" , "store-filter-rule"]
    14. black-white-list: "log-ignored"
    15. mydumper-config-name: "global"
    16. loader-config-name: "global"
    17. syncer-config-name: "global"
    18. -
    19. source-id: "instance-2"
    20. route-rules: ["instance-2-user-rule", instance-2-store-rule]
    21. filter-rules: ["log-filter-rule", "user-filter-rule" , "store-filter-rule"]
    22. black-white-list: "log-ignored"
    23. mydumper-config-name: "global"
    24. loader-config-name: "global"
    25. syncer-config-name: "global"
    26. -
    27. source-id: "instance-3"
    28. route-rules: ["instance-3-user-rule", instance-3-store-rule]
    29. filter-rules: ["log-filter-rule", "user-filter-rule" , "store-filter-rule"]
    30. black-white-list: "log-ignored"
    31. mydumper-config-name: "global"
    32. loader-config-name: "global"
    33. syncer-config-name: "global"
    34. # 所有实例的共有配置
    35. routes:
    36. instance-1-user-rule:
    37. schema-pattern: "user"
    38. target-schema: "user_north"
    39. instance-2-user-rule:
    40. schema-pattern: "user"
    41. target-schema: "user_east"
    42. instance-3-user-rule:
    43. schema-pattern: "user"
    44. target-schema: "user_south"
    45. schema-pattern: "store"
    46. table-pattern: "store_sz"
    47. target-schema: "store"
    48. target-table: "store_suzhou"
    49. instance-3-store-rule:
    50. schema-pattern: "store"
    51. table-pattern: "store_sz"
    52. target-schema: "store"
    53. target-table: "store_shenzhen"
    54. filters:
    55. log-filter-rule:
    56. schema-pattern: "user"
    57. table-pattern: "log"
    58. events: ["truncate table", "drop table", "delete"]
    59. action: Ignore
    60. user-filter-rule:
    61. schema-pattern: "user"
    62. events: ["drop database"]
    63. action: Ignore
    64. store-filter-rule:
    65. schema-pattern: "store"
    66. events: ["drop database", "truncate table", "drop table", "delete"]
    67. action: Ignore
    68. black-white-list:
    69. log-ignored:
    70. ignore-dbs: ["log"]
    71. mydumpers:
    72. global:
    73. threads: 4
    74. chunk-filesize: 64
    75. skip-tz-utc: true
    76. loaders:
    77. global:
    78. pool-size: 16
    79. dir: "./dumped_data"
    80. syncers:
    81. global:
    82. worker-count: 16
    83. batch: 100