DB2 备份与恢复¶
目前,Trove 中的 DB2 Express C 数据存储缺乏备份和恢复功能。此蓝图旨在为 Trove 中的 DB2 添加备份和恢复功能。
Launchpad 蓝图:https://blueprints.launchpad.net/trove/+spec/db2-backup-restore
问题描述¶
目前,无法使用 Trove 创建 DB2 数据库的备份,也无法从备份中恢复。由于此功能对于数据模型和典型用例至关重要,因此 Trove 添加此功能势在必行。
提议的变更¶
DB2 将实现最简单的数据库备份和恢复形式,在默认位置创建备份镜像。由于 DB2 数据库默认处于循环日志模式,因此无法进行在线备份。因此,此功能将实现完整的离线备份功能 1。目前,暂不支持 db2 的增量备份。将使用 LIST UTILITIES 命令来监控该过程。2
备份¶
DB2 的备份过程如下。3
确定备份写入的目录。对于 DB2 数据库,默认目录位置可以在配置文件中找到(/etc/db2/db2 .conf)
检查实例上是否有足够的磁盘空间用于备份。
通过 CLI 启动 DB2 备份。BACKUP DATABASE 命令将用于此目的。
备份完成后,在卷存储中压缩/加密备份。备份文件的名称将采用以下格式 - DB_alias.Type.Inst_name.NODEnnnn.CATNnnnn.timestamp.Seq_num
将使用 db2ckbkp 命令显示有关现有备份镜像的信息。这将验证新创建的数据库备份。
然后可以将压缩/加密的文件存储在 Swift 的 database_backups 容器中。
一旦存储在 Swift 中,就可以删除 VM 上的旧备份文件。
由于 db2 仅支持流式传输到命名管道,因此无法一步完成备份,首先需要将备份文件存储在 VM 上。4
恢复¶
为了从备份恢复 DB2 数据库,将按照以下步骤进行。5
确定备份文件存储的目录
确保没有其他应用程序正在针对数据库运行
将备份从存储中检索到正确的位置
使用 RESTORE DATABASE 命令恢复数据库
数据库¶
无
公共 API¶
DB2 备份和恢复功能的实现将允许用户对 DB2 数据存储使用几个 CLI 命令。
公共 API 安全¶
无
Python API¶
无
CLI (python-troveclient)¶
以下命令将适用于 DB2
backup-create
backup-delete
backup-list
backup-list-instance
backup-show
create –backup
内部 API¶
无
Guest Agent¶
DB2 客体代理将被修改以支持备份和恢复。特别是,以下文件将添加组件-
guestagent/strategies/backup/experimental/db2_impl.py
guestagent/strategies/restore/experimental/db2_impl.py
将更新以下现有文件
guestagent/datastore/experimental/db2/manager.py
它将与 API 和任务管理器向后兼容。
备选方案¶
可以实现的另一种类型的备份是联机备份,这样在进行备份之前无需关闭数据库。但是,要实现联机备份,数据库必须具有归档日志选项。目前,无法在 Trove 中为 DB2 数据库指定日志选项。一旦用户可以配置其他日志选项(如归档日志),就可以实现联机备份。
Dashboard 影响 (UX)¶
待定 (在批准后添加的部分)
升级影响¶
无
依赖项¶
无
测试¶
将根据需要为备份和恢复功能添加单元测试。此外,还将向现有的集成测试框架添加 db2 助手。
文档影响¶
应更新 DB2 Trove 文档,以指示支持备份和恢复。
参考资料¶
附录¶
无