移除数据库降级

https://blueprints.launchpad.net/glance/+spec/remove-db-downgrade

SQL 迁移是 OpenStack 项目确保给定 schema 在部署之间保持一致性的常用方法。这些迁移通常包括底层数据的更新以及 schema 的修改。在任何环境中执行向下迁移都是不可取的。由于 bp[1] 在 Kilo 之后已通过 openstack-specs 批准,并且许多项目(例如 Nova)已经实施了它,Glance 也应该这样做。

本规范提出了这项工作,Glance 团队希望给用户一个周期来废弃其环境中的降级功能。因此,我们将在 Newton 中移除它们。在 Mitaka 中,我们将为数据库降级添加弃用警告。

问题描述

OpenStack 中的许多迁移包括数据操作,以确保数据符合新的 schema;通常,这些数据迁移很难或不可能在没有显著开销的情况下反转。对包含此类数据操作的 schema 进行降级可能导致不一致或损坏的状态。潜在的错误状态、相对较少的测试以及缺乏支持需求使得 schema 降级成为一项不安全的行动。

提议的变更

1. 在 Mitaka 中添加弃用警告[3]。 2. 在 Newton 中移除降级脚本。

备选方案

降级路径可以继续支持。

数据模型影响

REST API 影响

安全影响

通知影响

其他最终用户影响

用户在尝试任何升级之前[2],应备份其生产数据的完整数据库。

性能影响

其他部署者影响

在 Newton 之后,Glance 将无法再降级,并且在此之前仍然可以。

开发人员影响

由于降级将在未来移除,因此不再需要编写新的降级脚本。

实现

负责人

wangxiyuan(wxy)

评审人员

Flavio Percoco(flaper87) Nikhil Komawar(nikhil)

工作项

  • 添加弃用警告给用户。

  • 移除降级的 CLI 脚本。

  • 移除降级迁移。

  • 记录变更。

  • 添加测试代码以检查是否不再存在降级,并避免部署者添加新的降级脚本。

依赖项

测试

编写一个测试来确认 Glance 中不再存在降级。

文档影响

为了表明降级现在已被弃用,并且在 Newton 之后将不再支持。并说明如何在之后回滚数据库。

参考资料

[1]:https://specs.openstack.org/openstack/openstack-specs/specs/no-downward-sql-migration.html [2]:https://docs.openstack.org/openstack-ops/content/ops_upgrades-roll-back.html [3]:https://bugs.launchpad.net/glance/+bug/1501233