部署到多个实例时,如何仅迁移一次数据库模式?

时间:2016-04-26 05:39:39

标签: mysql deployment database-schema database-migration continuous-deployment

我有一个MySQL数据库支持的Web应用程序,我将其部署到多个云实例。我正在使用数据库迁移工具,这意味着我的架构更改作为部署的一部分运行(例如,通过配置管理工具)。但是,当我启动我的Web应用程序的多个实例时,所有这些实例都会尝试将架构更改应用于MySQL数据库,并且我基本上可以最终处于我最终DB /错误的未知状态。在此类设置中,建议的数据库架构更改部署方法是什么?

我看到的唯一可能的解决方案是简单地与应用程序部署过程分开运行架构更改。还有其他想法吗?

1 个答案:

答案 0 :(得分:0)

以下是一些解决方案:

  • 将迁移操作分离为可以独立调用的内容,并在生产和类似生产的部署中的一个位置显式调用它。

  • 将一个云实例指定为迁移运行器。以某种方式标记它,以便您的部署过程可以将其与其他实例区分开来:给它一个特殊的主机名; on EC2, set a value in user data; if using Chef, give the instance a Chef role;等待部署检查是否正在部署到迁移运行器,并且仅在迁移时进行迁移。

  • 编写在数据库中获取锁定的代码(或者可能在生产环境中的某些其他单一资源中),检查数据库模式版本,如果它处于预期版本则退出,如果不是,则迁移在预期的版本。

哪种方法最好取决于您的部署环境和工具。在任何情况下,您都希望继续自动迁移(例如,作为服务器启动的一部分),以方便非生产环境。

相关问题