学了好长时间DB2了,写一些关于db2这个HADR组件的功能吧。HADR是high availability disaster recovery的简写。组成HADR,需要一对机器(DB2并没有支持多个从机,是因为这样会给系统的管理带来很大麻烦),一个主机(primary),一个从机(secondary)。从高可用性上来讲,当主机发生故障时,从机可以很快的接替主机工作,可以减少数据库的故障时间;从灾难恢复上来讲,如果主机由于不可预测的灾难发生了故障,远程的从机数据不受任何影响,可以保证数据不会丢失。
这样做,缺点也是很明显的,就是客户需要承担一个额外的数据库服务器的费用。从v97fp1开始,DB2 HADR开始支持ROS(read on standby)。从这个版本开始,从机开始支持读操作,客户的读操作可以使用从机完成,减少主机的负载,提高系统的系能。这样,客户就不必担心额外的费用了。
现在,写一下HADR配置的过程吧,前提是大家已经安装了db2。大家其实可以从google上搜索到很多关于这个话题的文章,但是我还是决定写一下,希望给大家多一个参考。
首先,说明几个需要注意的问题:
(1). HADR pair不可以使用circular logging。大家可以参照db2 infocenter,阅读以下DB2的log方式
(2). HADR的从机是由主机的备份镜像恢复而成的
(3). 启动HADR的时候应该首先启动standby,然后在启动primary
(4). Standby和Primary上和HADR相关的参数一定要一致,否则会在系统握手校验的时候失败
现在我们假设HADR Pair部署在主机hostp和从机hosts上
第一步,分别在主机和从机上创建数据库:
db2 create db hadrdb
第二步,设置主数据库配置参数:
db2 update db cfg for hadrdb using logretain on
db2 update db cfg for hadrdb using trackmod on
db2 update db cfg for hadrdb using logindexbuild on
db2 update db cfg for hadrdb using indexrec restart
db2 update db cfg for hadrdb using HADR_LOCAL_HOST hostp
db2 update db cfg for hadrdb using HADR_LOCAL_SVC 54321
db2 update db cfg for hadrdb using HADR_REMOTE_HOST hosts
db2 update db cfg for hadrdb using HADR_REMOTE_SVC 54321
db2 update db cfg for hadrdb using HADR_REMOTE_INST db2inst1
db2 update db cfg for hadrdb using HADR_TIMEOUT 120
db2 update db cfg for hadrdb using HADR_PEER_WINDOW 10
db2 update db cfg for hadrdb using HADR_SYNCMODE sync
第三步,备份主数据库,生成一个备份文件
db2 backup db hadrdb
这里需要注意一下,如果你是第一次将日志的方式设置为retain方式,这次备份会使数据库跳出backup pending方式。当从数据库恢复时,不要使用这个备份文件,而是需要重新备份一次,使用第二次备份的文件。假设文件名是:HADRDB.0.sfbao.NODE0000.CATN0000.20091116071458.001
第四步,将刚才备份的数据库日志文件拷贝到一个从机可以使用的文件系统里面
第五步,在从数据库上恢复数据库:
db2 restore db hadrdb from HADRDB.0.sfbao.NODE0000.CATN0000.20091116071458.001
第六步,配置从数据库的参数:
db2 update db cfg for hadrdb using logretain on
db2 update db cfg for hadrdb using trackmod on
db2 update db cfg for hadrdb using logindexbuild on
db2 update db cfg for hadrdb using indexrec restart
db2 update db cfg for hadrdb using HADR_LOCAL_HOST hosts
db2 update db cfg for hadrdb using HADR_LOCAL_SVC 54321
db2 update db cfg for hadrdb using HADR_REMOTE_HOST hostp
db2 update db cfg for hadrdb using HADR_REMOTE_SVC 54321
db2 update db cfg for hadrdb using HADR_REMOTE_INST db2isnt1
db2 update db cfg for hadrdb using HADR_TIMEOUT 120
db2 update db cfg for hadrdb using HADR_PEER_WINDOW 10
db2 update db cfg for hadrdb using HADR_SYNCMODE sync
其实,对于这一步,你只要更新HADR_LOCAL_HOST和HADR_REMOTE_HOST就可以了,因为其他的参数在restore db的时候都会恢复出来。
第七步,启动从数据库:
db2 start hadr on db hadrdb as standby
第八步,启动主数据库:
db2 start hadr on db hadrdb as primary
到这里,一个HADR Pair就配置好了。笔记本快没电了,以后在写其它的。
计划下一次写一下和HADR和DB2 HA结合使用。