使用 IBM DB2 Merge Backup for Linux, UNIX, and Windows 简化备份和恢复

如何使用 IBM DB2 Merge Backup 创建合并备份的分步指南

拥有一份最新的一致备份,以便加快数据库恢复速度,这非常重要。IBM® DB2® Merge Backup for Linux®, UNIX® and Windows™ 为您提供了备用战略来消除执行定期 DB2 完全备份的需要,并使用多个 delta 备份和增量备份来构建一个能被 DB2 完全识别的新的完全备份副本。这篇文章介绍了 IBM DB2 Merge Backup,指导您使用 IBM DB2 Merge Backup 中的控制文件结构创建合并备份 (merge backup)。

Anson Kokkat, 产品经理, IBM

照片:Anson KokkatAnson Kokkat 在 IBM 的 Optim Database Tools Group 担任产品经理。Anson 已经工作了超过 12 年的时间,在此期间,他研究过与数据服务器相关的应用程序开发技术。他曾担任过 IBM 数据建模工具 InfoSphere Data Architect 的产品经理,在这方面有深厚背景。现在 Anson 集中精力为 Database Backup and Recovery Tooling Solutions 开拓市场。他撰写了许多有关他的专业技能的文章和白皮书,而且继续在与该领域的销售、营销、开发,尤其是客户合作。



Soid Quintero, Optim 技术支持, IBM

Soid Quintero 的照片Soid Quintero 是加利福尼亚州圣何塞的 IBM 硅谷实验室的软件工程师。她从事 Optim Database Tools 的客户技术支持。她最近毕业于 San José State University 的 Human Factors and Ergonomics,获得了硕士学位。



2013 年 7 月 02 日

本文提供一个分步指南,向您展示如何使用 IBM DB2 Merge Backup for LUW 来利用 DB2 Merge Backup 中的控制文件结构创建一个完整的合并备份。在本文中,您将学习如何创建完全备份和 delta 备份,以及如何使用控制文件将 delta 备份和完全备份合并在一起,创建一个新的完整合并备份。

按照本文中的步骤,您将:

  1. 创建数据库的完全备份,将此备份用作基准备份。
  2. 在数据库中模拟某种活动。
  3. 创建一个 delta 备份来捕获自完成定期完全备份以来执行的更改。
  4. 创建一个新的合并备份,将 DB2 完全备份和 delta 备份相结合,分析如何在 DB2 历史文件中注册这个新备份。
  5. 使用 db2ckbkp 实用程序进行验证,Merge Backup 创建的备份是否拥有在还原数据库时需要使用的完整性。

本中使用的示例仅用于演示,可能不是最佳实践。

本文将 IBM DB2 Merge Backup for Linux, UNIX, and Windows 产品称为 DB2 Merge Backup、Merge Backup 实用程序或者简称为 Merge Backup。本文是为拥有初级到中级技能和经验的 DB2 for Linux, UNIX, or Windows 数据库管理员而编写。您应对数据库管理及备份和恢复原理具有一定的了解,无需拥有特定于 IBM DB2 的技能。

系统要求

要执行本文中的示例和最充分地理解本文,建议安装以下软件:

  • IBM DB2 Merge Backup for Linux, UNIX and Windows version 1.1.1.1
  • DB2 10.1 或以前的 DB2 for Linux, UNIX, and Windows 版本

请参阅 参考资料 部分,了解软件相关的下载信息。

在本文的所有示例中,我们将使用一个名为 GSDB 的示例数据库,它包含一家名为 Great Outdoors 公司的虚构的户外设备销售商的示例数据。在继续阅读本文之前,请创建 GSDB 数据库(请参阅 参考资料,了解相关的下载信息)。如果希望使用您自己的现有数据库,请记住,在引用本文中的示例时,使用您的数据库名称代替 GSDB。

要成功地完成增量备份或 delta 备份,数据库必须处于归档日志模式,这意味着必须将 TRACKMOD 数据库参数设置为 YES。请参阅 参考资料,获取将 TRACKMOD 参数设置为 YES 的帮助。

