【问题标题】:continuous deployment and database [closed]持续部署和数据库[关闭]
【发布时间】:2019-02-01 14:09:10
【问题描述】:

在持续部署中,您有时会逐渐升级您的服务器,例如,20 人中有 2 人会使用新代码,直到我们确信一切正常。如果新代码需要数据库模式迁移会发生什么,例如现场电话现在是桌面电话。除非我升级所有 20 台服务器,否则会有问题。

【问题讨论】:

    标签: database agile continuous-deployment netflix continuous-delivery


    【解决方案1】:

    查看扩展/收缩数据库模式: http://exortech.com/blog/2009/02/01/weekly-release-blog-11-zero-downtime-database-deployment/

    您临时复制数据,使事物同时位于旧位置和新位置。旧查询必须有效,新查询也必须有效。您可以在测试环境中进行自动化测试来验证这一点。一旦所有服务器都移至较新版本,您就可以执行“合同”删除“旧”样式数据。

    【讨论】:

    • 谁复制了数据?旧的应用服务器对新表一无所知
    • 您的更新脚本。因此,数据既保留在旧应用程序服务器所期望的位置,又移动到新应用程序服务器所期望的新位置。这不是一种简单的方法,但可以在这种情况下提供帮助。
    • 更新脚本运行一次。之后,“旧”应用服务器会将新数据存储在其旧位置。不确定谁会复制数据。
    【解决方案2】:

    我们在我们的应用程序中一直这样做。我们所做的是让应用程序检查它正在使用的数据库的哪个“版本”,然后制作有条件的方法。基本上,该应用程序在新旧场景下都能正常工作。

    【讨论】:

    • 但是“旧”和“新”服务器只有一个数据库。因此新服务器可以在 Phones 表中插入新的“电话”值,而旧服务器(对更改一无所知)将在常规电话字段中查找它而找不到它。
    猜你喜欢
    • 2019-01-25
    • 1970-01-01
    • 2013-04-17
    • 1970-01-01
    • 2014-05-07
    • 1970-01-01
    • 2013-04-20
    • 2015-08-24
    • 1970-01-01
    相关资源
    最近更新 更多