title | summary |
---|---|
Data Migration DDL 特殊处理说明 |
数据迁移中,根据不同的 DDL 语句和场景,采用不同处理方式。DM 不支持的 DDL 语句会直接跳过。部分 DDL 语句在同步到下游前会进行改写。在合库合表迁移任务中,DDL 同步行为存在变更。Online DDL 特性也会对 DDL 事件进行特殊处理。 |
DM 同步过程中,根据 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 |
以下语句在同步到下游前会进行改写。
原始语句 | 实际执行语句 |
---|---|
^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 特性也会对 DDL 事件进行特殊处理,详情可参考迁移使用 GH-ost/PT-osc 的源数据库。