Flyway对MariaDB Galera集群并行迁移的支持现状咨询
Flyway 对接 MariaDB Galera 集群并行迁移问题说明
官方标称的集群支持逻辑
- Flyway 官方文档明确表述,产品通过数据库自身提供的锁技术协调多节点操作,可保障多应用实例同时发起数据库迁移时的执行正确性,官方明确声明完全支持集群配置场景。
现有版本的锁机制冲突
- Flyway 6.0 及以上版本(更早版本未做兼容性验证)对接 MariaDB Galera 集群执行迁移时,默认复用MySQL生态的锁逻辑,通过
MySQLConnection或MySQLNamedLockTemplate实现多节点并行迁移的锁协调,上述两个组件的分布式锁能力完全依赖MySQL的get_lock()函数实现。 - 根据MariaDB官方文档的明确说明,Galera集群的同步复制机制不支持包括
GET_LOCK()在内的会话级显式锁能力,锁状态无法在集群节点间同步,直接导致Flyway原生的多节点协调逻辑在该场景下完全失效。
实际故障表现
- 实测验证中,即使开启grouped配置模式,在双节点Galera集群上触发并行迁移时,仍会高频出现两个节点同时执行同一段迁移逻辑引发的表冲突、重复执行等错误,该兼容问题最早在2018年就有公开的问题上报记录。
当前进展与应对方案
该问题当前的处理进展明确如下:
- Flyway官方截至目前未针对Galera集群的锁特性做专项适配,公开的版本迭代路线图中也未提及将原生支持Galera集群场景下的并行迁移锁协调。
- 目前没有成熟的外部开源项目可直接实现该场景下的兼容能力,替换锁逻辑的二次开发成本较高。
- 生产环境通用临时规避方案为:集群部署场景下指定单节点单独执行Flyway迁移流程,待所有迁移脚本执行完成后再启动其余应用节点,从触发流程层面规避多节点同时执行迁移的竞态问题。
内容的提问来源于stack exchange,提问作者André Risnes
相关产品推荐
相关产品推荐

