内容


使用 IBM DB2 Recovery Expert 工具高效完成数据库恢复之对象恢复篇

Comments
免费下载:IBM® DB2 Recovery Expert for Linux, Unix and Windows 试用版
下载更多的 IBM 软件试用版,并加入 IBM 软件下载与技术交流群组,参与在线交流。

对象恢复简介(Recovery)

数据库对象如表,存储过程等有时候经常会由于一些误操作而丢失。要恢复这些数据库对象,最简单的策略就是恢复整个数据库或者某些表空间。这样的操作虽然简单,但是这种粗粒度的数据库恢复会花费较长的时间并且会对生产系统的系统资源产生较大的影响。DB2 Recovery Expert 提供的细粒度数据库对象恢复功能可以帮助数据库管理人员在当前既有的备份恢复流程上,提高数据库恢复的效率,从而保证数据库的高可用性。DB2 Recovery Expert 提供了对于一个或者多个数据库对象的基于某个时间点或者直到日志末尾的恢复。

目前它支持的恢复对象包括以下:

  • 缓冲区
  • 事件监控
  • 方法
  • 模式
  • 分区组
  • 存储过程
  • 表空间
  • 顺序
  • 用户类型
  • 变量

本文将以一个单表恢复的示例来演示如何使用 DB2 Recovery Expert 的对象恢复功能高效的实现细粒度数据库对象的恢复。如果用户首次接触 DB2 Recovery Expert,请先阅读“使用 IBM DB2 Recovery Expert 工具高效完成数据库恢复之日志分析篇”,该篇文章介绍了 DB2 Recovery Expert 的基本知识如 SLR, Datastores 以及它的日志分析功能等。Recovery Expert 的对象恢复功能也依赖于 SLR 分析数据库的变化,所以用户需要先了解 Recovery Expert 的基础知识。

单表恢复

本小节将以 DB2 自带的 Sample 数据库为例详细介绍如何使用 DB2 Recovery Expert 的对象恢复功能恢复被用户误删除的表。在进行该示例之前,请确保已经根据“使用 IBM DB2 Recovery Expert 工具高效完成数据库恢复之日志分析篇”文章所描述的为 sample 数据库实例创建了 Datastore 和 SLR。

模拟用户删除操作

打开 DB2 的命令行操作窗口,执行命令:

 db2 connect to sample 
 db2 select * from ACT

记录 SQL 语句返回的结果。然后执行 db2 drop db ACT,该命令模拟用户删除表的操作,记录执行该操作的时间。

恢复过程

登陆 DB2 Recovery Expert Web Console,在图 1 所示的 Task Manager 下拉菜单中点击“Recovery”,

图 1. Task Manager
图 1. Task Manager
图 1. Task Manager

打开 Recovery 视图,如图 2 所示:

图 2. Recovery 主页面
图 2. Recovery 主页面
图 2. Recovery 主页面

Overview

图 2 所示的 Recovery 主页面描述了完成一个 Recovery 过程所需要完成的步骤以及每步的简单介绍。一个典型的 Recovery 流程包含以下几步:

  • 选择一个需要进行对象恢复的数据库
  • 选择需要恢复的数据库对象
  • 选择需要恢复的数据库对象
  • 指定另外的备份文件和日志文件的路径
  • 查看可用的恢复计划并选择
  • 查看恢复的过程状态和结果

Recovery 视图提供了相应的页面完成上面的步骤。

Location

用户在 Location 页面可以选择需要进行对象恢复的数据库,如图 3 所示。该页面的 List of databases 部分列出了所有可以选择的数据库,右侧显示了所选数据库的基本信息。选择 sample 数据库并点击“Next”按钮或者直接点击左侧版面的“Objects”选项进入 Objects 页面。

图 3. Location 页面
图 3. Location 页面
图 3. Location 页面

Objects

用户可以在 Objects 页面选择需要进行对象恢复的数据库对象如表,表空间,SQL 存储过程,方法,事件监控器等等。如图 4 所示,Available objects 部分列出的可供用户选择的所有数据库对象,用户可以通过设置过滤条件查找符合条件的对象,并通过拖拽和点击“Include”按钮选择对象到右侧的 Selected objects 面板。用户可以选择一个或者多个对象进行恢复。如果用户选择的是表和表空间,那么相应的表数据和表空间数据也会被恢复,对于其他的数据对象则只能恢复定义而不包含数据。选择好对象后就可以进入如图 5 所示的 Point in time 页面。

图 4. Objects 页面
图 4. Objects 页面
图 4. Objects 页面

Point in Time

