DB2的主机和备机在建立HADR的时候都要经过几个状态:
备机:
# S-Boot
# S-LocalCatchup(备机在前滚已经传送到本地的日志)
# S-RemoteCatchupPending
# S-RemoteCatchup
# S-NearlyPeer
# S-Peer
主机:
# P-Boot (was None)
# P-RemoteCatchupPending(was P-Boot)
# P-RemoteCatchup(was P-RemoteCatchupPending)
# P-NearlyPeer(was P-RemoteCatchup)
# P-Peer (was P-NearlyPeer)
RemoteCatchupPending:备机完成了对本地日志的前滚,尝试与主机建立通讯以获得后续的日志文件。
RemoteCatchup:备机已经与主机成功建立了连接并正在接受新的日志用于前滚。 NearlyPeer:备机已经完成了所有日志文件的前滚操作,处于等待主机完成暂挂日志写入和读取磁盘上日志进行处理的操作。
Peer:根据HADR的同步模式选择,备机和主机处于对等状态。
通过从上面的状态解释可以看出,主机和备机在建立HADR机制时必须处于对等状态,否则备机将无法取得主机在建立HADR之前的日志文件。并且,在任何非对等状态下,主备发生角色互换都是HADR不允许的。因为仍有一部分在主机已经提交的数据操作未能在备机重放,这将造成数据的丢失。同时可以看到HADR在提供数据保护之前是需要一定的时间完成准备的,而这个准备过程是异步的,不随命令启动成功而完成,需要用户通过对db2diag.log或者db2pd来查证确认,直到日志或db2pd中显示出对等(peer)状态时,数据才真正处于HADR的保护之下。因此如果进行强制切换的瞬间HADR处于对等之外的其他状态,这个切换将不可逆,并可能导致只有通过重建HADR来修复HADR环境。
HADR环境搭建的基本步骤
以云南电视台索贝非编网为例:
主数据库服务器DBServer1,IP 172.16.70.3
备数据库服务器DBServer2,IP 172.16.70.4
1.修改NETDB数据库配置参数LOGRETAIN为ON,使该数据库日志记录方式改为存档日志。
2.修改索引日志记录参数
UPDATE DB CFG FOR NETDB USING LOGINDEXBUILD ON
UPDATE DB CFG FOR NETDB USING INDEXREC RESTART
3.备份数据库NETDB
BACKUP DB NETDB TO E:\database\dbbak
4.将得到的数据库映像文件复制到DBServer2对应的目录下(E:\database\dbbak)。
5.在DBServer2上恢复数据库NETDB
RESTORE DATABASE NETDB FROM "E:\database\dbbak" TAKEN AT
201 REPLACE HISTORY FILE WITHOUT PROMPTING
6.配置自动客户端重新路由
在主数据库服务器(DBServer1)上执行以下命令:
UPDATE ALTERNATE SERVER FOR DATABASE NETDB USING HOSTNAME
172.16.70.3 PORT 50000
在备用数据库服务器上(DBServer2)上执行以下命令:
UPDATE ALTERNATE SERVER FOR DATABASE NETDB USING HOSTNAME
172.16.70.4 PORT 50000
7.配置HADR服务和侦听端口:
在主备数据库服务器上编辑C:\windows\system32\drivers\etc\services,
加入下面两行:
DB2_HADR_1???? 55001/tcp
DB2_HADR_2???? 55002/tcp
8.修改主数据库(DBServer1 - NETDB)的配置参数:
UPDATE DB CFG FOR NETDB USING HADR_LOCAL_HOST 172.16.70.3
UPDATE DB CFG FOR NETDB USING HADR_LOCAL_SVC DB2_HADR_1
UPDATE DB CFG FOR NETDB USING HADR_REMOTE_HOST 172.16.70.4
UPDATE DB CFG FOR NETDB USING HADR_REMOTE_SVC DB2_HADR_2
UPDATE DB CFG FOR NETDB USING HADR_REMOTE_INST ynnetdba
UPDATE DB CFG FOR NETDB USING HADR_SYNCMODE NEARSYNC
UPDATE DB CFG FOR NETDB USING HADR_TIMEOUT 120
CONNECT TO NETDB
QUIESCE DATABASE IMMEDIATE FORCE CONNECTIONS
UNQUIESCE DATABASE
CONNECT RESET
9.修改备用数据库(DBServer2 - NETDB)的配置参数:
UPDATE DB CFG FOR NETDB USING HADR_LOCAL_HOST 172.16.70.4
UPDATE DB CFG FOR NETDB USING HADR_LOCAL_SVC DB2_HADR_2
UPDATE DB CFG FOR NETDB USING HADR_REMOTE_HOST 172.16.70.3
UPDATE DB CFG FOR NETDB USING HADR_REMOTE_SVC DB2_HADR_1
UPDATE DB CFG FOR NETDB USING HADR_REMOTE_INST ynnetdba
UPDATE DB CFG FOR NETDB USING HADR_SYNCMODE NEARSYNC
UPDATE DB CFG FOR NETDB USING HADR_TIMEOUT 120
10.启动HADR:
首先启动备用数据库服务器的HADR:
DEACTIVATE DATABASE NETDB
START HADR ON DATABASE NETDB AS STANDBY
然后启动主数据库服务器的HADR:
DEACTIVATE DATABASE NETDB
START HADR ON DATABASE NETDB AS PRIMARY
(责任编辑:景帝www.ijingdi.com)