允许 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 系统都将提供这些占位符迁移的功能测试覆盖。
文档影响¶
无。