DM V6.0进行分库分表合并时,有个问题如果不注意可能酿成大祸!
上游MySQL操作删除某个分表数据的时候,采用delete from t1; 可正常删除数据,下游TiDB中的数据也能正常删除。
如果使用truncate table t1; 下游数据库的合并表t 将被清空。
DM task配置:
任务名,多个同时运行的任务不能重名。
name: “mysql2tidb9”
任务模式,可设为
full:只进行全量数据迁移
incremental: binlog 实时同步
all: 全量 + binlog 迁移
task-mode: “all”
下游 TiDB 配置信息。
target-database:
host: “xxx.xxx.xxx.xxx” # 例如:172.16.10.83
port: 5000
user: “root”
password: “QscUi/ODDWBDALE6/wfvRkBl3XbPxIU=” # 支持但不推荐使用明文密码,建议使用 dmctl encrypt 对明文密码进行加密后使用
当前数据迁移任务需要的全部上游 MySQL 实例配置。
mysql-instances:
上游实例或者复制组 ID。
source-id: “mysql-57”
需要迁移的库名或表名的黑白名单的配置项名称,用于引用全局的黑白名单配置,全局配置见下面的 block-allow-list
的配置。
route-rules: [“sale-route-rule”]
block-allow-list: “listA”
routes:
sale-route-rule:
schema-pattern: “test*”
table-pattern: “t*”
target-schema: “test”
target-table: “t”
黑白名单全局配置,各实例通过配置项名引用。
block-allow-list:
listA: # 名称
do-dbs: [“test1”,“test2”,“test3”] # 需要迁移的上游表的白名单。
初始化数据:
上游MySQL数据
通过DM同步到下游TiDB的数据
DELETE操作:
上游MySQL操作delete
通过DM同步到下游TiDB的数据
TRUNCATE操作:
上游MySQL操作TRUNCATE
通过DM同步到下游TiDB的数据