我计划通过grails数据库迁移插件使用LiquiBase。当我用一个新版本的DB模式启动一个由两个服务器组成的集群,并且两个服务器都试图启动模式升级时,会发生什么呢?
grails数据库迁移插件或LiquiBase本身是否对并发升级尝试有保护?
发布于 2013-09-11 22:39:55
除了数据库表之外,Liquibase还创建一个databasechangelog和一个databasechangeloglock表来管理其状态。databasechangelog包含关于您已经运行的迁移的信息,databasechangeloglock在那里是为了防止运行迁移的并发尝试。
当第一个集群实例启动时,它将通过在databasechangeloglock表中插入一行来获得一个锁,并运行任何缺少的迁移。当第二个程序启动时,它将被阻塞,直到锁被释放,然后它将获得一个锁,并且由于不会有任何未运行的迁移,所以它不会做任何事情。
https://stackoverflow.com/questions/18731207
复制相似问题