Point in Time 页面允许用户选择对象需要恢复到的时间。

  • 时间点:恢复对象到指定的时间点,当用户发现数据库的数据或者对象处于不一致的状态,并且知道某个一致的时间点时,用户可以选择该选项并指定确切的时间,用户也可以选择备份的时间作为恢复到的时间点。
  • 日志末尾:恢复对象要日志末尾,该选项只适用于已存在的表空间的恢复。

在该示例中,我们设置时间点为在模拟用户操作部分记录的删除表的时间之前的某个时间点,并进入 Options 页面。

图 5. Point in Time 页面
图 5. Point in Time 页面
图 5. Point in Time 页面

Options

用户可以在 Options 页面指定另外的备份文件和日志文件的路径,如果用户移动了数据库备份文件和日志文件的位置,必须在该页面指定新的备份文件和日志文件的路径。如果用户不希望恢复表或者表空间的数据,请选中“Recovery object definition only”选框。用户可以在设置完该步骤之后直接点击“Run”开始对象恢复过程,或者点击“Next”按钮进入 Dependencies 页面查看对象的依赖关系。如图 6 所示。

图 6. Options 页面
图 6. Options 页面
图 6. Options 页面

Dependencies

Dependencies 页面提供了两个重要的功能,一是检查 SLR 的状态,包括是否已安装,是否需要重新创建或者更新等。如果用户在 Point in Time 页面选择的恢复时间点晚于 SLR 的时间点,那么将会出现如图 7 所示的页面,提示需要更新 SLR,点击“Update SLR”进行更新,当出现图 8 所示的更新成功页面后点击“Continue”按钮。

图 7. SLR 状态
图 7. SLR 状态
图 7. SLR 状态
图 8. SLR 更新成功
图 8. SLR 更新成功
图 8. SLR 更新成功

如果这时候的 SLR 状态适合执行恢复过程,那么 Recovery Expert 会获取和所选恢复对象相关的对象以及依赖关系如索引,视图,完整性约束,主键,外键等信息并在该页面展示。如图 9 所示。点击“Next”按钮进入图 10 所示的 Recovery Plan 页面

图 9. 依赖关系和关联对象
图 9. 依赖关系和关联对象
图 9. 依赖关系和关联对象

Recovery Plan

图 10: Recovery Plan 页面
图 10. Recovery Plan 页面
图 10. Recovery Plan 页面

Recovery Plan 页面列出了本次对象恢复可用的恢复计划,用户可以选择合适的计划进行对象恢复。DB2 Recovery Expert 一共提供了 8 种恢复计划,不同的恢复场景可以会有一个或多个适合的恢复计划,用户可以根据需要选择最合适的恢复计划。

  • Translated table space restore from backup image and Redo SQL

    适用场景:恢复一个或多个表空间

    主要过程:

    1. 重新生成表空间的 DDL,并创建
    2. 调用 Restore API 和 Recovery Expert 的组件一起完成表空间数据恢复
    3. 执行前滚操作
    4. 调用日志分析功能生成 Redo SQL
  • Translated table space restore from backup image and Undo SQL

    适用场景:恢复一个或多个表空间

    主要执行过程:

    1. 重新生成表空间的 DDL,并创建表空间
    2. 调用 Restore API 和 Recovery Expert 的组件一起完成表空间数据恢复
    3. 执行前滚操作
    4. 调用日志分析功能生成 Undo SQL
  • Extract data from backup image and generate Redo SQL

    适用场景:恢复一个或多个表

    主要执行过程:

    1. 从备份文件中提取表数据,并表示为可 Load 的格式
    2. 调用日志分析功能生成 Redo SQL

    注意事项:

    在恢复过程中,如果因为主键或者外键约束导致恢复受阻,Recovery Expert 会先删除这些约束,等恢复过程完成后再重新创建这些约束。

  • Recreate object definitions from the SLR and generate Redo SQL

    适用场景:恢复表或者表空间

    主要执行过程:

    1. 从 SLR 中提取表和表空间的定义并重新创建
    2. 调用日志分析功能生成 Redo SQL
  • Extract data from backup image and generate Undo SQL

    适用场景:恢复一个或多个表

    主要执行过程:

    1. 从备份文件中提取表数据,并表示为可 Load 的格式
    2. 调用日志分析功能生成 Undo SQL
  • Generate Undo SQL from current state

    适用场景:恢复表或表空间,并且 SLR 的结束时间大于要恢复的表空间的 MRT 时间,并且表空间没有被删除

    主要执行过程:

    1. 调用日志分析功能生成 Undo SQL 并且执行这些语句

    注意事项:该恢复计划不适用于包含 LONG 或 LOB 数据的表或表空间

  • Restore table space using DB2 RESTORE and ROLLFORWARD

    适用场景:恢复一个或多个表空间,并且这些表空间没有被删除

    主要执行过程:

    1. 调用 Restore
    2. 执行前滚操作
  • Recreate object definitions from SLR (DDL only; no data will be restored)

    适用场景:恢复除表和表空间外的其他对象

    主要执行过程:

    1. 从 SLR 提取对象的定义并重新创建这些对象

    本示例恢复 sample 数据库的 ACT 表只提供一种恢复计划“Extract data from backup image and generate Redo SQL”, 如图 10 所示,Scenario steps 部分列出了该计划要执行的所有步骤,Selected step details 列出了所选步骤的详细信息,有些步骤提供一些可修改的配置参数,如第二步 Extract 提供的“Keep export file”参数选项可供用户修改(图 10 中高亮显示的部分)。Status messages 部分列出了生成恢复计划时产生的状态信息,其中包含了一些重要的信息可以帮助用户理解为什么不能使用其他的恢复计划,如图 11 所示的高亮信息表明因为无法从现在的数据库中获取 ACT 表的定义,所以无法使用“Generate Undo SQL from current state” 计划。用户可以通过点击右上角的选择框对信息进行过滤,拷贝和导出。

    图 11 生成恢复计划产生的状态信息
    图 11. 生成恢复计划产生的状态信息
    图 11. 生成恢复计划产生的状态信息

    了解了恢复计划后,用户就可以直接点击“Run”按钮开始执行恢复过程。恢复时间的长短和需要恢复的对象的内容,大小以及网络等因素有关,如果担心恢复时间超过系统会话的有效时间,可以先点击图 10 左下角的“Save”按钮保存此 Session 内容,下一小节会详解介绍 DB2 Recovery Expert 的 Session。执行恢复计划后页面会自动跳转到图 12 所示的 Status 页面。

