db2V10.1中HADR一主多从搭建


在 HADR 多备机这一新的特性中,备机数据库被分为两类,
一类是主要备机(Principal Standby)
另一类是辅助备机(Auxiliary Standby)
一、目录准备
mkdir -p /home/db2inst1/db2_backup
mkdir -p /home/db2inst1/db2_archive
mkdir -p /home/db2inst1/db2_log
chmod -R 775 /home/db2inst1/db2_backup
chmod -R 775 /home/db2inst1/db2_archive
chmod -R 775 /home/db2inst1/db2_log
chown -R db2inst1:db2inst1 /home/db2inst1/db2_backup
chown -R db2inst1:db2inst1 /home/db2inst1/db2_archive
chown -R db2inst1:db2inst1 /home/db2inst1/db2_log 

目前成都创新互联已为近1000家的企业提供了网站建设、域名、虚拟空间、网站托管维护、企业网站设计、博望网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。


二、设置归档和打开日志重建模式
db2 update db cfg for hadb using logarchmeth2 disk:/home/db2inst1/db2_archive/
db2 update db cfg for hadb using NEWLOGPATH /home/db2inst1/db2_log

三、备份归档
db2 force applications all
db2 backup db hadb to /home/db2inst1/db2_backup/
db2stop force;db2start
db2 archive log for db hadb

三、备份

db2 backup db hadb to /home/db2inst1/db2_backup/
scp /home/db2inst1/db2_backup/HADB.0.db2inst1.DBPART000.20180117141245.001   db2inst1@192.168.12.31:/home/db2inst1/db2_backup/


下面开始配置HADR
1.2.6备份和还原数据
主库离线备份
db2 backup database hadb to /home/db2inst3/

备库还原,
先还原主要主库和辅助备库1,留一个辅助备库2做动态添加用
db2 restore database hadb from "/home/db2inst1/db2_backup/" taken at 20180117141245 replace history file

   
    # 在 M5 上
db2 "UPDATE DB CFG FOR MYDB USING
     HADR_TARGET_LIST  M4:DB2_db2insta_2nd|M3:DB2_db2insta_pri
     HADR_REMOTE_HOST  M3
  HADR_REMOTE_INST  db2insta
     HADR_REMOTE_SVC   DB2_db2insta_pri
     HADR_SYNCMODE     superasync     
     HADR_LOCAL_HOST   M5
     HADR_LOCAL_SVC    DB2_db2insta_3rd "

2.1.1配置主库
db2 "UPDATE DB CFG FOR HADB USING
     HADR_TARGET_LIST  192.168.12.31:55004|192.168.12.33:55005----主要备机ip和端口,辅助备机ip和端口
     HADR_REMOTE_HOST  192.168.12.31-------主要备机ip和端口
     HADR_REMOTE_SVC   55004----主要备机端口
     HADR_SYNCMODE     sync
     HADR_REMOTE_INST  db2inst1-----主要备机实例
     HADR_LOCAL_HOST   192.168.12.30----主机的ip
     HADR_LOCAL_SVC    55003"----主机端口

db2 "UPDATE DB CFG FOR mydb USING
     HADR_TARGET_LIST  192.168.12.31:55004|192.168.12.33:55005
     HADR_REMOTE_HOST  192.168.12.31
     HADR_REMOTE_SVC   55004
     HADR_SYNCMODE     sync
     HADR_REMOTE_INST  db2inst1
     HADR_LOCAL_HOST   192.168.12.30
     HADR_LOCAL_SVC    55003"


2.1.2配置主要备机

# 在 M4 上
 db2 "UPDATE DB CFG FOR MYDB USING
    HADR_TARGET_LIST   M3:DB2_db2insta_pri|M5:DB2_db2insta_3rd
    HADR_REMOTE_HOST   M3
    HADR_REMOTE_INST   db2insta
    HADR_REMOTE_SVC    DB2_db2insta_pri
    HADR_SYNCMODE      sync
    HADR_LOCAL_HOST    M4
    HADR_LOCAL_SVC     DB2_db2insta_2nd "
   


# 在 host2 上
db2 "UPDATE DB CFG FOR HADB USING
    HADR_TARGET_LIST   192.168.12.30:55000|192.168.12.33:55003
    HADR_REMOTE_HOST   192.168.12.30
    HADR_REMOTE_SVC    55000
    HADR_LOCAL_HOST    192.168.12.31
    HADR_LOCAL_SVC     55001
    HADR_SYNCMODE      sync
    HADR_REMOTE_INST   db2inst1"

2.1.3配置辅助备机1
# 在 host3 上

db2 "UPDATE DB CFG FOR HADB USING
     HADR_TARGET_LIST  192.168.12.31:55001|192.168.12.30:55000
     HADR_REMOTE_HOST  192.168.12.30
     HADR_REMOTE_SVC   55000
     HADR_SYNCMODE     superasync
     HADR_REMOTE_INST  db2inst1
     HADR_LOCAL_HOST   192.168.12.33
     HADR_LOCAL_SVC    55003"

2.2启动HADR
2.2.1启动主要备机

[db2inst3@kvm102 ~]$ db2 START HADR ON DB HADB AS STANDBY
DB20000I  The START HADR ON DATABASE command completed successfully.

[db2inst3@kvm102 ~]$ db2pd -hadr -alldbs

2.2.2启动辅助备机

2.2.3启动主库
db2 deactivate db hadb
db2 START HADR ON DB HADB AS PRIMARY


db2 deactivate  db sample
db2 stop HADR ON DB HADB

