You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Galera集群中是否应避免同DDL脚本混用CREATE与ALTER TABLE?

回答

是的,将仅含CREATE TABLE的脚本与ALTER TABLE的脚本拆分是Galera集群执行DDL迁移时的已知最佳实践,尤其适合你遇到的批量迁移场景,原因如下:

  • Galera的DDL同步机制限制:Galera默认采用TOI(Total Order Isolation)模式处理DDL,该模式要求所有集群节点在同一个全局事务序列中执行DDL,会短暂占用全局锁。如果在同一个脚本或连续无间隔的脚本中混合执行CREATE、ALTER等多种DDL,容易引发事务认证队列阻塞——后续DDL的"Waiting for certification"状态,本质是等待前面的DDL完成全节点同步后才能继续,批量混合DDL会放大这种阻塞概率。
  • 适配MDEV-34784类场景:你提到的MDEV-34784核心是批量DDL执行时的认证逻辑冲突,拆分脚本相当于给每个DDL独立的执行上下文,让每个DDL都能完成全节点的同步确认后再执行下一个,刚好规避了该bug的触发条件。
  • 额外的DDL迁移建议:
    • 尽量遵循单脚本单DDL的原则,进一步降低冲突概率
    • 执行迁移前用SHOW STATUS LIKE 'wsrep_cluster_status'确认集群处于Primary状态,所有节点wsrep_ready=ON
    • 优先在业务低峰期执行DDL迁移,即使拆分脚本,TOI模式下的DDL仍会短暂阻塞写操作
    • 针对大表DDL,可考虑切换为RSU(Rolling Schema Upgrade)模式滚动执行,但RSU需要手动逐个节点操作,小表场景用TOI+拆分脚本更高效

内容的提问来源于stack exchange,提问作者André Risnes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 06:12:05