设为首页 收藏本站
查看: 921|回复: 0

[经验分享] db2分区数据库的备份和恢复

[复制链接]

尚未签到

发表于 2016-11-16 05:19:35 | 显示全部楼层 |阅读模式
在工作中,对数据库经常要进行备份和恢复,在项目,2012年1月,由于某种原因,其中一台DB2 数据库备机上每天定时前滚日志的任务执行没达到预期目的,经过分析,发现原因在于编目节点(0节点的日志不连续。丢失的日志并不容易找回来,所以我们就需要利用原有备份文件进行恢复。
        根据项目的实际情况,主要介绍的是实现DB2 分区数据库备份与恢复的实际操作操作,其中主要包括对分区数据库的备份操作,对分区数据库的恢复操作以及对分区数据库的前滚操作等内容的详细描述  。
  利用此次恢复分区数据库,说明如何对启用了前滚恢复模式的 DB2 分区数据库,正确地利用 BACKUP/RESTORE/ROLLFORWARD 等命令进行备份,恢复以及带 OVERFLOW 项的前滚操作  。
  对于 DB2 的分区数据库,某些直接发出的 DB2 命令只作用于当前一个分区,备份和恢复(BACKUP/RESTORE就属于这一类命令  。但是对于硬盘数据恢复分区数据库,由于同一数据库的数据分布在多个分区上,则对它的备份和恢复操作就要考虑到各分区上数据的完整及同步问题,因此可以在 DB2 命令前加上 db2_all 命令,以便 DB2 命令在数据库的各个分区上被执行,而无需分别对每个分区重复发出相同的命令  。例如:db2_all "db2 backup db sample online" 。
  另外在 DB2 中,启用了前滚数据恢复模式的数据库,使用的是归档日志方式,而非缺省的循环日志方式  。这样,在进行恢复操作时,可在利用 RESTORE 命令恢复了数据库或表空间的备份后,再通过前滚命令(ROLLFORWARD命令前滚归档日志中的事务,恢复数据库备份时间点之后提交的事务,最大程度的保护数据库的数据  。
该数据库创建在一台服务器上,4个分区都在同一台服务器上,其编目分区为0号分区  。
对分区数据库的备份操作
  前面已经介绍了,备份操作仅作用于DB2 分区数据库的当前分区,所以要使用“db2_all”的命令实现对所分区进行备份(这里使用联机备份方式,即:
db2_all "|| db2 backup db smp_db online to /dbbackup/online/smp  compress";     
对分区硬盘数据并行压缩备份,分区数据库的备份结束后会为每个分区都产生一个备份映象文件  :
SMP_DB.0.SMPadmin.NODE0000.CATN0000.20120129170009.001
SMP_DB.0.SMPadmin.NODE0002.CATN0000.20120129170009.001
SMP_DB.0.SMPadmin.NODE0001.CATN0000.20120129170009.001
SMP_DB.0.SMPadmin.NODE0003.CATN0000.20120129170009.001
  分区间以并行方式进行的方法:
  <<+分区号< :表示后续命令作用于该分区  。
  <<-分区号< :表示后续命令作用于除该分区之外的其它分区  。
  ||<<-分区号< 或 <<-分区号; :表示后续命令作用数据恢复于除该分区之外的其它分区,并且是以并行方式进行的  。
 对分区数据库的恢复操作
  由于备份和恢复操作都只作用于当前数据库分区,因此也可分为串行和并行的方式  。
    这里我们先在恢复编目分区的数据库,然后并行恢复其他个分区的数据库,由于数据库比较大,磁盘性能低,所以一共耗时30个小时左右。
$db2_all "<<+0< db2 restore db smp_db from /dbbackup/online/smp  replace existing without prompting";
$db2_all "||<<-0< db2 restore db smp_db from /dbbackup/online/smp replace existing without prompting";
$db2 list utilities show detail  在恢复数据库的时候,可以使用命令监控数据库的恢复情况,输出如下:
   db2inst1:[/home/db2inst1]$db2 list utilities show detail
ID                               = 33
Type                             = RESTORE
Database Name                    = SMP_DB
Partition Number                 = 1
Description                      = db
Start Time                       = 02/08/2012 09:16:37.176322
Progress Monitoring:
      Completed Work             = 13094539264 bytes
      Start Time                 = 02/08/2012 09:16:37.176325

ID                               = 33
Type                             = RESTORE
Database Name                    = SMP_DB
Partition Number                 = 2
Description                      = db
Start Time                       = 02/08/2012 09:16:37.221974
Progress Monitoring:
      Completed Work             = 13038579712 bytes
      Start Time                 = 02/08/2012 09:16:37.221977

ID                               = 33
Type                             = RESTORE
Database Name                    = SMP_DB
Partition Number                 = 3
Description                      = db
Start Time                       = 02/08/2012 09:16:37.249874
Progress Monitoring:
      Completed Work             = 13102170112 bytes
      Start Time                 = 02/08/2012 09:16:37.249876
经过监控发现恢复进度很慢,通过topas监控一下发现磁盘非常忙
   
  由于我们使用的备份映象文件是通过联机备份产生的,因此在恢复操作结束后,数据库将处于前滚暂挂状态,必须通过前滚操作前滚归档日志,以取消前滚暂挂状态,使数据库最终可用  。此次,我们需要前滚数据库,但是不取消前滚暂挂状态。
对分区数据库的前滚操作
  由于备机上数据库 SMP_DB 的日志路径下不包含源 生产机SMP_DB 数据库日志路径下的归档日志文件,所以在前滚操作之前,需要将 生产机SMP_DB 的归档日志文件复制到一个特定的路径下,然后在发出前滚命令时,使用 OVERFLOW 项来指定该路径,以替代 SMP_DB 的数据恢复日志路径来提供前滚操作要使用的归档日志文件  。
  这里假设将各分区的归档日志文件对应复制到 /dbbackup/log_smp/archive/smp_db 下,因前滚命令仅可在编目分区上执行,所以在编目分区上前滚到日硬盘数据恢复志文件尾并结束前滚状态的命令应写为:
db2 "rollforward db smp_db  to end of logs on all dbpartitionnums overflow log path
(/dbbackup/log_smp/archive/smp_db/NODE0000,
/dbbackup/log_smp/archive/smp_db/NODE0001 on dbpartitionnum 1,
/dbbackup/log_smp/archive/smp_db/NODE0002 on dbpartitionnum 2,
/dbbackup/log_smp/archive/smp_db/NODE0003 on dbpartitionnum 3)"
  注:对于0号分区,在 OVERFLOW 项中不能使用“on dbpartitionnum 0”的子句,否则会遇到:SQL0104N An unexpected token "on" was found following "<identifier>". Expected tokens may include: ")". SQLSTATE=42601 的报错,表明命令语法不正确  。
监控日志前滚状态
$db2 list utilities show detail
ID                               = 35
Type                             = ROLLFORWARD RECOVERY
Database Name                    = SMP_DB
Partition Number                 = 0
Description                      = Database Rollforward Recovery
Start Time                       = 02/09/2012 14:20:37.599683
Progress Monitoring:
   Phase Number                  = 1
      Description                = Forward
      Total Work                 = 0 bytes
      Completed Work             = 0 bytes
      Start Time                 = 02/09/2012 14:20:37.599686
   Phase Number [Current]        = 2
      Description                = Backward
      Total Work                 = 0 bytes
      Completed Work             = 0 bytes
      Start Time                 = 02/09/2012 14:20:37.851088

ID                               = 35
Type                             = ROLLFORWARD RECOVERY
Database Name                    = SMP_DB
Partition Number                 = 1
Description                      = Database Rollforward Recovery
Start Time                       = 02/09/2012 14:20:37.974493
Progress Monitoring:
   Estimated Percentage Complete = 100
   Phase Number                  = 1
      Description                = Forward
      Total Work                 = 917504901 bytes
      Completed Work             = 917504901 bytes
      Start Time                 = 02/09/2012 14:20:37.974496
   Phase Number [Current]        = 2
      Description                = Backward
      Total Work                 = 0 bytes
      Completed Work             = 0 bytes
      Start Time                 = 02/09/2012 14:29:35.164973

ID                               = 35
Type                             = ROLLFORWARD RECOVERY
Database Name                    = SMP_DB
Partition Number                 = 2
Description                      = Database Rollforward Recovery
Start Time                       = 02/09/2012 14:20:38.088695
Progress Monitoring:
   Estimated Percentage Complete = 100
   Phase Number                  = 1
      Description

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-300818-1-1.html 上篇帖子: DB2 里面暂时禁用触发器 下篇帖子: DB2 OLAP函数的使用(转)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表