持续交付中的生产数据迁移模式

2024-04-01

持续交付中生产中的关系数据库(和模式)迁移模式是什么?

在许多传统开发中,DBA 从当前发布周期中创建的许多较小脚本中安排一个大型迁移脚本。但在 CD 中,开发人员可能希望立即将更改推送到生产中,而不是等待与其他脚本一起编译它们。

我知道 Rails-migration,但对我来说,使用原始 sql 脚本看起来更合理。

我还见过类似的工具flyway http://flywaydb.org/管理迁移,但我还没有读到很多人在生产中使用它们。这就是为什么我想知道这里的常见做法是什么。


Flyway 非常适合持续交付/部署。许多客户在所有环境中使用它,包括生产环境。

跨环境级联数据库迁移最重要的一点是有一个 3 步骤过程:

Step 1

旧的应用程序代码与旧的数据库一起工作。

Step 2

部署新的应用程序代码,并在启动时迁移数据库。此迁移必须向后兼容,以便旧的应用程序代码仍然适用于新的数据库。这是至关重要的,因为:

  • 然后,您可以进行滚动升级,一次升级一个节点,直到所有节点都具有新的应用程序代码
  • 如果新应用程序代码损坏,立即回滚到旧应用程序代码

此步骤可能涉及兼容性视图和触发器来完成这项工作。

Step 3

更改被证明有效后,应用程序代码的下一版本将获得 与必要的数据库迁移一起部署,以丢弃任何剩余的过时(来自步骤 1)和兼容性(来自步骤 2)结构。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

持续交付中的生产数据迁移模式 的相关文章

随机推荐

  • 如何根据多个字段删除SQL表中的重复项

    我有一张游戏桌 描述如下 Field Type Null Key Default Extra id int 11 NO PRI NULL auto increment date date NO NULL
  • Rails ActionMailer 忽略environment.rb 中的设置

    我把我的 ActionMailer 配置放在我的config environment rb像这样的文件 MyApp Application initialize MyApp Application configure do config a
  • 黄瓜无法加载 2.1/gherkin_lexer_en

    每当我运行黄瓜功能时 我都会收到以下错误 但是 该脚本工作正常 但每次执行功能文件时都会出现此警告消息 这里有什么问题吗 C Automation PickLists Activities 2 RemoveActivity gt cucum
  • 函数中的变量

    我看到了下面的代码 第一次调用 next num 回报1 第二个返回2 define next num let num 0 lambda set num num 1 num next num 1 next num 2 我无法理解的是 num
  • JavaFX 中的字段验证[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我使用 fxml 创建了一份注册表单 现在我想实现字段验证功能 我正在尝试实现 TextField 的验证 但仍然没有得到它 不幸的是
  • CSS(位置:绝对+左:50%=最大宽度:50%)?

    我正在开发一个网站 但遇到了临时问题 我有一个div with CSS像这样 box position absolute width auto max width 75 left 50 transform translate 50 0 ms
  • Rails:如何添加目标空白的 link_to

    我是 Rails 3 的新手 我想将 target gt blank 添加到下面的 link to helper link to GOOGLE http www google com class btn btn large btn prim
  • 每次都会出现权限屏幕

    我想让我的 WinForms 应用程序使用 Microsoft 帐户的单点登录 SSO 功能 我创建了一个LiveApp https account live com developers applications我可以使用 LiveSDK
  • 我们如何在 Java 中进行异步 REST api 调用?

    我正在使用 Spring RestTemplate 并且想要调用另一个不返回任何响应正文的服务 所以 我不想等待回复 因此 只需即发即忘 然后继续剩余的代码 我正在考虑创建一个新线程来执行此操作 但不确定什么是正确的方法 如果您使用Java
  • 拉普拉斯滤波器是如何计算的?

    我不太明白他们是如何得出导数方程的 有人可以详细解释一下 甚至可以提供一个有足够数学解释的链接吗 拉普拉斯滤波器看起来像 拉普拉斯先生提出了这个方程 这就是拉普拉斯算子的简单定义 二阶导数之和 您也可以将其视为海森矩阵 https en w
  • VS 2015 Azure 发布向导不处理 ARM 创建的资源吗?

    我可以从发布向导中看到 ARM 云服务 但在使用管理员帐户时看不到 ARM 存储 我可以使用管理员帐户发布到 ARM 云服务 但必须指定 ASM 存储帐户 当使用 RBAC 访问权限仅限于包含上述云服务的资源组的帐户时 发布向导会提示云服务
  • 当从另一个函数调用 mongodb 时如何模拟 mongodb?

    我在嘲笑 mongodb 时需要帮助 我在用蒙戈莫克 https github com mongomock mongomock模拟 mongodb 我的项目结构是 my mongo py 代码 py my test py my mongo
  • MVC 控制器操作 - 处理 POST 和 GET,无需重复代码

    我一直在开发这个 MVC 3 Razor 应用程序 并且通常将视图模型用于我的视图 我的相当多的视图模型包含的信息不仅仅是我在表单中与之交互的特定实体 因此 我的 GET 操作处理程序将初始化视图模型并为每个属性提供预期值等 在我的 POS
  • R、Python 或 Octave:具有置信区间的经验分位数(逆 cdf)?

    我正在寻找一个返回样本分位数的内置函数和估计的置信区间在 MATLAB 以外的地方 MATLAB 的ecdf做这个 我猜 R 有这个内置功能 只是我还没有找到它 如果您有任何独立代码可以执行此操作 您也可以在此处指出它 尽管我希望找到作为更
  • 如何将多个 CSV 文件添加到 Kedro 的目录中?

    我有数百个 CSV 文件想要以类似方式处理 为了简单起见 我们可以假设它们都在 data 01 raw like data 01 raw 1 csv data 02 raw 2 csv 等 我宁愿不给每个文件一个不同的名称 并在构建管道时单
  • Wildfly 10.1 部署后停止部署

    我正在部署一个具有多个独立的 Web 应用程序war and ear 将文件发送到 Wildfly 10 1 服务器 我所做的是这样的 我清理deployments data content and tmp文件夹 然后复制所有必需的war
  • JQUERY AJAX - 如果成功则更改 $(this) 的类

    我有一个div 在该 div 内我有多个元素 有些元素具有 myClass 类 我也有一个按钮 单击时 foreach 循环会针对 div 中具有类 myClass 的每个元素运行 为每个元素发送一个ajaxCall 这些元素的文本颜色默认
  • 模型中的 Ruby on Rails 增量计数器

    我正在尝试从另一个模型增加我的用户表中的计数器 class Count lt ActiveRecord Base belongs to user after create update count def update count user
  • SonarQube 规则在启动时被禁用

    我最初在我的开发机器上设置了一个 Sonar 服务器 但后来在官方 Linux 机器上创建了一个服务器 目的是停止使用开发机器 在此过渡期间 我可能让两台服务器同时运行 指向同一个声纳数据库 现在我看到一些奇怪的行为 本地服务器运行良好 我
  • 持续交付中的生产数据迁移模式

    持续交付中生产中的关系数据库 和模式 迁移模式是什么 在许多传统开发中 DBA 从当前发布周期中创建的许多较小脚本中安排一个大型迁移脚本 但在 CD 中 开发人员可能希望立即将更改推送到生产中 而不是等待与其他脚本一起编译它们 我知道 Ra