DB2数据库在线备份还原笔记数据库
数据库在线增量备份
ide
因为通常客户的生产系统数据量都很大,因此频繁的进行数据库或表空间的全量备份在空间存储上变得不可行。DB2 支持两种增量的备份,一种是增量备份(comulative backup),另外一种是差别备份(deltabackup).总的说来,增量的备份(包括增量备份和差别备份),在其备份映像文件中只包含自上次进行备份以来有过更新的页,除更新的数据和索引页以外,每一个增量备份映像还包含一般存储在彻底备份映像中的初始数据库元数据(例如,数据库配置、表空间定义和数据库历史记录等)。增量备份和差别备份的区别在于无所谓的上次备份的类型不一样,好比增量备份只备份自上次全备之后发生过变化的页,而差别备份则备份自上次任何中备份(多是全量备份、增量备份、差别备份)以来的变化。测试
若要对数据库增量备份须要打开数据库的TRACKMOD配置参数,也就是把其值改为on,默认是off。当此参数值设置为on时,数据库管理器跟踪数据库修订,以便backup实用程序能够检测到数据库页的那些子集必须经过增量备份来检查并可能包括在备份映像中。spa
建立数据库:rest
db2 create db mydb using codeset GB2312 territory CN pagesize 8192日志
建立数据库表:code
db2 "create table t1(id integer,name varchar(10))"
orm
插入内容:索引
db2 "insert into db2inst1.t1 values(1,'a')"
ci
开启归档模式:
db2 update database configuration for mydb using logarchmeth1 DISK:/home/db2inst1/logs/
开启增量备份模式:
db2 update database configuration for mydb using trackmod on //启用增量备份功能
db2 get db cfg for mydb |grep -i trackmod //查看是否开启增量模式
#db2stop force
#db2start
//修改配置参数后重启数据库方可生效。
#db2 backup db mydb to /home/db2inst1/backup //开始上面参数后,数据库处于backup pending状态,要求作数据库的离线备份,不然会提示SQL1116N错误。
联机全量备份数据库:
$ mkdir online
$cd online/
$ db2 backup db mydb online include logs
db2 backup db mydb online to /home/db2inst1/backup/online/ include logs
插入测试表:
执行增量备份:
db2 backup db mydb online incremental include logs //增量备份的命令
db2 backup db mydb online incremental to /home/db2inst1/online/ include logs //指定备份文件存放目录。
db2 backup db mydb online incremental delta include logs //差别备份
再次插入测试表内容:
db2 "insert into db2inst1.t2 values(4,'d')"
[db2inst1@zxt-02 online]$ db2 backup db mydb online incremental to /home/db2inst1/online/ include logs
再次执行增量备份:
注:(也可为差别备份效果同样)
若是想查看数据库的历史备份还原状况,可使用 带有 db2 list history backup all 命令,对于备份映像信息来讲,类型N表明在线全备,O 表明在线增量备份,E表明在线差别备份,类型F表明脱机全备,I表明脱机增量备份,D表明投机差别备份。
在线增量还原:
假如备份映像有N个,通常会执行N+1次复原才能完成整个复原操做。在手工还原期间,用户必须对复原涉及的每一个映像手工发出还原命令,按照如下顺序完成此操做:最后一个、第一个、第二个、第三个以此类推,而且包括最后一个映像(即:再次执行还原最后一个)。
首先对最后一个备份映像执行复原操做,经过使用restore database命令的taken at timestamp 选项来指定目标映像。首先进入到/home/db2inst1/db2inst1/NODE0000/SQL00001/SQLOGDIR/中,此路径是示例数据库mydb的活动日志目录。在此目录下,删除全部的日志文件。注意,生产系统不能删除活动日志,不然数据库会宕机。本示例是为了演示如何还原数据库,删除日志后随即执行还原,为了更清晰的看到如何利用备份文件中的日志进行还原,故删除了之前的活动日志。经过 restore database 命令进行复原,具体操做以下。
手工增量还原第一步:
db2 restore db mydb incremental taken at 20151023140237 logtarget /home/db2inst1/db2inst1/NODE0000/SQL00001/SQLOGDIR/
手工增量还原第二步:
db2 restore db mydb incremental taken at 20151023134213 logtarget /home/db2inst1/db2inst1/NODE0000/SQL00001/SQLOGDIR/
手工增量还原第三步:
db2 restore db mydb incremental taken at 20151023135526 logtarget /home/db2inst1/db2inst1/NODE0000/SQL00001/SQLOGDIR/
手工增量还原第四步:
db2 restore db mydb incremental taken at 20151023140237 logtarget /home/db2inst1/db2inst1/NODE0000/SQL00001/SQLOGDIR/
还原完成,进行回滚:
db2 rollforward db mydb to end of logs and stop
db2 "rollforward db mydb to end of logs and stop overflow log path(/home/db2inst1/log)" //指定日志释放目录
注意:回滚时若数据库活动日志目录中还存在日志数据库还原程序会滚动到最新的日志日期。
db2 restore db mydb logs incremental taken at 20151023134213 logtarget /home/db2inst1/db2inst1/NODE0000/SQL00001/SQLOGDIR/ //从备份文件中提取数据库日志文件。
至此还原完成。
在线自动增量还原
若是在还原时指定AUTOMATIC选项,则将对数据库进行自动还原工做。只要执行一次还原操做就能够了,其实是数据库管理器自动完成了像手工还原数据库的那些操做。对于自动增量还原,只在指定要使用的目标映像(最后一个映像)时发出带AUTOMATIC选项的RESTORE命令一次。而后DB2使用数据库历史记录来肯定余下的必需备份映像并还原它们。
首先进入示例数据库的活动日志目录。在此目录下,删除全部对的日志文件。注意,生产系统不能删除活动日志,不然数据库会宕机。本示例是为了演示如何还原数据库,删除日志后随即执行还原,为了更清晰的看到如何利用备份文件中的日志进行还原,故删除了之前的活动日志。
先对最后一个增量备份映像(时间戳 )进行还原操做,经过使用RESETORE DATABASE 命令的TAKEN AT TIMESTAMP选项来指定目标映像,并使用INCREMENTAL AUTOMATIC 选项来进行自动增量还原。
方式一:
db2 restore db mydb incremental automatic taken at 20151023140237 //自动还原增量备份文件
至此还原工做已经完成,接下来须要对示例数据库进行前滚恢复操做。为了进行前滚恢复,须要从每一个个备份映像中分别恢复日志文件。 能够用还原命令选择只还原保存在备份映像中的日志文件。要执行此操做,可使用RESTORE DATABASE 命令的 LOGTARGET选项指定LOGS选项。以此方式还原日志文件时若是还原操做遇到任何问题,则还原操做失败并返回错误。
db2 restore db mydb logs incremental taken at 20151023134213 logtarget /home/db2inst1/db2inst1/NODE0000/SQL00001/SQLOGDIR/ //从备份文件中提取数据库日志文件。
前滚日志:
db2 rollforward db mydb to end of logs and stop
方法二:
db2 restore db mydb incremental automatic from /home/db2inst1/backup/online/ taken at 20151030133636 logtarget /home/db2inst1/db2inst1/NODE0000/SQL00001/SQLOGDIR/
//使用此命令可直接自动还原增量备份到指定时间点,不须要单独提取每一个备份映像中的数据库日志来作回滚,直接回滚便可。
前滚日志:
db2 rollforward db mydb to end of logs and stop