【问题标题】:Doctrine Migrations Bundle - how to run migration on multiple servers at the same time?Doctrine Migrations Bundle - 如何同时在多台服务器上运行迁移?
【发布时间】:2017-06-12 16:25:21
【问题描述】:

目前可能无法做到,但是如果有人遇到同样的问题,您是如何处理的?

是否可以同时在多台服务器上运行迁移而无需多次运行相同的脚本?

我遇到的问题是我们正在使用多个服务器,并且每次我们部署新版本的 APP 时它们都会运行迁移。这会导致相同的迁移脚本运行多次(取决于运行它的服务器数量)。

有没有办法检查迁移是否正在进行,如果是,跳过它或者这是我需要手动实现的东西?

非常感谢。

【问题讨论】:

    标签: symfony doctrine-orm doctrine doctrine-migrations


    【解决方案1】:

    这听起来像是您需要手动实现的东西。

    我建议在您将 SSH 应用程序部署到您的一台服务器并执行迁移时执行一次脚本。

    【讨论】:

      【解决方案2】:

      我建议使用Ansible 编写一个剧本来处理这个问题,同时调用所有相关的Hosts(库存)。

      最终结果将类似于(例如):

      如果您只想在单个(或...的子集列表)上运行:

      ansible-playbook --limit YOUR_INVENTORY_NAME run-migrations.yml
      

      或者,对于所有定义的:

      ansible-playbook run-migrations.yml
      

      你在 Ansible 中的实际剧本看起来像这样:

      - name: Run Migrations
        command: php bin/console doctrine:migrations:migrate
        args:
          chdir: /path/to/symfony
      

      【讨论】:

        猜你喜欢
        • 2015-08-19
        • 1970-01-01
        • 1970-01-01
        • 2023-02-06
        • 2012-12-16
        • 1970-01-01
        • 2014-12-27
        • 2016-04-14
        • 1970-01-01
        相关资源
        最近更新 更多