关闭 HADR 对的建议顺序
警告:
    尽管可对主数据库和/或备用数据库使用 STOP HADR 命令来停止 HADR,但应谨慎使用。
    如果要停止指定的数据库,但仍然想保留其 HADR 主数据库角色或备用数据库角色,请不要发出 STOP HADR 命令。
    如果发出 STOP HADR 命令,那么该数据库将变为标准数据库,并且可能需要重新初始化才能继续作为 HADR 数据库运行。请改为发出 DEACTIVATE DATABASE 命令。

如果只想关闭 HADR 操作,那么下面是关闭 HADR 对的建议方法:
取消激活主数据库
对主数据库停止 DB2
取消激活备用数据库
对备用数据库停止 DB2

启动HADR,则刚好相反:
1、启动备库,备库启动后进入local catchup,remote catchup pending,会一直尝试连接主库。
2、启动主库,等待接收备库的连接,如果在规定的时间(hadr_timeout)不能收到备库的连接,则启动失败,这样是为了防止脑裂 brain split.一旦备库连接上主库,
  进入remote catchup状态。重放完主库传过来的日志后,进入peer状态。

四、主库上执行
db2 "update db cfg for HADB using
     HADR_TARGET_LIST 192.168.12.31:55001|192.168.12.32:55002----辅列表
     HADR_REMOTE_HOST 192.168.12.31--------------------------------------主辅
     HADR_REMOTE_SVC 55002
     HADR_LOCAL_HOST 192.168.12.30---------------------------------------主库
     HADR_LOCAL_SVC 55001
     HADR_SYNCMODE sync
     HADR_REMOTE_INST  db2inst1"


    
配置hosts和services文件
vi  /etc/hosts

vi  /etc/Services
 
DB2_HADR_A 55000/tcp
DB2_HADR_B 55001/tcp
DB2_HADR_C 55003/tcp


1、配置三个备机的ROS和UR隔离
 
 db2set DB2_HADR_ROS=1
 db2set DB2_STANDBY_ISO=UR

2、备机恢复HADB数据库
  db2 restore db HADB
 
 
ServerA :192.168.1.105 主机
 
ServerB: 192.168.1.106  主备
 
ServerD:192.168.1.104   辅备1
 
ServerE: 192.168.1.107   辅备2


主备库上执行
注意第一个为主机IP地址,其次为辅备1的IP地址,辅备2的IP地址
 db2 "update db cfg for HADB using HADR_TARGET_LIST 192.168.12.30:55001|192.168.12.32:55003
    HADR_REMOTE_HOST 192.168.12.30-------------------------------------------------------------------主
    HADR_REMOTE_SVC 55001
    HADR_LOCAL_HOST 192.168.1.31---------------------------------------------------------------------辅
    HADR_LOCAL_SVC 55002
    HADR_SYNCMODE sync
    HADR_REMOTE_INST db2inst1"

 
   db2 "update db cfg for HADB using HADR_TARGET_LIST 192.168.12.30:55001|192.168.12.32:55003
    HADR_REMOTE_HOST 192.168.12.30
    HADR_REMOTE_SVC 55001
    HADR_LOCAL_HOST 192.168.1.31
    HADR_LOCAL_SVC 55002
    HADR_SYNCMODE sync
    HADR_REMOTE_INST db2inst1"

辅库上执行

db2 "update db cfg for HADB using HADR_TARGET_LIST 192.168.12.31:55002|192.168.12.30:55001
     HADR_REMOTE_HOST 192.168.12.30
     HADR_REMOTE_SVC 55001
     HADR_LOCAL_HOST 192.168.12.32
     HADR_LOCAL_SVC 55003
     HADR_SYNCMODE superasync
     HADR_REMOTE_INST db2hadr"

 
状态(State):HADR 当前的状态。包括 Local Catchup、Remote Catchup、Remote Catchup Pending、Peer、Disconnect Peer。
Local Catchup: 如果备机在这种状态下,表明备机这在从本地的磁盘上读取日志文件,并且对日志进行重新重做;如果主机在这种状态下,表明它正在等待备机的连接。HADR 的主机并没有从本地读日志并重做的过程,我们之所以让主机显示这个状态,就是通过主机上的这个状态告诉用户,备机正在做本地日志的重做。
Remote Catchup: 处于这个状态的 HADR 的主机正在从本地读日志,并且将这些日志发送给备机;而备机会从主机接受日志,并且将这些日志写入它本地的磁盘,并且对这些日志进行重做。
Remote Catchup Pending: 如果备机出于这种状态,表明它正在尝试连接主机。出现这种状态,一般是因为主机不存在或者主机还没有完全的启动起来,导致连接没有成功。
Peer: 如果 HADR 的主备机器处于这种状态,表明主机和备机的网络连接良好。日志可以顺利的从主机发送到备机。
Disconnect Peer: 如果 HADR 的主备机器处于这种状态,表明主机和备机的网络已经断开,但是连接断开的时间并没有超过 PEER_WINDOW。这个状态内,主机上的事务不可以提交。如果这个时候网络恢复,主机和备机重新建立连接,主备机器会重新回到 PEER 状态;如果双方进入这个状态的原因是主机出现了故障,当在备机上做接管(takeover)操作时,不会发生数据丢失。就是说不会出现主机提交了某个事务,但是备机没有提交这个事务的情况。
Disconnected: 如果主机处于这种状态,表明主机没有收到来自备机的连接。如果备机处于这种状态,表明备机不能连接到主机。


当前文章:db2V10.1中HADR一主多从搭建
文章位置:http://azwzsj.com/article/gedppe.html