网络通信 频道

IBM DB2的数据备份和恢复

本文首先详细地介绍IBM DB2的数据备份和数据恢复工具,向读者展示IBM DB2的数据备份和数据恢复方法。同时还分析IBM DB2的数据备份和数据恢复性能方面的问题,以期能对读者很好地利用IBM DB2快速高效地完成数据备份和恢复工作有所裨益。
IBM DB2数据库具有出众的跨平台开放性和可扩展性,它支持当前流行的主要操作平台;IBM DB2数据库具有良好的可移植性,能够支持其它主流的数据库,如Oracle、SyBase、Informix等数据库都可以很容易地移植到DB2数据库中;IBM DB2数据库对海量数据的管理更是十分出色,它允许数据库系统自己管理外存来提高效率,同时提供export、import、load等工具方便数据的快速移动,并提供了强大的backup、restore工具,方便DB2系统管理员创建安全的备份,建立恢复程序及执行快速、准确的恢复。
相信我们都知道,维护企业数据的安全和完整是每个数据库管理员的核心任务,而其中数据的及时备份和恢复又起着核心的作用。本文我们就IBM DB2强大的backup和restore工具做一下详细的介绍,相信能够对DB2系统管理员的日常数据管理有所帮助。

backup工具

backup用于DB2数据库的数据备份操作,当你要对数据库进行备份工作时,你首先要具有sysadm、sysctrl或者sysmaint的权限。
DB2采用的数据存储策略在逻辑上分为三级:数据存储在表(table)中,表存储在表空间(tablespace)中,表空间存储在数据库(database)中,一个数据库可以包含多个表空间,一个表空间可以包含多个表。因此,DB2的数据备份可以在数据库和表空间两个级别上进行。
我们可以在命令中心、命令行处理器或者命令窗口中用backup命令来完成数据备份操作,其具体语法为:
DB2 disconnect alias;
DB2 backup database alias;
例如,本例中系统的数据库别名(alias)为edbase,所以其备份命令为:
DB2 disconnect edbase;
DB2 backup database edbase;
其中第一条语句用来断开数据库与所有应用程序的连接,第二条语句执行backup操作,备份后可以在系统中的缺省目录(例如,本例中该目录是D:IBMSQLLIB EDBASE.0DB2NODE0000CATN000020030514)下找到备份文件,此目录是由数据库别名alias、instance名、节点名、cat node以及备份年月日组成,而备份文件名是备份的时分秒。同样,DB2也提供了简单方便的图形化用户界面,在控制中心选择目标数据库或者表空间,单击右键选择backup选项,便可以根据备份向导完成备份操作。
作为一款优秀的软件,DB2还支持离线备份(offline backup)和在线备份(online backup)。

offline 数据备份
offline数据备份是指当对数据进行备份时,数据库必须断开与其它程序的连接,此时,数据库中的数据是静止的,且在完成备份工作之前,数据库不会响应应用程序的连接请求。
offline数据备份要求数据库的日志方式是循环日志(circular logging),默认情况下系统采用的是循环日志,因此,默认情况下数据库的备份方式也是offline备份。在特殊情况下我们要求offline备份时,必须修改数据库配置文件(database configure)的日志参数部分,如图1所示:

图1


将LOG_RETAIN参数的值设为“否”。

online数据备份
online数据备份是指当进行数据备份时,数据库仍然保持与应用程序的连接,且在完成数据备份工作的过程中,数据库继续响应其它应用程序的连接请求,因此,数据库中的数据仍在实时更新,显然,online数据备份能够提高系统的并行能力。
当要进行online数据备份时,数据库系统的日志方式一定要是归档日志(archive logging),因此,我们必须对数据库配置文件的日志部分的参数进行修改,将其LOG_RETAIN参数值设为“是”,USER_EXIT参数值设为“是”。

restore工具

restore用于DB2数据库的数据恢复操作,同样,当你要对数据库进行恢复操作时,你应该具有sysadm、sysctrl或者sysmaint权限。
如果进行本机数据恢复,比较简单,我们同样可以在命令中心、命令行处理器或者命令窗口中通过执行restore命令完成,其语法为:
DB2 restore database edbase;
我们也可以运用DB2提供的图形用户界面来方便的完成,由于比较简单,在此我们不作介绍。如果要把备份的数据库恢复到另外一台机器上,就需要几个额外的步骤了,因为目的机器上可能没有源数据库所使用的表空间等环境。因此首先要查看源数据库的表空间结构:
connect to edbase;
list tablespaces ;
对找到的表空间标识(id=0,1,2...)进行以下操作:
list tablespace containers for id;
这样就可以开始恢复工作了,其具体步骤如下:
1)执行命令
restore database edbase redirect
其中redirect参数要求重新映射表空间。
2)对找到的各个表空间依次运行如下的命令:
set tablespace containers for id (path "absolute_container_path" )
如果是文件型表空间则使用如下命令:
set tablespace containers for id (file "absolute_container_filename", page_ number)
其中page_number是页数,其具体的数值可以通过list tablespaces show detail得到。
3)最后运行如下命令:
restore database edbase continue
重新恢复一下数据库。
有必要说明的是数据恢复在数据库(database)级和表空间(tablespace)级对数据库处理应用程序的连接会产生不同的影响。当对整个数据库进行恢复操作的时候,它要求数据库必须断开与其它应用程序的连接,在进行数据恢复的过程中,数据库将不会响应其它应用程序的连接请求;当进行表空间级的数据恢复时,数据库允许应用程序访问其它的表空间。

在backup/restore时的性能考虑

为了数据的安全,我们需要经常的对数据进行备份和恢复操作,而经常的数据备份和数据恢复在数据量较大的情况下将会严重影响数据库的性能,降低工作效率,因此我们在数据备份和恢复的时候,还得采取一定的策略,以达到高效的目的。
考虑表空间级的数据备份和恢复操作

图2


对于LOB(large objects)数据,在进行数据库的创建时,一般应放在单独的表空间中。由于LOB数据的特性,LOB数据的备份和恢复将会比常规数据占用更多的时间,因此一般情况下我们是不会对LOB数据进行频繁的备份和恢复的,当把LOB数据放在单独的表空间后,我们便可以选择表空间级的操作,备份和恢复重要数据时,跳过对LOB数据的备份和恢复,当系统空闲的时候,再对存储LOB数据的表空间进行备份和恢复操作。
对于需要频繁备份和恢复的数据,我们可以将它们放在磁盘访问速度快的表空间中,这样对此部分数据的备份和恢复操作时也将会大大减少机时,提高工作效率。
考虑buffer 的大小和并行度
在数据备份的时候,我们可以通过给并行度、缓冲区数目和缓冲区大小适当的值来提高备份的性能。如下图所示(如图2)。
增加并行度和缓冲区的数目,提高缓冲区的大小,将会提高数据备份的性能,但是对整个计算机硬件系统也将会有更高的要求。必须注意的是,当没有足够的内存分配给缓冲区时,数据备份将无法进行,系统会显示错误,理想的缓冲区大小应该是内存的整数倍(该值可以在数据库配置文件中的DFT_EXTENT_SZ找到),而理想的缓冲区数目应该至少是I/O缓冲区数目的两倍。对于数据的恢复我们也应有同样的考虑。

文章转载地址:http://www.365master.com/kt_article_show.php?article_id=57&categ_code=10041003

0
相关文章