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 的源数据库。