多个实例指向同一架构的 Flyway 迁移

问题描述 投票:0回答:3

我们还没有使用 Flyway,但我现在正在研究它,希望在未来几个月内实施它。

我们希望应用程序在启动时运行迁移检查。然而,我们有两个不同的应用程序在同一个数据库中协同工作,并且每个应用程序都有多个实例。我的希望是第一个通过大门的人会在历史表中添加一个Pending记录,而其他人看到这一点也不会尝试升级。

这是一个现实的期望吗?
我们可以依靠这个机制吗? 其他人如何处理这个问题? 谢谢。

java oracle flyway
3个回答
2
投票

这取决于数据库。那些支持通过 JDBC 驱动程序显式获取和释放表锁的人应该在迁移开始时锁定历史表,从而阻止任何其他 Flyway 实例继续进行,并在结束时释放锁。我们知道有几个数据库(CockroachDB 就是其中之一)不允许这样做,对于它们来说,数据库中的待处理行会被插入然后删除。


2
投票

根据 Flyway 的官方faq,它们完全支持集群(多节点应用程序实例)。

是的! Flyway 使用数据库的锁定技术来协调多个节点。这可以确保即使应用程序的多个实例同时尝试迁移数据库,它仍然可以工作。完全支持集群配置。


© www.soinside.com 2019 - 2024. All rights reserved.