在您的机器上创建一个目录,将它作为保存备份的位置。本文使用 /home/db2inst1/Desktop/BACKUPS 目录作为将保存备份的位置。确保用于完成本文中的示例的目录是真实存在的。


IBM DB2 Merge Backup for LUW 概述

您的数据库关闭(无论是计划的还是未计划的)的每时每刻都可能意味着生产力损失、数据丢失或收入损失,这对一家公司具有非常大的损害。DB2 Advanced Recovery Solutions 为帮助您节省金钱、时间和缩短数据库宕机时间进行了精心准备。DB2 Merge Backup 是 DB2 Advanced Recovery Solutions 中的一个工具,可帮助您缩短备份时间和加快恢复速度。

DB2 Merge Backup 是一个命令行实用程序工具,允许您将完整 DB2 备份与增量或 delta 备份相结合,构建一个可用于还原数据库或各个表空间的新的完整合并备份。合并备份包含与使用 DB2 for LUW 创建的完全备份相同的信息。

您可能已知道,数据库中的数据正在快速增长,这使得频繁的完全备份变得越来越耗时。但是,如果不经常备份数据,则会带来代价高昂的风险。事实证明,此项选择的代价是如此之高,甚至有可能导致数据永远无法恢复。使用 DB2 Merge Backup,您可以创建可用来创建完全备份的 delta 备份或增量备份,无需总是创建定期完全备份。您首先需要创建一个完整的定期备份,然后将所有 delta 备份或增量备份合并在一起,创建一个新的完整的合并备份。这也就是说,您只需创建一个完整的定期备份一次,在这之后,所有合并都将从使用 DB2 Merge Backup 创建的完整合并备份开始。

图 1 表明,Merge Backup 从历史文件中获取有关最新的完全备份以及增量和 delta 备份的信息,将它们合并到一个新的完整合并备份中。然后,这个新的完整合并备份可由 db2ckbkprestore 实用程序像常规 DB2 完全备份一样处理。新的合并备份也可用于未来的后续合并,以及增量或 delta 备份,这消除了定期执行 DB2 完全备份的需求。

图 1. Merge Backup 概述图
Merge Backup 概述

DB2 备份类型

上一节 中已经提到,使用 DB2 Merge Backup 创建的数据库备份拥有与 DB2 创建的定期完全备份相同的信息,可用该备份代替最后一个源备份来执行还原。这意味着,Merge Backup 可以使用 DB2 支持的所有类型的备份来创建一个新的合并备份,这个合并备份最终可用于还原您的数据库。现在,让我们来看一下 DB2 和 DB2 Merge Backup 支持的 4 种不同的备份类型:完全备份映像、增量备份、delta 备份和日志。

  • 完全备份映像:这是任何恢复战略的基础。没有完整的备份映像,就无法执行任何恢复。所以您始终需要一个完全备份,以此作为基准。如果备份是在线创建的,那么您需要获得在创建备份期间执行的所有事务的日志。还原一个完全备份,重放自创建该备份以后的所有事务的日志,您的恢复就完成了。
  • 增量备份:这包括自上一次完全备份以来执行的所有更改。您需要还原一个完全备份,还原增量备份,重放自该增量备份以来的日志,这样您的恢复就完成了。图 2 显示了增量备份。
    图 2. 增量备份
    该图显式了星期日执行的完全备份、星期天到星期六执行的增量备份,以及星期日的另一个完全备份。
  • Delta 备份:这包括自上一次任何类型的备份(完整、增量或 delta 备份)以来执行的所有更改。如果上一次备份是一次完全备份,那么该备份和 delta 备份将提供最完整的备份。如果在创建增量备份映像后创建了 delta 备份,则需要获得此 delta 备份、增量备份和增量备份所基于的完整的备份映像。如果 delta 之前是一个或多个 delta,那么您需要获得一个增量备份或完全备份映像的所有 delta。图 3 显示了增量备份。
    图 3. 增量 delta 备份
    该图显式了两端的完全备份和中间的 6 个 delta 备份。
  • 日志文件:日志包含自上一次备份以来您能够还原的所有事务。

控制文件

