具有多个VM的自​​动Ecto迁移?

时间:2018-01-15 17:14:38

标签: elixir ecto

我在需要访问同一Postgres数据库的不同Erlang VM实例中有N个工作进程(不是Erlang PID),其中N> = 2.当这些工作程序升级时,我希望能够自动运行Ecto迁移因此,当我推出这些工作人员的升级时,我不必经历所有工人的舞蹈,停止所有工人,进行迁移,再次启动所有工人。如果可能的话。然而,在考虑它时,我能想出的唯一解决方案是:

  • 让另一名工人专门进行迁移。这是我可能最终会使用的路径。
  • 使用[在此处插入NoSQL db]而不是Postgres。我宁愿不这样做。
  • 提出一种策略,在可以运行迁移的工作节点中选出一位领导者。这感觉是错误的事情。
  • 祈祷并行运行N次迁移并不会使数据库陷入困境。这是愚蠢的,我不会这样做。

但所有这些解决方案都像是在解决这个问题。要么我在这里失踪,要么我只是错误地考虑迁移,我不确定哪一个是真的。

1 个答案:

答案 0 :(得分:1)

  

让另一名工人专门进行迁移。这是我可能最终会使用的路径。

这似乎是现在最好的方法。虽然注意到当前正在开发中的Ecto 3.0在运行迁移时会使用锁,所以这个问题将会为你解决。