【发布时间】:2020-05-15 21:19:04
【问题描述】:
最近,我读到基于 Galera 的 MySQL 集群在默认情况下对 DDL 使用称为全顺序隔离 (https://galeracluster.com/library/documentation/schema-upgrades.html#toi) 的概念,该概念会暂停整个集群上的写入,直到它在所有节点上提交。
MySQL 如何处理原生异步复制中的 DDL? 它是否也会停止其他模式的写入?
【问题讨论】:
-
MySQL 必须锁定正在更改的表。它不是一个集群,因此不需要锁定整个集群。复制使用日志在从属服务器上运行相同的事务。从属服务器没有被锁定,因为主服务器正在更改或添加表结构,但是当它运行这些事务时,它将拥有与主服务器相同的锁。
-
谢谢,Master 上的其他模式怎么样?如果我们在 MySQL 异步复制设置中的主 A 和 B 上有两个模式(一个主和两个从)。 DDL 正在模式 A 上执行。模式 B 在该状态下是否仍可写?
-
MySQL 不会为了执行 DDL 而锁定数据库。它只锁定它需要锁定的东西。