简介:
拥有一份最新的一致备份,以便加快数据库恢复速度,这非常重要。IBM? DB2? Merge Backup
for Linux?, UNIX? and Windows? 为您提供了备用战略来消除执行定期 DB2
完全备份的需要,并使用多个 delta 备份和增量备份来构建一个能被 DB2 完全识别的新的完全备份副本。这篇文章介绍了
IBM DB2 Merge Backup,指导您使用 IBM DB2 Merge Backup 中的控制文件结构创建合并备份
(merge backup)。
本文提供一个分步指南,向您展示如何使用 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 的技能。
系统要求
要执行本文中的示例和最充分地理解本文,建议安装以下软件:
1、IBM DB2 Merge Backup for Linux, UNIX
and Windows version 1.1.1.1
2、DB2 10.1 或以前的 DB2 for Linux, UNIX,
and Windows 版本
请参阅 参考资料 部分,了解软件相关的下载信息。
在本文的所有示例中,我们将使用一个名为 GSDB 的示例数据库,它包含一家名为
Great Outdoors 公司的虚构的户外设备销售商的示例数据。在继续阅读本文之前,请创建 GSDB
数据库(请参阅 参考资料,了解相关的下载信息)。如果希望使用您自己的现有数据库,请记住,在引用本文中的示例时,使用您的数据库名称代替
GSDB。
要成功地完成增量备份或 delta 备份,数据库必须处于归档日志模式,这意味着必须将
TRACKMOD 数据库参数设置为 YES。请参阅 参考资料,获取将 TRACKMOD 参数设置为 YES
的帮助。
在您的机器上创建一个目录,将它作为保存备份的位置。本文使用 /home/db2inst1/Desktop/BACKUPS
目录作为将保存备份的位置。确保用于完成本文中的示例的目录是真实存在的。
BM 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 备份的信息,将它们合并到一个新的完整合并备份中。然后,这个新的完整合并备份可由 db2ckbkp
和 restore 实用程序像常规 DB2 完全备份一样处理。新的合并备份也可用于未来的后续合并,以及增量或
delta 备份,这消除了定期执行 DB2 完全备份的需求。
图 1. 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 备份
日志文件:日志包含自上一次备份以来您能够还原的所有事务。
控制文件
控制文件是一个简单的 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
完全备份后,无需再次创建另一个完全备份。
如果尚未启动 DB2,请打开 DB2 命令提示符并启动它。要启动 DB2,可以发出以下命令:
运行 DB2 TERMINATE 命令来断开已存在的任何数据库连接。
最后,执行 BACKUP 命令来创建您的 GSDB 数据库备份。
db2 backup db gsdb to /home/db2inst1/Desktop/MBK/BACKUPS compress without prompting |
请记住,使用您希望用来存储备份的机器上的某个现有目录。
在完成备份操作时,终端将显式创建备份映像时的时间戳。记下该时间戳,因为本文后面会引用它。图
4 显示了输出。
图 4. 创建 DB2 完全备份终端输出
通过检查您指定用来保存备份的目录位置,可以检查完全备份是否已创建。在创建备份时,应该看到创建了一个新文件,可在输出中看到它的时间戳是文件名的一部分。
图 5. 查看备份的文件浏览器
如果备份没有成功完成,可检查您输入的命令信息是否正确。
请注意,您提供了最初的完全备份作为基准,现在您可以开始使用 DB2 支持的任何其他类型的备份(包括使用
DB2 Merge Backup 创建的合并备份)来创建合并备份。
模拟对数据库的更改
要捕获自初始备份以来对数据库执行的所有更改,需要模拟对数据库的一些更改。本节将介绍为
GSDB 数据库创建一些更改的过程。
如果未使用建议的示例数据库 GSDB,则需要模拟对您用于本文的数据库的一些更改。可以模拟一些简单更改,比如向一个表中添加一个新条目,创建一个新表或更新一个条目,这样就可以捕获自完全备份以来执行的一些更改。
以下查询会将 GSDB 数据库的 GOSALESCT 模式的 CUSTOMER_ORDER_DETAIL
表的客户数量增加 1。
在 DB2 命令提示符下,创建与 GSDB 数据库的连接。要连接到 GSDB
数据库,请输入以下命令:
接下来,必须使用以下查询将客户数量增加 1:
db2 update gosalesct.cust_order_detail set cust_quantity = cust_quantity + 1; |
将您的更改提交给数据库。
终止您创建的与 GSDB 的数据库连接。
图 6 显示了这个过程。
图 6. 对数据库执行更改
现在,delta 备份已捕获了对 GSDB 数据库执行的所有更改。
创建 delta 备份
现在已经可以创建 delta 备份,以便在下一节中使用它来创建合并备份。此备份仅捕获自上一次完全备份以来对数据库执行的更改。
仍然在 DB2 命令提示符下,键入以下信息:
该命令应写出到一行上。
等待命令完成执行;您会在终端看到一条成功消息。终端输出还会显示一个时间戳,您需要记下该时间戳。图
7 显示了 delta 备份输出。
图 7. Delta 备份输出
如果没有成功完成该命令,请确保您键入了正确的信息。
我们假设完全备份和 delta 备份都已实际创建。
使用一个文件浏览器窗口,导航到您指定用来保存备份的位置。在本例中,该目录为
/home/db2inst1/Desktop/MBK/BACKUPS。
现在有两个文件:一个完全备份和一个 delta 备份。图 8 显示了包含两个备份的文件浏览器窗口。
图 8. 用于检查备份的文件浏览器
请注意,您的备份的文件名看起来有些类似;这不是巧合。DB2 备份文件名由一些串联的元素组成,这些元素使用句点分开。一般规则是:
DB_alias.Type.Inst_name.DBPARTnnn.timestamp.Seq_num |
其中
1、DB_alias 是数据库别名,在本例中用 GSDB 显示。
2、Type 指操作的类型。在这里它显示为 0,这表明这是一个数据库级操作。
3、Inst_name 是数据库实例的名称。在本例中,DB2 实例名为
db2inst1。
4、DBPARTnnn 表示数据库分区编号。因为在示例环境中 GSDB
数据库只有一个分区,所以结果显示为 DBPART000。
5、timestamp 也是文件名的一部分。您看到的每个时间戳都与一个文件匹配,最新的日期属于
delta 备份。
6、Seq_num 是为该文件提供的一个序列号。此示例表明,两个文件都具有序列号
001。
您还可以明显地看出这两个文件的大小差异,完全备份文件是两个中较大的那个。
创建一个完整合并备份
本文的目的是展示如何通过创建控制文件来创建一个合并备份。下一节将介绍如何创建一个控制文件,将完全备份与
delta 备份合并在一起。尽管无需使用控制文件即可创建合并备份,但建议对较为复杂的任务使用控制文件。
1、要创建控制文件,可打开一个新的空白文本文档,将它保存为 merge.ctl。以下是完成的控制文件。
MERGE database gsdb
OUTPUT to “/home/db2inst1/Desktop/MBK/BACKUPS”
compress yes
|
这个文件将要执行的操作是创建一个新的合并文件,其中包含自 GSDB 数据库的上一次完整合并备份或初始定期完全备份以来创建的所有
delta 或增量备份。
2、以下是创建控制文件的内容的各个步骤。
首先从 MERGE 子句开始。在您新创建的控制文件中,键入以下内容:
接下来,在您的控制文件中,您可能希望提供一个位置来保存将要创建的新合并备份。这可以使用
OUTPUT 子句完成。在您的控制文件中,在一个新行上为 OUTPUT 子句编写以下代码:
OUTPUT to “/home/db2inst1/Desktop/MBK/BACKUPS” |
在一个新行上,编写代码来压缩合并备份。在控制文件中,键入以下内容:
这使用默认的 DB2 压缩库来减少备份的大小。
3、保存您对控制文件执行的所有更改并关闭它。
4、从 DB2 命令行更改保存控制文件的目录。
5、在 DB2 命令窗口中键入以下命令来执行控制文件:
等待合并完成。您将在终端看到合并的输出信息。我们看到输出中提供了您刚完成的合并的信息。图
9 显示了输出。
图 9. 合并备份输出
控制文件的内容显示在输出顶部。显示了合并的开始和结束时间,以及合并过程的持续时间。您还会看到合并中涉及的备份信息(它们按时间戳顺序列出)。要准确找出涉及到哪些备份,请查阅您在创建备份时记下的时间戳。记下合并备份的时间戳,因为在下一节中调用
db2ckbkp 实用程序时会用到该值。
回顾历史
DB2 Merge Backup 使用历史文件来确定备份列表。您可以使用
db2 list history 命令确定如何向历史文件注册合并备份。
在命令提示符下输入以下命令来检索数据库备份历史:
db2 list history backup all for GSDB |
系统会列出关于您创建的 3 个备份的信息。例如,图 10(查看 大图)显示了来自
list history 命令的输出的结尾部分;详细信息是属于合并备份的。您可能想知道如何确定图 10
中的信息属于合并备份。答案是,它在表的操作类型 (OP) 列中使用 M 表示。您还可以匹配时间戳。
图 10. 合并备份的历史细节
使用 list history 命令后,列出了大量与您的备份相关的信息。在输出中可以找到有关某个备份的详细信息(比如操作类型、备份类型、备份的时间戳和备份的位置)。
表 1 总结了您可在恢复历史文件过程中找到的操作和操作类型的不同值。
类型
|
描述 |
F
|
完全离线
|
M
|
合并
|
B
|
备份
|
N
|
在线
|
I
|
增量离线
|
O |
增量在线
|
D |
Delta
离线 |
E
|
Delta
离线
|
R |
重新构建
|
表 1. 操作类型
使用 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 输出
看看输出中还显示了哪些与备份相关的信息。
请注意,在输出中,可确定映像类型为合并备份,因为 Merge Backup
Image 中显示了 1。如果这是一个传统备份,您将看到 0。
图 13. db2ckbkp 输出细节
结束语
本文介绍了如何使用 DB2 Merge Backup 实用程序将多个备份组合到一个完整备份中。您还学习了如何使用
db2ckbkp 实用程序验证此备份可很好地用于还原。
您可看到在真实环境中使用 DB2 Merge Backup 的价值,因为它使您能够拥有用于恢复的最新的一致备份。该工具的价值在于,它虽然没有节省创建实际备份的时间,而它能够提供一个可更频繁地执行的备份,使您能够以更快的速度执行恢复。同样地,您并不需要真正再次创建完全备份,因为这些
DB2 Merge Backup 是真正的 DB2 完全备份副本,它们已在 DB2 历史文件中注册,并且获得了与其他任何
DB2 备份文件相同的待遇。在生产环境中使用 DB2 Merge Backup 有助于减少宕机成本和 DBA
劳动,实施对生产影响最小但提供了必要的恢复资产的备份战略。
|