关于Galera集群TOI模式及写阻塞机制的技术疑问
Galera集群Total Order Isolation (TOI)模式核心问题解答
1. 多库场景下TOI的写阻塞范围
在TOI模式下,当某节点的「数据库A」执行DDL触发TOI事件时,整个节点的所有写操作都会被阻塞,包括「数据库B」的写请求。TOI的锁机制是节点级别的——DDL执行期间,节点会进入全局“隔离”状态,暂停处理所有写入事务(无论归属哪个数据库),直到DDL的write-set在集群内完成全序同步并在所有节点应用完毕。你通过进程列表观察到的服务器级别阻塞是符合实际行为的,这是TOI保证DDL原子性和集群数据一致性的核心逻辑。
2. Galera集群Write-sets的管理方式
- Write-sets由每个节点独立管理,并非按数据库级别划分。每个节点会为自身处理的所有跨库事务生成对应的write-set,再通过组通信协议(GCS)同步至集群内其他节点。
- 每个节点维护专属的write-set日志和冲突检测逻辑,收到其他节点的write-set后,会在本地基于行级快照隔离完成冲突检查,通过后再按照全局统一顺序应用到本地数据库实例。
3. 官方文档的相关说明
Galera官方文档明确指出TOI的阻塞是节点级别的,核心描述如下:
TOI模式下,DDL操作会触发全局节点级锁,暂停节点上的所有写入操作,直到DDL在集群所有节点完成应用。这一机制用于保证DDL操作的原子性,确保所有节点的schema状态保持一致。
你可以在官方文档的「DDL Handling」章节找到该模式的详细说明,重点关注Total Order Isolation部分的内容。
内容的提问来源于stack exchange,提问作者samsamsamsmasma
相关产品推荐
相关产品推荐

