联系我们 关于我们 联系电话:18613081114

技术支持

介绍

不少同行的朋友都遇到过,DB2数据库在线备份命令提交后,至少需要经过数秒甚至是几分钟后才能通过db2pd -util / LIST UTILITES,才能看到DB2数据库的开始执行。这是什么原因呢? 专业的事

看了又看
联系我们
  • 广州鑫瑞信息科技有限公司

  • 客服热线:18613081114
  • 客服QQ:3297418313
  • 公司座机:020-34037185
  • 地址:广州市海珠区广州大道南880和平商务中心北塔1613
技术支持 当前位置:首页 > 技术支持 >
DB2数据库维护分享--为什么在线备份启动时有时候比较慢??
  • 时间:2018-09-16 22:48
  • 编辑:admin
  • 点击:





不少同行的朋友都遇到过,DB2数据库在线备份命令提交后,至少需要经过数秒甚至是几分钟后才能通过db2pd -util / LIST UTILITES,才能看到DB2数据库的开始执行。这是什么原因呢?
专业的事情交给专业的人来做,广州今祺信息,是您身边专业的技术小伙伴,专业提供数据库迁移,数据库备份等数据库方面的技术问题,欢迎有需要的朋友来电咨询
回到本文,DB2工程师大大,就来抽丝剥茧的解决这个DB2的小问题。

原因

在线备份启动阶段需要刷脏页到磁盘。只有当脏页被刷到磁盘后,备份才真正开始读容器并创建备份影像。 如果启动在线备份时缓冲池里面有大量的脏页,那么启动阶段会比较慢,因为把这些脏页刷到磁盘需要一定时间。

诊断问题

在启动阶段,对应的协调EDU (db2agent)需要调用方法sqlbFlush执行IO刷脏页,其stack大致如下:

pwrite64
sqloseekwrite64
sqloWriteBlocks
sqlbWritePageToDisk
sqlbWritePage
sqlbProcessDStack
sqlbFlushForDLSubset
sqlbFlush
sqlubInitAgentCB
sqlubcka
sqlubcka_route_in
sqlerKnownProcedure

从io监控工具(比如 iostat),你应该能观察到对应表空间的容器所在磁盘有大量的磁盘写操作。你可以通过下面的方法监控刷脏页的进度:

$ db2pd -db <db_name> -dirtypages summary

解决问题

在线备份意味着备份发生时,数据库上还有未提交的交易,也有未刷到磁盘的脏页, 所以,在数据库被restore后并不能立即被连接,还需要rolled forward到某个数据一致的时间点,而Rollfoward的起始位置(即日志记录)又下面两个LSN的较小值决定:

lowTransLsn: 最早未提交transaction的LSN

- minbuflsn: 最早的脏页的page LSN

在线备份起始阶段刷脏页就是为了提高minbuflsn。 启动在线备份时,如果minbuflsn < lowTransLsn,那么刷脏页有助于减少备份影像需要包含的日志文件的个数,同时也有助于缩短restore后Rollfoward的时间。

如果在线备份启动阶段延续了太长时间(比如说超过几分钟),那么意味着写磁盘操作存在性能瓶颈,或者页清理(page cleaning)效率上有问题。对于后一种情况,可以考虑使用DB2_USE_ALTERNATE_PAGE_CLEANING或者调整CHNGPGS_THRESH值。



上一篇:重装上阵!!全球知名硬盘生产商西数一举公布多款产品:服务器硬盘,存储卡

下一篇:备份系统建设中常会遭遇的四个误区、六个错误、八个难点还有技术路线选型分析