17.9.4 数据定义语句

在组复制拓扑中,在执行数据定义语句(通常称为数据定义语言(DDL))时需要格外小心。鉴于 MySQL 不支持原子性或事务性 DDL,因此无法乐观地执行 DDL 语句,如果需要,以后可以回滚。因此,缺乏原子性不能直接适合组复制所基于的乐观复制范例。

因此,在复制数据定义语句时需要格外小心。模式更改和对对象包含的数据的更改需要通过同一服务器进行处理,而模式操作尚未完成并在各处复制。否则可能会导致数据不一致。

Note

如果组以单主服务器模式部署,那么这不是问题,因为所有更改都是通过同一服务器(主服务器)执行的。

Warning

MySQL DDL 执行不是原子的或事务性的。服务器执行和提交操作时无需先确保组协议的安全。这样,您必须在 DDL 正在执行且尚未复制到任何地方的同时,通过同一服务器为同一对象路由 DDL 和 DML。