控制文件是一个简单的 ASCII 文件,其中包含一个完整的 DB2 Merge Backup 选项列表。有了这些选项,您在数据上就拥有非常高的灵活性和强大的控制力。建议在希望完成比较复杂的任务时使用控制文件,但这并不意味着无法将它们用于简单任务。您也可以跨数据库重用控制文件,使用命令行修改它们的内容。例如,如果希望在多个数据库上处理同一个任务,那么您可以在调用控制文件时使用 –d database_name选项修改在文件中指定的数据库名称。

每个控制文件仅需一个 MERGE 子句。MERGE 子句用于指定合并备份的范围。对于本文中的示例,该范围将是 GSDB 数据库。一个控制文件中可以拥有多个 MERGE 子句,它们使用分号分隔。在本文使用的示例中,控制文件将包含一个 OUTPUT 子句,该子句允许您指定将合并备份文件存储到哪个位置。

可以从命令行窗口使用以下语法指定使用控制文件:db2mbk -f control_file_name,其中 control_file_name 是控制文件的名称。在 合并备份 一节中,您将学习如何创建和运行控制文件来创建一个合并备份。


创建作为基准的完整数据库备份

首先,您需要创建数据库 GSDB 的一个完全备份,并使用这个完全备份作为基准。请记住,IBM Merge Backup 需要使用一个完全备份作为来源,然后才能创建一个合并备份作为起点。创建 DB2 完全备份后,无需再次创建另一个完全备份。

  1. 如果尚未启动 DB2,请打开 DB2 命令提示符并启动它。要启动 DB2,可以发出以下命令:

    db2start
  2. 运行 DB2 TERMINATE 命令来断开已存在的任何数据库连接。

    db2 terminate
  3. 最后,执行 BACKUP 命令来创建您的 GSDB 数据库备份。

    db2 backup db gsdb to /home/db2inst1/Desktop/MBK/BACKUPS compress without prompting

    请记住,使用您希望用来存储备份的机器上的某个现有目录。

    在完成备份操作时,终端将显式创建备份映像时的时间戳。记下该时间戳,因为本文后面会引用它。图 4 显示了输出。

    图 4. 创建 DB2 完全备份终端输出
    该命令窗口显式了终端输出,时间戳用红色标出。
  4. 通过检查您指定用来保存备份的目录位置,可以检查完全备份是否已创建。在创建备份时,应该看到创建了一个新文件,可在输出中看到它的时间戳是文件名的一部分。

    图 5. 查看备份的文件浏览器
    该屏幕截图显式了查看备份位置的文件浏览器

    如果备份没有成功完成,可检查您输入的命令信息是否正确。

请注意,您提供了最初的完全备份作为基准,现在您可以开始使用 DB2 支持的任何其他类型的备份(包括使用 DB2 Merge Backup 创建的合并备份)来创建合并备份。


模拟对数据库的更改

要捕获自初始备份以来对数据库执行的所有更改,需要模拟对数据库的一些更改。本节将介绍为 GSDB 数据库创建一些更改的过程。

如果未使用建议的示例数据库 GSDB,则需要模拟对您用于本文的数据库的一些更改。可以模拟一些简单更改,比如向一个表中添加一个新条目,创建一个新表或更新一个条目,这样就可以捕获自完全备份以来执行的一些更改。

以下查询会将 GSDB 数据库的 GOSALESCT 模式的 CUSTOMER_ORDER_DETAIL 表的客户数量增加 1。

  1. 在 DB2 命令提示符下,创建与 GSDB 数据库的连接。要连接到 GSDB 数据库,请输入以下命令:

     db2 connect to GSDB
  2. 接下来,必须使用以下查询将客户数量增加 1:

    db2 update gosalesct.cust_order_detail set cust_quantity = cust_quantity + 1;
  3. 将您的更改提交给数据库。

    db2 commit
  4. 终止您创建的与 GSDB 的数据库连接。

    db2 terminate

    图 6 显示了这个过程。

    图 6. 对数据库执行更改
    该命令窗口显示了这个过程。

现在,delta 备份已捕获了对 GSDB 数据库执行的所有更改。


创建 delta 备份

