当集群中的两个应用服务器启动 LiquiBase 更新(通过 Grails)时会发生什么?



我计划通过grails数据库迁移插件使用LiquiBase。当我使用新版本的数据库架构启动包含两台服务器的集群时,并且两台服务器都尝试启动架构升级,会发生什么情况?

grails 数据库迁移插件或 LiquiBase 本身是否具有针对并发升级尝试的保护?

除了数据库表之外,Liquibase 还会创建一个databasechangelog表和一个databasechangeloglock表来管理其状态。 databasechangelog包含有关已运行的迁移的信息,databasechangeloglock用于防止并发尝试运行迁移。

当第一个集群实例启动时,它将通过在databasechangeloglock表中插入一行来获取锁,并运行任何缺少的迁移。当第二个启动时,它将被阻止,直到锁被释放,然后它将获得一个锁,并且由于不会有任何未运行的迁移,它不会做任何事情。

相关内容

  • 没有找到相关文章

最新更新