2

我打算通过 grails 数据库迁移插件使用 LiquiBase。当我使用新版本的数据库架构启动由两台服务器组成的集群时,两台服务器都尝试启动架构升级,会发生什么?

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

4

1 回答 1

4

除了您的数据库表之外,Liquibase 还创建一个databasechangelog和一个databasechangeloglock表来管理其状态。databasechangelog包含有关您已经运行的迁移的信息,并且databasechangeloglock可以防止同时尝试运行迁移。

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

于 2013-09-11T22:39:55.427 回答