现在已经可以创建 delta 备份,以便在下一节中使用它来创建合并备份。此备份仅捕获自上一次完全备份以来对数据库执行的更改。

  1. 仍然在 DB2 命令提示符下,键入以下信息:

    db2 backup db gsdb incremental delta to /home/db2inst1/Desktop/MBK/BACKUPS compress
    without prompting

    该命令应写出到一行上。

    等待命令完成执行;您会在终端看到一条成功消息。终端输出还会显示一个时间戳,您需要记下该时间戳。图 7 显示了 delta 备份输出。

    图 7. Delta 备份输出
    该命令窗口显示了终端输出,其中时间戳用红色标出。

    如果没有成功完成该命令,请确保您键入了正确的信息。

    我们假设完全备份和 delta 备份都已实际创建。

  2. 使用一个文件浏览器窗口,导航到您指定用来保存备份的位置。在本例中,该目录为 /home/db2inst1/Desktop/MBK/BACKUPS。
  3. 现在有两个文件:一个完全备份和一个 delta 备份。图 8 显示了包含两个备份的文件浏览器窗口。

    图 8. 用于检查备份的文件浏览器
    文件浏览器显示了两个备份
  4. 请注意,您的备份的文件名看起来有些类似;这不是巧合。DB2 备份文件名由一些串联的元素组成,这些元素使用句点分开。一般规则是:DB_alias.Type.Inst_name.DBPARTnnn.timestamp.Seq_num

    其中

    • DB_alias 是数据库别名,在本例中用 GSDB 显示。
    • Type 指操作的类型。在这里它显示为 0,这表明这是一个数据库级操作。
    • Inst_name 是数据库实例的名称。在本例中,DB2 实例名为 db2inst1
    • DBPARTnnn 表示数据库分区编号。因为在示例环境中 GSDB 数据库只有一个分区,所以结果显示为 DBPART000
    • timestamp 也是文件名的一部分。您看到的每个时间戳都与一个文件匹配,最新的日期属于 delta 备份。
    • Seq_num 是为该文件提供的一个序列号。此示例表明,两个文件都具有序列号 001

    您还可以明显地看出这两个文件的大小差异,完全备份文件是两个中较大的那个。


创建一个完整合并备份

本文的目的是展示如何通过创建控制文件来创建一个合并备份。下一节将介绍如何创建一个控制文件,将完全备份与 delta 备份合并在一起。尽管无需使用控制文件即可创建合并备份,但建议对较为复杂的任务使用控制文件。

  1. 要创建控制文件,可打开一个新的空白文本文档,将它保存为 merge.ctl。以下是完成的控制文件。

    MERGE database gsdb
    
    OUTPUT to “/home/db2inst1/Desktop/MBK/BACKUPS”
    
    compress yes

    这个文件将要执行的操作是创建一个新的合并文件,其中包含自 GSDB 数据库的上一次完整合并备份或初始定期完全备份以来创建的所有 delta 或增量备份。

  1. 以下是创建控制文件的内容的各个步骤。

    1. 首先从 MERGE 子句开始。在您新创建的控制文件中,键入以下内容:

      MERGE database gsdb
    2. 接下来,在您的控制文件中,您可能希望提供一个位置来保存将要创建的新合并备份。这可以使用 OUTPUT 子句完成。在您的控制文件中,在一个新行上为 OUTPUT 子句编写以下代码:

      OUTPUT to “/home/db2inst1/Desktop/MBK/BACKUPS”
    3. 在一个新行上,编写代码来压缩合并备份。在控制文件中,键入以下内容:
      compress yes

      这使用默认的 DB2 压缩库来减少备份的大小。

  1. 保存您对控制文件执行的所有更改并关闭它。
  2. 从 DB2 命令行更改保存控制文件的目录。
  3. 在 DB2 命令窗口中键入以下命令来执行控制文件:
    db2mbk -f merge.ctl

    等待合并完成。您将在终端看到合并的输出信息。我们看到输出中提供了您刚完成的合并的信息。图 9 显示了输出。

    图 9. 合并备份输出
    该命令窗口显示了合并数据。

    控制文件的内容显示在输出顶部。显示了合并的开始和结束时间,以及合并过程的持续时间。您还会看到合并中涉及的备份信息(它们按时间戳顺序列出)。要准确找出涉及到哪些备份,请查阅您在创建备份时记下的时间戳。记下合并备份的时间戳,因为在下一节中调用 db2ckbkp 实用程序时会用到该值。