Status

图 12. Status 页面
图 12. Status 页面
图 12. Status 页面

Status 页面列出了恢复计划执行过程的状态信息和执行结果信息,包括计划执行的起始,结束时间。Status 栏列出的执行过程状态信息支持过滤,拷贝和导出。图 12 显示恢复计划执行成功。

确认恢复结果

恢复成功后,打开 DB2 的命令行操作窗口,执行命令:

 db2 connect to sample 
 db2 select * from ACT

返回的结果如果和“模拟用户删除操作”部分记录的结果一致,说明恢复成功。

Session

DB2 Recovery Expert 的 Session 视图提供了查看,跟踪当前正在运行和已经完成的日志分析任务,对象恢复任务以及创建 SLR 的任务等。当一个任务运行时,DB2 Recovery Expert 会在 datastore repository 数据库中创建一个临时的 Session 保存该任务的状态,用户可以在提供“Save”按钮的页面(如图 10 所示)选择永久保存该 Session,如果用户没有保存,在任务结束的时候该临时 Session 就会被丢弃。每个 session 包含的信息包括 Session ID,所有者,数据库,任务,操作,开始时间,结束时间,是否保存,状态,进度信息等。点击图 1 下拉菜单中的“Sessions”可以打开如图 13 所示的 Session 管理页面。用户可以设置不同的条件搜索和查看 Session,并可以打开或者删除某个 Session。

图 13. Session 管理页面
图 13. Session 管理页面
图 13. Session 管理页面

Specification

DB2 Recovery Expert 的 Specification 视图管理用户在日志分析,对象恢复等任务中保存的用户的配置信息。和 Session 不同的是,Specification 只保存配置信息,而 Session 不仅保存配置信息,还保存任务运行的信息,如果用户是在一个任务开始时保存的 Session,那么任务随后运行的信息也都会更新在 Session 中。换句话说 Session 保存静态配置信息和动态任务运行信息,而 Specification 只保存静态配置信息。点击图 1 下拉菜单中的“Specifications”可以打开 Specifications 视图,如图 14 所示:

图 14. Specifications 视图
图 14. Specifications 视图
图 14. Specifications 视图

结束语

本文通过一个单表恢复示例详细介绍了 DB2 Recovery Expert 工具的对象恢复功能,并介绍了 Session 和 Specification 的保存和恢复功能。 Recovery Expert 提供的细粒度的数据库对象恢复功能节省了用户的系统恢复时间和用户的系统资源,极大的提高了用户系统的高可用性。


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Information Management
ArticleID=819047
ArticleTitle=使用 IBM DB2 Recovery Expert 工具高效完成数据库恢复之对象恢复篇
publish-date=05312012