内容


用 Data Studio Administrator 恢复数据库

IBM Data Studio Administrator 中的新功能支持时间点恢复

Comments

简介

几乎所有 DBA 都有过这样的经历:当意识到一些无法控制的状况已经毁坏或丢失了数据库中的数据时,一定会感到很沮丧。当务之急是从意外事故中恢复过来。一切可用于让恢复任务变得更简单的办法都有助于缩短停机时间。从长远来看,将恢复管理变成一种更自然的日常行为,这样可以减轻出现问题时的压力,并更快地进行恢复。

本文讲述一个名叫 Erik 的 DBA 的故事。 Erik 在 JK Enterprises Great Outdoors(一家虚构的公司)工作,他使用 IBM Data Studio Administrator 备份公司的关键销售数据库。在错误的应用程序逻辑意外地删除了多个表中的数据之后,Erik 开始挽救和恢复数据库。 他还可以将数据库前滚到应用程序破坏数据之前的一个时间点。

免费版的 Data Studio Administrator 提供了本文中描述的功能,可以通过下载 Data Studio Administrator 试用版并且禁用 Database Change Management 获得这些功能。 安装和购买 Database Change Management 特性可获得以下好处:它提供对扩展的变更的支持,包括数据保留和对依赖对象的管理,例如约束、视图、触发器和引用完整性。

下面概述了本文描述的备份和恢复步骤:

  1. 如果还没有建立连接,则建立与受影响的数据库的连接。
  2. 查看数据,看看表中有哪些行。
  3. 使用备份任务助手备份系统。
  4. 运行示例 delete 语句,模拟删除两个表中所有行的错误的应用程序逻辑。
  5. 使用恢复任务助手恢复数据库,并前滚到运行 delete 语句之前的时间点。
  6. 查看更新后的行数,验证执行恢复操作之后数据是否完整无缺。

先决条件

使用以下步骤安装和配置一个环境,以便遵循 Erik 的场景:

  1. 该场景要求安装 Data Studio Administrator Version 2 Release 1 和 Fix Pack 1。

    如果还没有安装 Data Studio Administrator Version 2 Release 1,那么请使用 参考资料 小节中的链接下载该产品的试用版。

    如果还没有将 Fix Pack 1 安装到 Data Studio Administrator Version 2 Release 1 系统上,请使用 参考资料 小节中的链接获得 Fix Pack 1 安装文件和说明。

  2. 另外还必须安装一个受支持的 DB2® 版本。如果还没有安装 DB2,请使用 参考资料 小节中的链接下载 DB2 Express-C,这是免费版的 DB2 Express Edition。
  3. 遵循以下步骤创建一个名为 GSDB 的示例数据库:
    1. 从本文的 下载 小节获得 GSDB_Database.zip 文件,并从中提取 GSDB_Database.sql 文件。
    2. 打开一个 DB2 Command Window。
    3. 导航到保存 GSDB_Database.sql 文件的位置。
    4. 输入以下命令:
      db2 -td~ -f GSDB_Database.sql
  4. 将默认的循环日志记录(circular logging)改为使用归档日志记录。要使用归档日志记录,必须使用 UPDATE DATABASE CONFIGURATION 命令将 LOGARCHMETH1 设置为 OFF 以外的一个值,如下所示:
    UPDATE DB CFG FOR GSDB USING logarchmeth1 "DISK:C:\GSDB_ARCHIVE" failarchpath \
    "C:\GSDB_failure" logprimary 2 logsecond 0 logfilsiz 1024;

    注意:在以上显示的命令中,第一行末尾的反斜杠字符只是用于表明同一行的延续。因此不要在命令中输入反斜杠。在 DB2 Command Window 中实际上只需输入一个连续的字符串作为命令。



    以上命令指定:

    • 使用归档日志记录。
    • 将归档日志保存到 GSDB_ARCHIVE 目录。
    • 如果归档日志记录失败,那么写到临时目录 GSDB_failure
    • 有两个主日志,没有辅助日志。
    • 主日志大小为 1024 个 4KB 的页面。

    在该场景的某一个步骤中,您在更改了日志记录选项后,对数据库执行完全离线备份。

本文接下来的小节描述 Erik 在一天中遇到的主要事件,并详细说明他采取的操作。细节采用逐步说明的形式,以便您可以遵循逐步说明,获得自己的实践经验。

连接到数据库

所有 Data Studio 产品都使用一个相同的 Data Source Explorer 连接到数据库。在本场景中,Erik 执行的第一个任务是建立到 GSDB 数据库的连接,如下所示:

  1. 在 Data Source Explorer 中,右键单击 Database Connections,并选择 New…,如图 1 所示。
    图 1. 从 Data Source Explorer 连接到数据库
    创建新的数据库连接的 Data Source Explorer 屏幕
    创建新的数据库连接的 Data Source Explorer 屏幕
  2. 输入所需的连接参数,并单击 Test Connection 按钮,验证连接,如图 2 所示。
    图 2. 验证连接
    使用 Connection Identification 屏幕输入连接参数并测试连接
    使用 Connection Identification 屏幕输入连接参数并测试连接
  3. 如果连接成功,单击 Next 按钮。
  4. 在 Filter 屏幕中做出选择,以包括 GOSALES 和 GOSALESCT 模式,并单击 Finish 按钮,如图 3 所示。
    图 3. 按模式过滤
    在 filter 屏幕中包括 GOSALES 和 GOSALESCT 模式
    在 filter 屏幕中包括 GOSALES 和 GOSALESCT 模式

