django - 如果我并行运行 django 迁移多次会发生什么?
问题描述
因此,我经常处理在负载均衡器后面有多个 dockerized django 应用程序服务器的项目,而且我经常需要部署到它们。我经常使用 Watchtower 进行基于拉取的部署。我构建了一个新镜像,将其推送到 dockerhub,watchtower 负责将这些镜像拉到服务器并替换正在运行的容器。这一切都很好。
我想开始自动化运行 django 迁移。我可以做到这一点的一种方法是简单地将运行添加manage.py migrate
到入口点,并让每个容器在容器上线时自动尝试迁移。这会起作用,并且可以避免需要想出一种方法来进行锁定或领导者选举的麻烦;但是如果没有某种方法来防止多次运行,则存在多个迁移实例可能同时运行的风险。如果我走这条路,是否有可能同时运行多个迁移可能会导致问题?我是否应该寻找其他方式来启动这些迁移一次且仅一次?
解决方案
同时并行运行迁移是不安全的。我已经通过在数据迁移上并行运行 migrate 命令对其进行了测试,Django 将运行两次迁移。它将向 django_migrations 表添加 2 行。查看这篇讨论该问题的 Google Groups 帖子 和这篇关于在容器状态上运行迁移的文章。
推荐阅读
- css - 基于点击方法在行角材质表中动态应用 CSS 样式
- java - 无法从 android 模拟器连接本地主机
- laravel - 如果存在任何数据,如何使用导入 excel laravel 更新数据库中的数据
- okta-api - Loadrunner (VUGen) 是否支持 Okta 身份验证?
- ruby-on-rails - Rails Path Helper - 不同命名空间的相同路径
- php - 如何在php中选择sql查询的第n行
- javascript - 如何使用 ReactDOM.render 改变 DOM 元素?
- javascript - 单击一次后,我想禁用单击属性
- arrays - 实时视频到阵列
- asp.net-core - 如何在.net Core后面的代码中更改元素的样式