title |
---|
Data Migration 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 TABLE...IF EXISTS |
^DROP TABLE... |
^DROP TABLE...IF EXISTS |
^DROP INDEX... |
^DROP INDEX...IF EXISTS |
当使用悲观协调模式和乐观协调模式进行分库分表合并迁移时,DDL 同步的行为存在变更,具体请参考悲观模式和乐观模式。
Online DDL 特性也会对 DDL 事件进行特殊处理,详情可参考迁移使用 GH-ost/PT-osc 的源数据库。