DB2数据库在线备份还原笔记

数据库在线增量备份

   由于一般客户的生产系统数据量都很大,所以频繁的进行数据库或表空间的全量备份在空间存储上变得不可行。DB2 支持两种增量的备份,一种是增量备份(comulative backup),另一种是差异备份(deltabackup).总的说来,增量的备份(包括增量备份和差异备份),在其备份映像文件中只包含自上次进行备份以来有过更新的页,除更新的数据和索引页之外,每个增量备份映像还包含通常存储在完全备份映像中的初始数据库元数据(例如,数据库配置、表空间定义和数据库历史记录等)。增量备份和差异备份的区别在于无所谓的上次备份的类型不同,比如增量备份只备份自上次全备以后发生过变化的页,而差异备份则备份自上次任何中备份(可能是全量备份、增量备份、差异备份)以来的变化。

若要对数据库增量备份需要打开数据库的TRACKMOD配置参数,也就是把其值改成on,默认是off。当此参数值设置为on时,数据库管理器跟踪数据库修订,以便backup实用程序可以检测到数据库页的那些子集必须通过增量备份来检查并可能包括在备份映像中。

创建数据库:

db2 create db mydb using codeset GB2312 territory CN pagesize 8192

创建数据库表:

db2 "create table t1(id integer,name varchar(10))"   

插入内容:

db2 "insert into db2inst1.t1 values(1,‘a‘)"

开启归档模式:

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‘)"

[[email protected] 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

时间: 2024-10-12 22:56:01

DB2数据库在线备份还原笔记的相关文章

吐槽阿里云数据库的备份还原

阿里云数据库RDS备份还原问题终于解决了.我会告诉你其实不用看他们的文档,直接还原就可以了吗? 详情如下: 我严格按照文档操作的,后来数据库启动过几秒后即崩溃,有两个错误,先解决了一个,后来一个用了各种办法都解决不了. 于是只好留言阿里云的客服,我着重强调了严格按照文档,并提交了崩溃信息. 结果客服说,请按文档操作,好吧. 后来看了一下阿里云提供的工具,一个导出脚本居然1M多,我的天,什么脚本这么大.于是看了一下代码,就是个简单的解压操作, 后面塞了一堆二进制,让人以为很高端,其实普通的解压软件

Db2数据库的备份和恢复

DB2数据库备份与恢复 1.    备份 1.1离线备份(必须在数据库所在PC机进行操作) STEP 1 连接到要备份的数据库 C:\Documents and Settings\Administrator>db2 connect to ncc user nccwykpi using nccwykpi STEP 2 显示数据库应用状态 C:\Documents and Settings\Administrator>db2 list applications STEP 3 停掉数据库应用 C:\

mongodb 数据库操作--备份 还原 导出 导入

一,mongodump备份数据库 1,常用命令格 1 mongodump -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -o 文件存在路径 如果没有用户谁,可以去掉-u和-p. 如果导出本机的数据库,可以去掉-h. 如果是默认端口,可以去掉--port. 如果想导出所有数据库,可以去掉-d. 2,导出所有数据库 1 2 3 4 5 6 7 8 9 10 [[email protected] mongodb]# mongodump -h 127.0.0.1 -o /hom

数据库的备份还原

数据库的复制与附加 (一)分离: 1.把SqlServer服务停了,把.mdf和.ldf,ndf复制出来.然后再启动服务. 2.在SQLServer的操作界面中,右击要复制的数据库--所有任务--分离.把.mdf和.ldf,ndf复制出来. (二)附加 在SQLServer对象资源管理器中,在"数据库"上右击--选择"附加"--在弹出的窗口选择要附加.mdf文件,点击确定. 注意:两个文件.mdf和.ldf要有访问权限.Everyone完全控制.     数据库的备

C#中MySQL数据库的备份 还原 初始化

// 执行创建数据库操作 this.GetExecute(G_Con, "create database if not exists NEWDB"); this.sqlAddress = " -h " + IP + " -u" + User + " -p" + Password + " NEWDB "; // 数据库的备份 private void btn_Dump_Click(object sender,

C# MySQL数据库的备份 还原 初始化

// 执行创建数据库操作 this.GetExecute(G_Con, "create database if not exists NEWDB"); this.sqlAddress = " -h " + IP + " -u" + User + " -p" + Password + " NEWDB "; // 数据库的备份 private void btn_Dump_Click(object sender,

xtrabackup在线备份还原(不锁表)

安装配置xtrabackuptar zxvf percona-xtrabackup-2.0.7.tar.gzcd percona-xtrabackup-2.0.7AUTO_DOWNLOAD="yes" ./utils/build.sh 5.5 #5.5表示为数据库5.5版本,如果是5.6版本这里修改成5.6安装完之后,建立软链接# cp /root/soft/percona-xtrabackup-2.0.7/innobackupex /usr/local/mysql_p/bin/inn

mongodb数据库操作--备份 还原 导出 导入

首先数据库备份: mongodump -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -o 文件存在路径  mongodump -h 127.0.0.1 -u admin -p xxx -d blog -o '/home/timeless/桌面/mongodump' --authenticationDatabase admin 注意  --authenticationDatabase  参数制定认证数据库   否则会提示错误: Failed: error connecti

数据库异地备份还原

---备份 USE MASTER GO EXEC sp_configure 'show advanced options', 1; RECONFIGURE WITH OVERRIDE; EXEC sp_configure 'xp_cmdshell', 1; RECONFIGURE WITH OVERRIDE; GO EXEC MASTER ..xp_cmdshell 'net use \\sharef.cn\Share\DataBackup\SQLBackupData01 "password&q