用 Data Studio Administrator 恢复数据库

Tawanna Harris, 专职软件工程师, IBM
Sailaja Bandlamoori, 专职软件工程师, IBM

简介

几乎所有 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. 查看更新后的行数,验证执行恢复操作之后数据是否完整无缺。
    文档选项
    将打印机的版面设置成横向打印模式

    打印本页

    将打印机的版面设置成横向打印模式

    打印本页

    将此页作为电子邮件发送

    将此页作为电子邮件发送

    将此页作为电子邮件发送

    将此页作为电子邮件发送

    未显示需要 JavaScript. 的文档选项

    英文原文

    英文原文


    级别: 初级

    Tawanna Harris, 专职软件工程师, IBM
    Sailaja Bandlamoori, 专职软件工程师, IBM

    2009 年 5 月 31 日

    作为一名 DBA,在备份和恢复策略中安排定期的数据库系统备份非常重要。当应用程序或硬件出现故障时,就可以使用备份来恢复数据库。本文遵循在一家虚构公司担任 DBA 的 Erik 的日常工作场景进行论述。这一天,问题来了,Erik 发现错误的应用程序逻辑删除了公司的 GOSALES 数据库中多个表中的记录。但是,由于 Erik 之前使用 Data Studio Administrator 2.1 对数据库进行了备份,他可以将数据库恢复到初始的状态。

    简介

    几乎所有 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;
      

      为什么使用归档日志记录?

      所谓恢复,是在出现问题,例如媒介或存储故障、断电或应用程序故障后,重建数据库或表空间。如果已经备份了数据库或单个的表空间,那么一旦它们被毁坏,就可以重建它们。

      循环日志记录 意味着日志被不断覆盖,只保留确保当前 事务的完整性所需的日志。由于这种类型的恢复操作是将数据恢复到特定的时间点,在此时间点曾做过完全备份,因此被称作版本恢复。当创建数据库时,这是默认的日志记录选项,正因为如此,才需要显式更改它,以便能遵循本文描述的场景。

      为了支持前滚恢复,重新应用备份之后做出的更改,必须使用归档日志记录(archive logging)。顾名思义,归档日志记录确保您具有所需的日志,以便通过适当的归档和归档日志恢复到特定的时间点。

      要了解更多信息,请参阅 DB2 for Linux®, Unix®, and Windows® Information center 中的 “Understanding recovery logs” 专题。

      注意:在以上显示的命令中,第一行末尾的反斜杠字符只是用于表明同一行的延续。因此不要在命令中输入反斜杠。在 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 屏幕

    2. 输入所需的连接参数,并单击 Test Connection 按钮,验证连接,如图 2 所示。

      图 2. 验证连接
      使用 Connection Identification 屏幕输入连接参数并测试连接

    3. 如果连接成功,单击 Next 按钮。
    4. 在 Filter 屏幕中做出选择,以包括 GOSALES 和 GOSALESCT 模式,并单击 Finish 按钮,如图 3 所示。

      图 3. 按模式过滤
      在 filter 屏幕中包括 GOSALES 和 GOSALESCT 模式

      查看表中的行数

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

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

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

      1. 在 Data Source Explorer 中,双击 GSDB 数据库的 Tables 文件夹,如图 4 所示。

        图 4. 双击 Tables
        在 Data Source Explorer 中双击 Tables 文件夹

      2. Object List 窗口现在显示每个表的表模式、表名和行数,如图 5 所示。注意,GOSALES.PRODUCT 和 GOSALES.PRODUCT_FORECAST 表分别有 274 行和 2728 行。


        图 5. Object List 窗口包含行数
        Object List 窗口显示每个表的表模式、表名和行数

      3. 还有一种方式可以查看实际的数据,即右键单击一个表,选择 Data > Return All Rows,如图 6 所示。

        图 6. 返回单个表的所有行
        为 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...

      2. 1. Type 选项卡上,选择 Back up the entire database,如图 8 所示。

        图 8. 从 Backup 任务助手中选择备份类型
        在 Type 选项卡中选择 backup the entire database

      3. 选择 2. Image 选项卡。
      4. 从下拉菜单中选择 File System 作为媒介类型(图 9)。
      5. 单击 Browse 按钮并选择 C:\GSDB_BACKUP 作为备份映像的位置(图 9)。


        图 9. 选择备份媒介类型和位置
        在 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 选项卡做出选择,以执行完全离线备份

      9. 单击 Preview Command Preview Command 链接 在 Command 窗口中生成并查看命令,如图 11 所示。

        图 11. 预览 backup 命令
        预览 Backup 任务助手生成的 backup 命令

      10. 单击 Run 按钮 Run 按钮
      11. Data Studio Administrator 应该返回一条备份成功的消息,如图 12 所示。

        图 12. 消息窗口显示成功
        从 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

        为了跟随 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

        1. 1. Type 选项卡上,选择 Restore to an existing databaseRestore the entire database,如图 15 和 16 所示。

          图 15. 选择恢复到已有的数据库
          Type 选项卡中的 Restore to an existing database 选项



          图 16. 选择恢复整个数据库
          Type 选项卡中的 Restore the entire database 选项

        2. 选择 2. Available Images 选项卡。
        3. 选择 Select the backup images from a list(图 17)。
        4. 从备份映像列表中,选择运行错误的应用程序(即删除表中的行)之前的最新映像,并单击右箭头按钮 右箭头按钮 将备份映像移到右边的框中(图 17)。

          图 17. 选择运行错误的应用程序之前的最新映像
          使用 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 选项卡选择在表中的行被删除之前的一个时间

        9. 选择 5. Final State 选项卡。
        10. 选择 Complete the restore and return the database to the active state,如图 19 所示。

          图 19. 选择在前滚完成后使数据库返回到活动状态
          使用 Final State 选项卡选择在前滚完成后使数据库返回到活动状态

        11. 单击 Preview Command Preview Command 链接 在 Command 窗口中生成并查看命令,如图 20 所示。

          图 20. 预览 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

          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 窗口中更新后的行数证明恢复成功

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15082138/viewspace-605276/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/15082138/viewspace-605276/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值