Data Migration DDL 特殊处理说明

DM 同步过程中,根据 DDL 语句以及所处场景的不同,将采用不同的处理方式。

忽略的 DDL 语句

以下语句 DM 并未支持,因此解析之后直接跳过。

描述SQL
transaction^SAVEPOINT
skip all flush sqls^FLUSH
table maintenance^OPTIMIZE\s+TABLE
^ANALYZE\s+TABLE
^REPAIR\s+TABLE
temporary table^DROP\s+(\/\\!40005\s+)?TEMPORARY\s+(\\/\s+)?TABLE
trigger^CREATE\s+(DEFINER\s?=.+?)?TRIGGER
^DROP\s+TRIGGER
procedure^DROP\s+PROCEDURE
^CREATE\s+(DEFINER\s?=.+?)?PROCEDURE
^ALTER\s+PROCEDURE
view^CREATE\s(OR REPLACE)?\s+(ALGORITHM\s?=.+?)?(DEFINER\s?=.+?)?\s+(SQL SECURITY DEFINER)?VIEW
^DROP\s+VIEW
^ALTER\s+(ALGORITHM\s?=.+?)?(DEFINER\s?=.+?)?(SQL SECURITY DEFINER)?VIEW
function^CREATE\s+(AGGREGATE)?\s?FUNCTION
^CREATE\s+(DEFINER\s?=.+?)?FUNCTION
^ALTER\s+FUNCTION
^DROP\s+FUNCTION
tableSpace^CREATE\s+TABLESPACE
^ALTER\s+TABLESPACE
^DROP\s+TABLESPACE
event^CREATE\s+(DEFINER\s?=.+?)?EVENT
^ALTER\s+(DEFINER\s?=.+?)?EVENT
^DROP\s+EVENT
account management^GRANT
^REVOKE
^CREATE\s+USER
^ALTER\s+USER
^RENAME\s+USER
^DROP\s+USER
^DROP\s+USER

改写的 DDL 语句

以下语句在同步到下游前会进行改写。

原始语句实际执行语句
^CREATE DATABASE…^CREATE DATABASE…IF NOT EXISTS
^CREATE TABLE…^CREATE TABLE..IF NOT EXISTS
^DROP DATABASE…^DROP DATABASE…IF EXISTS
^DROP TABLE…^DROP TABLE…IF EXISTS
^DROP INDEX…^DROP INDEX…IF EXISTS

合库合表迁移任务

当使用悲观协调模式和乐观协调模式进行分库分表合并迁移时,DDL 同步的行为存在变更,具体请参考悲观模式乐观模式

Online DDL

Online DDL 特性也会对 DDL 事件进行特殊处理,详情可参考迁移使用 GH-ost/PT-osc 的源数据库