DB 迁移工具

https://blueprints.launchpad.net/tacker/+spec/db-migration-tool

本文档描述了一种从 v1 API 迁移到 v2 API 的工具。

问题描述

Tacker 支持多版本 API:基于 SOL 003 v2.6.1 [1] 的 v1 API 和基于 v3.3.1 [2] 的 v2 API。由于 v2 API 对 v1 API 没有向后兼容性,因此想要从 v1 API 迁移到 v2 API 的 v1 API 用户必须先终止他们的 VNF,然后使用 v2 API 重新实例化它们。然而,这将导致服务中断,因此不切实际。此外,有些 VNFs 运行超过 5 年,这导致 Tacker 无法弃用旧 API 版本超过 5 年。这可能成为 Tacker 在计划实施新的 ETSI SOL 版本(例如 Rel. 4)时的未来更新路线图的障碍。这是因为,如果没有弃用旧 API,支持的版本越多,维护成本就越高。因此,需要一种在不导致 VNF 服务中断的情况下从 v1 API 迁移到 v2 API 的方法。本文档提出了一种用于 API 版本更新的 DB 迁移工具。

提议的变更

我们将通过向 tacker-db-manage 命令添加 DB 迁移功能来实现 DB 迁移工具。详细信息如下所述。

1) 迁移的目标表:

要迁移的目标表

  • VnfInstanceV2

  • VnfLcmOpOccV2

要迁移的源表

  • vnf

  • vnf_attribute

  • vnf_instances

  • vnf_instantiated_info

  • vnf_lcm_op_occs

2) 目标 VNFs:

在执行命令时,可以选择以下其中之一。

  • 由 VNFID 指定的 VNF

  • 所有 VNFs,其在 vnf_instances 表中的记录的“deleted”字段不为 1。

3) 工具执行方法:

DB 迁移通过以下命令执行。

$ tacker-db-manage migrate-to-v2 { --all | [ --mark-delete --api-ver { v1 | v2 } ] --vnf-id <vnf-id> } [--keep-orig]

选项定义如下

  • --all:迁移 vnf_instances 上“deleted”字段不为 1 的所有 VNFs

  • --vnf-id <vnf-id>:将迁移特定的 VNF

  • --keep-orig:保留 v1 记录而不擦除它们(默认情况下擦除它们)

--keep-orig 选项可以指定以保留迁移前的记录,相反,可以使用 --mark-delete --api-ver { v1 | v2 } --vnf-id <vnf-id> 选项来完成或回滚迁移

  • --mark-delete --api-ver v1 --vnf-id <vnf-id>:完成迁移并擦除迁移前的记录。它将 v1 记录的“deleted”字段更新为 1,并完成 DB 迁移

  • --mark-delete --api-ver v2 --vnf-id <vnf-id>:回滚迁移并擦除迁移后的记录。它将 v2 记录的“deleted”字段更新为 1,并回滚 DB 迁移

然后可以通过执行带有 purge_deleted 子命令的 tacker-db-manage 命令来完全删除记录。

4) 工具执行顺序:

当命令是

$ tacker-db-manage migrate-to-v2 --all [ --keep-orig ]
../../_images/0148.png

当命令是

$ tacker-db-manage migrate-to-v2 --vnf-id <vnf-id> [ --keep-orig ]
../../_images/0231.png

当命令是

$ tacker-db-manage migrate-to-v2 --mark-delete --api-ver v1 --vnf-id <vnf-id>
../../_images/0319.png

当命令是

$ tacker-db-manage migrate-to-v2 --mark-delete --api-ver v2 --vnf-id <vnf-id>
../../_images/0414.png

数据模型影响

REST API 影响

安全影响

通知影响

其他最终用户影响

性能影响

其他部署者影响

开发人员影响

实现

负责人

主要负责人

Masaki Oyama <ma-ooyama@kddi.com>

其他贡献者

Kinjou Yukihiro <yu-kinjou@kddi.com>

Xu Hongjin <ho-xu@kddi.com>

工作项

  • 将迁移功能实现到 tacker-db-manage 命令

  • 添加单元测试

  • 添加功能测试

  • 添加用户文档

依赖项

测试

将添加单元测试和功能测试。

文档影响

将添加有关工具用法的文档。

参考资料