天天看点

DB2 HADR安装与配置案例(ZT)

学了好长时间 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