我只是想知道Flyway如何处理这样一个事实:几个dynos可以尝试在Heroku等集群环境中多次运行数据库迁移,从而导致冲突?
答案 0 :(得分:1)
似乎Flyway使用锁定来处理这个问题。
引用文档:
多个节点可以并行迁移吗?是! Flyway使用锁定 数据库的技术,以协调多个节点。这确保了 即使你的应用程序的多个实例都试图这样做 同时迁移数据库,它仍然有效。簇 完全支持配置。
答案 1 :(得分:1)
This question explains a bit more how the locking behaviour works. It appears to acquire a lock on the Flyway schema table: select * from dbschema.schema_version for update
which might cause problems for longer running migrations as the innodb_lock_wait_timeout
setting might cause a timeout, at least in the case of MySQL.