允许 DB 迁移回溯到 Icehouse

https://blueprints.launchpad.net/nova/+spec/backportable-db-migrations-juno

正如我们在 Havana 和 Icehouse 开发周期开始时所做的那样,我们需要为 Juno 中的第一个 DB 变更预留一系列 DB 迁移。这将允许使用一系列迁移来回溯到 Icehouse(如果需要)。

问题描述

通常,由于迁移的线性版本特性,无法回溯需要数据库迁移的变更。对于过去两个版本(Havana 和 Icehouse),我们预留了一组空迁移作为占位符,以便在需要时进行迁移回溯。

提议的变更

建议的变更是为 Icehouse 回溯预留 10 个迁移。这些迁移将是无操作的,只会导致模式版本递增。

备选方案

在考虑允许数据库迁移的方式时,替代方案通常涉及对我们管理迁移方式进行重大更改的讨论。例如,它可能需要迁移到新的框架。该提案适用于我们当前对 sqlalchemy-migrate 的使用。这将是我们使用这种方法的第三个版本,因此目前已经相当了解。

数据模型影响

作为这项工作的一部分,没有对数据模型进行任何更改。它只是赋予我们回溯数据模型变更到 Icehouse 的能力。

REST API 影响

安全影响

通知影响

其他最终用户影响

性能影响

这些迁移的成本很低,可以在不关闭 Nova 服务的情况下对数据库运行。

其他部署者影响

这些变更需要进行数据库迁移。但是,可以在不造成 Nova 服务停机的情况下完成它们。

开发人员影响

这必须是合并到 Juno 中的第一组迁移,否则将无法工作。

开发人员在编写可能被回溯的迁移时也必须非常小心。它们必须是幂等的。例如,如果迁移 115 被回溯到先前版本中的 107,那么在升级后再次运行迁移时,已经执行过回溯迁移的人员不应遇到任何问题。

实现

负责人

主要负责人

russellb

工作项

  • 创建 10 个占位符迁移。

依赖项

测试

现有的单元测试将涵盖这一点。基于 devstack 的 CI 系统以及“turbo-hipster”DB CI 系统都将提供这些占位符迁移的功能测试覆盖。

文档影响

无。

参考资料