查看表中的行数

连接到 GSDB 数据库后,Erik 想查看选中的表中的行数。

本场景使用行数作为表的当前状态的指示器。 在执行恢复操作后,可以使用这个数字来验证表是否回到相同的状态。

要查看所选择的表中的行数,执行以下步骤:

  1. 在 Data Source Explorer 中,双击 GSDB 数据库的 Tables 文件夹,如图 4 所示。
    图 4. 双击 Tables
    在 Data Source Explorer 中双击 Tables 文件夹
    在 Data Source Explorer 中双击 Tables 文件夹
  2. Object List 窗口现在显示每个表的表模式、表名和行数,如图 5 所示。注意,GOSALES.PRODUCT 和 GOSALES.PRODUCT_FORECAST 表分别有 274 行和 2728 行。
    图 5. Object List 窗口包含行数
    Object List 窗口显示每个表的表模式、表名和行数
    Object List 窗口显示每个表的表模式、表名和行数
  3. 还有一种方式可以查看实际的数据,即右键单击一个表,选择 Data > Return All Rows,如图 6 所示。
    图 6. 返回单个表的所有行
    为 GOSALESCT 表选择 Data > Return all Rows
    为 GOSALESCT 表选择 Data > Return all Rows

备份数据库

Erik 现在执行以下步骤备份 GSDB 数据库:

  1. 在 Data Source Explorer 中,右键单击 GSDB 数据库,选择 Backup…(如图 7 所示)启动 Backup 任务助手。
    图 7. 从 Data Source Explorer 选择 Backup
    从 Data Source Explorer 右键单击 GSDB 数据库并选择 Backup...
    从 Data Source Explorer 右键单击 GSDB 数据库并选择 Backup...
  2. 1. Type 选项卡上,选择 Back up the entire database,如图 8 所示。
    图 8. 从 Backup 任务助手中选择备份类型
    在 Type 选项卡中选择 backup the entire database
    在 Type 选项卡中选择 backup the entire database
  3. 选择 2. Image 选项卡。
  4. 从下拉菜单中选择 File System 作为媒介类型(图 9)。
  5. 单击 Browse 按钮并选择 C:\GSDB_BACKUP 作为备份映像的位置(图 9)。
    图 9. 选择备份媒介类型和位置
    在 Backup 助手的 Image 选项卡中选择文件系统作为媒介类型,并选择备份映像的位置
    在 Backup 助手的 Image 选项卡中选择文件系统作为媒介类型,并选择备份映像的位置
  6. 选择 3. Options 选项卡。
  7. 选择 Full backup – Back up all data 作为 Backup type(图 10)。
  8. 选择 Offline - Users cannot access the database during the backup 作为 Availability。这样选择后,quiesce 复选框选项被启用。选择该复选框(图 10)。您需要执行完全离线备份,因为在更改日志记录类型后,为了以后能执行时间点恢复,需要这种类型的备份。
    图 10. 选择备份选项
    在 Options 选项卡做出选择,以执行完全离线备份
    在 Options 选项卡做出选择,以执行完全离线备份
  9. 单击 Preview CommandPreview Command 链接 在 Command 窗口中生成并查看命令,如图 11 所示。
    图 11. 预览 backup 命令
    预览 Backup 任务助手生成的 backup 命令
    预览 Backup 任务助手生成的 backup 命令
  10. 单击 Run 按钮 Run 按钮
  11. Data Studio Administrator 应该返回一条备份成功的消息,如图 12 所示。
    图 12. 消息窗口显示成功
    从 Data Studio Administrator 返回的备份成功消息
    从 Data Studio Administrator 返回的备份成功消息

发现错误!

这天晚一点的时候,Erik 查看应用程序,发现错误的应用程序逻辑删除了 GOSALES.PRODUCT 和 GOSALES.PRODUCT_FORECAST 表中所有的行。他进入 Object List 窗口,看到这两个表的行数都是 0,从而确认了这一点,如图 13 所示。他知道出了问题,因为这两个表在出现错误之前分别有 274 行和 2728 行(见 图 5)。

图 13. 两个表中所有的行都被删除
Object list 窗口现在显示 GOSALES.PRODUCT 和 GOSALES.PRODUCT_FORECAST 表中的行数都是 0
Object list 窗口现在显示 GOSALES.PRODUCT 和 GOSALES.PRODUCT_FORECAST 表中的行数都是 0

为了跟随 Erik 恢复数据,您首先需要通过输入以下 DB2 命令模拟行的删除:

delete from GOSALES.PRODUCT
delete from GOSALES.PRODUCT_FORECAST

