首页 > 解决方案 > 如果我并行运行 django 迁移多次会发生什么?

问题描述

因此,我经常处理在负载均衡器后面有多个 dockerized django 应用程序服务器的项目,而且我经常需要部署到它们。我经常使用 Watchtower 进行基于拉取的部署。我构建了一个新镜像,将其推送到 dockerhub,watchtower 负责将这些镜像拉到服务器并替换正在运行的容器。这一切都很好。

我想开始自动化运行 django 迁移。我可以做到这一点的一种方法是简单地将运行添加manage.py migrate到入口点,并让每个容器在容器上线时自动尝试迁移。这会起作用,并且可以避免需要想出一种方法来进行锁定或领导者选举的麻烦;但是如果没有某种方法来防止多次运行,则存在多个迁移实例可能同时运行的风险。如果我走这条路,是否有可能同时运行多个迁移可能会导致问题?我是否应该寻找其他方式来启动这些迁移一次且仅一次?

标签: django

解决方案


同时并行运行迁移是不安全的。我已经通过在数据迁移上并行运行 migrate 命令对其进行了测试,Django 将运行两次迁移。它将向 django_migrations 表添加 2 行。查看这篇讨论该问题的 Google Groups 帖子这篇关于在容器状态上运行迁移的文章


推荐阅读