回顾历史

DB2 Merge Backup 使用历史文件来确定备份列表。您可以使用 db2 list history 命令确定如何向历史文件注册合并备份。

  1. 在命令提示符下输入以下命令来检索数据库备份历史:
    db2 list history backup all for GSDB

    系统会列出关于您创建的 3 个备份的信息。例如,图 10(查看 大图)显示了来自 list history 命令的输出的结尾部分;详细信息是属于合并备份的。您可能想知道如何确定图 10 中的信息属于合并备份。答案是,它在表的操作类型 (OP) 列中使用 M 表示。您还可以匹配时间戳。

    图 10. 合并备份的历史细节
    命令窗口显示了对合并备份执行的 list history 命令

使用 list history 命令后,列出了大量与您的备份相关的信息。在输出中可以找到有关某个备份的详细信息(比如操作类型、备份类型、备份的时间戳和备份的位置)。

表 1 总结了您可在恢复历史文件过程中找到的操作和操作类型的不同值。

表 1. 操作类型
类型描述
F完全离线
M合并
B备份
N在线
I增量离线
O增量在线
DDelta 离线
EDelta 离线
R重新构建

使用 db2ckbkp 命令验证备份

使用 DB2 检查备份实用程序(使用 db2ckbkp 命令调用),您可测试备份映像的完整性,以确定是否可还原该映像。

我们验证一下刚创建的合并备份的完整性。

  1. 在 DB2 中断中或从一个文件浏览器将目录更改为您保存备份的位置。
  2. 您需要知道完整的合并备份文件名,然后才能使用 db2ckbkp 命令。从命令提示符执行备份映像文件的列出命令,或者使用一个文件浏览器获取您创建的备份的文件名。使用您在创建备份时记下的时间戳信息来查找合并备份。合并备份是具有最新的时间戳的文件。在本例中,合并备份的文件名为 GSDB.0.db2inst1.DBPART000.20130304125847.001。图 11 显示了这些文件。
    图 11. 列出备份以获取合并文件名
    该命令窗口显示了列出备份的命令

    您现在已经可以调用 db2ckbkp 命令。

  3. 从命令提示符,键入以下命令:

    db2ckbkp -h GSDB.0.db2inst1.DBPART000.20130304125847.001

    请记得使用自己的备份文件名。

  4. 等待验证过程完成;在看到处理命令后,在输出的底部显示了井号标记 (#)。
  5. 在运行完该命令后,您将在输出的末尾看到验证的结果(图 12)。
    图 12. db2ckbkp 输出
    db2ckbkp 输出

    看看输出中还显示了哪些与备份相关的信息。

  6. 请注意,在输出中,可确定映像类型为合并备份,因为 Merge Backup Image 中显示了 1。如果这是一个传统备份,您将看到 0。
    图 13. db2ckbkp 输出细节
    db2ckbkp 输出细节

结束语

本文介绍了如何使用 DB2 Merge Backup 实用程序将多个备份组合到一个完整备份中。您还学习了如何使用 db2ckbkp 实用程序验证此备份可很好地用于还原。

您可看到在真实环境中使用 DB2 Merge Backup 的价值,因为它使您能够拥有用于恢复的最新的一致备份。该工具的价值在于,它虽然没有节省创建实际备份的时间,而它能够提供一个可更频繁地执行的备份,使您能够以更快的速度执行恢复。同样地,您并不需要真正再次创建完全备份,因为这些 DB2 Merge Backup 是真正的 DB2 完全备份副本,它们已在 DB2 历史文件中注册,并且获得了与其他任何 DB2 备份文件相同的待遇。在生产环境中使用 DB2 Merge Backup 有助于减少宕机成本和 DBA 劳动,实施对生产影响最小但提供了必要的恢复资产的备份战略。

参考资料

学习

获得产品和技术

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Information Management
ArticleID=936370
ArticleTitle=使用 IBM DB2 Merge Backup for Linux, UNIX, and Windows 简化备份和恢复
publish-date=07022013