记下时间,以便能够恢复到执行删除命令之前的时间点。

恢复到一个时间点

Erik 现在急于使用 Data Studio Administrator 的功能将数据库恢复到适当的状态。为了使数据库回到发生错误的应用程序逻辑之前的初始状态,Erik 通过以下步骤执行数据库恢复,并前滚到一个时间点:

  1. 在 Data Source Explorer 中,右键单击 GSDB 数据库并选择 Restore…(如图 14 所示)启动 Restore 任务助手。
图 14. 从 Data Source Explorer 中选择 Restore
从 Data Source Explorer 中选择 Restore
从 Data Source Explorer 中选择 Restore
  1. 1. Type 选项卡上,选择 Restore to an existing databaseRestore the entire database,如图 15 和 16 所示。
    图 15. 选择恢复到已有的数据库
    Type 选项卡中的 Restore to an existing database 选项
    Type 选项卡中的 Restore to an existing database 选项
    图 16. 选择恢复整个数据库
    Type 选项卡中的 Restore the entire database 选项
    Type 选项卡中的 Restore the entire database 选项
  2. 选择 2. Available Images 选项卡。
  3. 选择 Select the backup images from a list(图 17)。
  4. 从备份映像列表中,选择运行错误的应用程序(即删除表中的行)之前的最新映像,并单击右箭头按钮 右箭头按钮 将备份映像移到右边的框中(图 17)。
    图 17. 选择运行错误的应用程序之前的最新映像
    使用 Available Images 选项卡选择运行错误的应用程序之前的最新映像
    使用 Available Images 选项卡选择运行错误的应用程序之前的最新映像
  5. 选择 4. Roll forward 选项卡。
  6. 选择 Restore the database and roll forward as follows(图 18)。
  7. 选择 Roll forward to a point in time – Local(图 18)。
  8. Roll forward to transaction 日期和时间输入适当的值。 日期和时间应该早于运行错误的应用程序(即删除表中的行)的时间。
    图 18. 选择回滚到执行错误的命令之前的时间
    使用 Roll forward 选项卡选择在表中的行被删除之前的一个时间
    使用 Roll forward 选项卡选择在表中的行被删除之前的一个时间
  9. 选择 5. Final State 选项卡。
  10. 选择 Complete the restore and return the database to the active state,如图 19 所示。
    图 19. 选择在前滚完成后使数据库返回到活动状态
    使用 Final State 选项卡选择在前滚完成后使数据库返回到活动状态
    使用 Final State 选项卡选择在前滚完成后使数据库返回到活动状态
  11. 单击 Preview CommandPreview Command 链接 在 Command 窗口中生成并查看命令,如图 20 所示。
    图 20. 预览 Restore 命令
    预览 Restore 任务助手生成的 restore 命令
    预览 Restore 任务助手生成的 restore 命令
  12. 单击 Run 按钮 Run 按钮,观察 Messages 和 SQL Results 窗口中出现的结果,如图 21 所示。
    图 21. 恢复的进度和状态
    表明恢复操作的进度和最终恢复操作成功的消息
    表明恢复操作的进度和最终恢复操作成功的消息

验证恢复

Erik 松了一口气!他已经将数据库恢复到发生错误的应用程序逻辑之前的状态。 Erik 使用 Data Studio Administrator 检查表中的行数,从而确认这一点:

  1. 在 Data Source Explorer 中,双击 Tables 文件夹。
  2. Object List 窗口现在显示 GSDB 数据库表。右键单击 GOSALES.PRODUCT 表,选择 Update statistics,如图 22 所示。
    图 22. 选择 Update Statistics 刷新行数
    右键单击数据库表后,从上下文菜单中选择 Update Statistics
    右键单击数据库表后,从上下文菜单中选择 Update Statistics
  3. 在 SQL Results 窗口中单击鼠标。这样会刷新 Object List 窗口,显示当前行数。
  4. 通过同样的过程刷新 GOSALES.PRODUCT_FORECAST 表的当前行数(右键单击该表,选择 Update statistics,在 SQL Results 窗口中单击鼠标)。
  5. 如图 23 所示,GOSALES.PRODUCT 和 GOSALES.PRODUCT_FORECAST 表现在恢复到发生错误的应用程序逻辑之前的行数(分别为 274 行和 2728 行)。
    图 23. 行数已经恢复
    Object List 窗口中更新后的行数证明恢复成功
    Object List 窗口中更新后的行数证明恢复成功

结束语

Data Studio Administrator 为数据库管理员提供了一个有用的工具,以便他们执行备份和恢复策略中的定期备份。当发生数据毁坏事故,例如软件故障、硬件故障、错误的应用程序逻辑和用户错误后,可以使用这些备份将数据库恢复到适当的状态。

Erik 已经验证,数据库被成功恢复。避免了危机后,他决定犒劳一下自己,散步到街边的咖啡店,享受一杯美味的咖啡。


相关主题


评论

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

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Information Management
ArticleID=392738
ArticleTitle=用 Data Studio Administrator 恢复数据库
publish-date=05312009