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 特性可获得以下好处:它提供对扩展的变更的支持,包括数据保留和对依赖对象的管理,例如约束、视图、触发器和引用完整性。
下面概述了本文描述的备份和恢复步骤:
- 如果还没有建立连接,则建立与受影响的数据库的连接。
- 查看数据,看看表中有哪些行。
- 使用备份任务助手备份系统。
- 运行示例 delete 语句,模拟删除两个表中所有行的错误的应用程序逻辑。
- 使用恢复任务助手恢复数据库,并前滚到运行 delete 语句之前的时间点。
- 查看更新后的行数,验证执行恢复操作之后数据是否完整无缺。
文档选项 未显示需要 JavaScript. 的文档选项
级别: 初级
Tawanna Harris, 专职软件工程师, IBM
Sailaja Bandlamoori, 专职软件工程师, IBM2009 年 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 特性可获得以下好处:它提供对扩展的变更的支持,包括数据保留和对依赖对象的管理,例如约束、视图、触发器和引用完整性。
下面概述了本文描述的备份和恢复步骤:
- 如果还没有建立连接,则建立与受影响的数据库的连接。
- 查看数据,看看表中有哪些行。
- 使用备份任务助手备份系统。
- 运行示例 delete 语句,模拟删除两个表中所有行的错误的应用程序逻辑。
- 使用恢复任务助手恢复数据库,并前滚到运行 delete 语句之前的时间点。
- 查看更新后的行数,验证执行恢复操作之后数据是否完整无缺。
回页首
使用以下步骤安装和配置一个环境,以便遵循 Erik 的场景:
- 该场景要求安装 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 安装文件和说明。
- 另外还必须安装一个受支持的 DB2® 版本。如果还没有安装 DB2,请使用 参考资料 小节中的链接下载 DB2 Express-C,这是免费版的 DB2 Express Edition。
- 遵循以下步骤创建一个名为 GSDB 的示例数据库:
- 从本文的 下载 小节获得 GSDB_Database.zip 文件,并从中提取 GSDB_Database.sql 文件。
- 打开一个 DB2 Command Window。
- 导航到保存 GSDB_Database.sql 文件的位置。
- 输入以下命令:
db2 -td~ -f GSDB_Database.sql
- 将默认的循环日志记录(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 中实际上只需输入一个连续的字符串作为命令。为什么使用归档日志记录? 所谓恢复,是在出现问题,例如媒介或存储故障、断电或应用程序故障后,重建数据库或表空间。如果已经备份了数据库或单个的表空间,那么一旦它们被毁坏,就可以重建它们。
循环日志记录 意味着日志被不断覆盖,只保留确保当前 事务的完整性所需的日志。由于这种类型的恢复操作是将数据恢复到特定的时间点,在此时间点曾做过完全备份,因此被称作版本恢复。当创建数据库时,这是默认的日志记录选项,正因为如此,才需要显式更改它,以便能遵循本文描述的场景。
为了支持前滚恢复,重新应用备份之后做出的更改,必须使用归档日志记录(archive logging)。顾名思义,归档日志记录确保您具有所需的日志,以便通过适当的归档和归档日志恢复到特定的时间点。
要了解更多信息,请参阅 DB2 for Linux®, Unix®, and Windows® Information center 中的 “Understanding recovery logs” 专题。
以上命令指定:
- 使用归档日志记录。
- 将归档日志保存到 GSDB_ARCHIVE 目录。
- 如果归档日志记录失败,那么写到临时目录 GSDB_failure。
- 有两个主日志,没有辅助日志。
- 主日志大小为 1024 个 4KB 的页面。
在该场景的某一个步骤中,您在更改了日志记录选项后,对数据库执行完全离线备份。
本文接下来的小节描述 Erik 在一天中遇到的主要事件,并详细说明他采取的操作。细节采用逐步说明的形式,以便您可以遵循逐步说明,获得自己的实践经验。
所有 Data Studio 产品都使用一个相同的 Data Source Explorer 连接到数据库。在本场景中,Erik 执行的第一个任务是建立到 GSDB 数据库的连接,如下所示:
- 在 Data Source Explorer 中,右键单击 Database Connections,并选择 New…,如图 1 所示。
图 1. 从 Data Source Explorer 连接到数据库 - 输入所需的连接参数,并单击 Test Connection 按钮,验证连接,如图 2 所示。
图 2. 验证连接 - 如果连接成功,单击 Next 按钮。
- 在 Filter 屏幕中做出选择,以包括 GOSALES 和 GOSALESCT 模式,并单击 Finish 按钮,如图 3 所示。
图 3. 按模式过滤
连接到 GSDB 数据库后,Erik 想查看选中的表中的行数。
本场景使用行数作为表的当前状态的指示器。 在执行恢复操作后,可以使用这个数字来验证表是否回到相同的状态。
要查看所选择的表中的行数,执行以下步骤:
- 在 Data Source Explorer 中,双击 GSDB 数据库的 Tables 文件夹,如图 4 所示。
图 4. 双击 Tables - Object List 窗口现在显示每个表的表模式、表名和行数,如图 5 所示。注意,GOSALES.PRODUCT 和 GOSALES.PRODUCT_FORECAST 表分别有 274 行和 2728 行。
图 5. Object List 窗口包含行数 - 还有一种方式可以查看实际的数据,即右键单击一个表,选择 Data > Return All Rows,如图 6 所示。
图 6. 返回单个表的所有行
Erik 现在执行以下步骤备份 GSDB 数据库:
- 在 Data Source Explorer 中,右键单击 GSDB 数据库,选择 Backup…(如图 7 所示)启动 Backup 任务助手。
图 7. 从 Data Source Explorer 选择 Backup - 在 1. Type 选项卡上,选择 Back up the entire database,如图 8 所示。
图 8. 从 Backup 任务助手中选择备份类型 - 选择 2. Image 选项卡。
- 从下拉菜单中选择 File System 作为媒介类型(图 9)。
- 单击 Browse 按钮并选择 C:\GSDB_BACKUP 作为备份映像的位置(图 9)。
图 9. 选择备份媒介类型和位置 - 选择 3. Options 选项卡。
- 选择 Full backup – Back up all data 作为 Backup type(图 10)。
- 选择 Offline - Users cannot access the database during the backup 作为 Availability。这样选择后,quiesce 复选框选项被启用。选择该复选框(图 10)。您需要执行完全离线备份,因为在更改日志记录类型后,为了以后能执行时间点恢复,需要这种类型的备份。
图 10. 选择备份选项 - 单击 Preview Command 在 Command 窗口中生成并查看命令,如图 11 所示。
图 11. 预览 backup 命令 - 单击 Run 按钮 。
- Data Studio Administrator 应该返回一条备份成功的消息,如图 12 所示。
图 12. 消息窗口显示成功
这天晚一点的时候,Erik 查看应用程序,发现错误的应用程序逻辑删除了 GOSALES.PRODUCT 和 GOSALES.PRODUCT_FORECAST 表中所有的行。他进入 Object List 窗口,看到这两个表的行数都是 0,从而确认了这一点,如图 13 所示。他知道出了问题,因为这两个表在出现错误之前分别有 274 行和 2728 行(见 图 5)。
图 13. 两个表中所有的行都被删除为了跟随 Erik 恢复数据,您首先需要通过输入以下 DB2 命令模拟行的删除:
delete from GOSALES.PRODUCT delete from GOSALES.PRODUCT_FORECAST
记下时间,以便能够恢复到执行删除命令之前的时间点。
Erik 现在急于使用 Data Studio Administrator 的功能将数据库恢复到适当的状态。为了使数据库回到发生错误的应用程序逻辑之前的初始状态,Erik 通过以下步骤执行数据库恢复,并前滚到一个时间点:
- 在 Data Source Explorer 中,右键单击 GSDB 数据库并选择 Restore…(如图 14 所示)启动 Restore 任务助手。
图 14. 从 Data Source Explorer 中选择 Restore- 在 1. Type 选项卡上,选择 Restore to an existing database 和 Restore the entire database,如图 15 和 16 所示。
图 15. 选择恢复到已有的数据库
图 16. 选择恢复整个数据库 - 选择 2. Available Images 选项卡。
- 选择 Select the backup images from a list(图 17)。
- 从备份映像列表中,选择运行错误的应用程序(即删除表中的行)之前的最新映像,并单击右箭头按钮 将备份映像移到右边的框中(图 17)。
图 17. 选择运行错误的应用程序之前的最新映像 - 选择 4. Roll forward 选项卡。
- 选择 Restore the database and roll forward as follows(图 18)。
- 选择 Roll forward to a point in time – Local(图 18)。
- 为 Roll forward to transaction 日期和时间输入适当的值。 日期和时间应该早于运行错误的应用程序(即删除表中的行)的时间。
图 18. 选择回滚到执行错误的命令之前的时间 - 选择 5. Final State 选项卡。
- 选择 Complete the restore and return the database to the active state,如图 19 所示。
图 19. 选择在前滚完成后使数据库返回到活动状态 - 单击 Preview Command 在 Command 窗口中生成并查看命令,如图 20 所示。
图 20. 预览 Restore 命令 - 单击 Run 按钮 ,观察 Messages 和 SQL Results 窗口中出现的结果,如图 21 所示。
图 21. 恢复的进度和状态
Erik 松了一口气!他已经将数据库恢复到发生错误的应用程序逻辑之前的状态。 Erik 使用 Data Studio Administrator 检查表中的行数,从而确认这一点:
- 在 Data Source Explorer 中,双击 Tables 文件夹。
- Object List 窗口现在显示 GSDB 数据库表。右键单击 GOSALES.PRODUCT 表,选择 Update statistics,如图 22 所示。
图 22. 选择 Update Statistics 刷新行数 - 在 SQL Results 窗口中单击鼠标。这样会刷新 Object List 窗口,显示当前行数。
- 通过同样的过程刷新 GOSALES.PRODUCT_FORECAST 表的当前行数(右键单击该表,选择 Update statistics,在 SQL Results 窗口中单击鼠标)。
- 如图 23 所示,GOSALES.PRODUCT 和 GOSALES.PRODUCT_FORECAST 表现在恢复到发生错误的应用程序逻辑之前的行数(分别为 274 行和 2728 行)。
图 23. 行数已经恢复
- 在 Data Source Explorer 中,双击 GSDB 数据库的 Tables 文件夹,如图 4 所示。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15082138/viewspace-605276/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/15082138/viewspace-605276/