DB2高可用性灾难恢复
HADR测试
1. 连接到主数据库,创建测试表HADRTEST,并插入几条测试数据:
CONNECT TO SAMPLE USER db2inst1 USING db2inst1
CREATE TABLE HADRTEST(ID INTEGER NOT NULL WITH DEFAULT,NAME VARCHAR(10),PRIMARY KEY (ID))
INSERT INTO HADRTEST (ID,NAME) VALUES (1,'张三')
INSERT INTO HADRTEST (ID,NAME) VALUES (2,'李四')
2. 使用备份数据库接管主数据库
TAKEOVER HADR ON DATABASE SAMPLE USER db2inst1 USING db2inst1
观察数据库主数据库和备用数据库的状态:
GET SNAPSHOT FOR DB ON SAMPLE
新的主数据库(原备用数据库):

备用数据库(原主数据库):

3. 连接到新的主数据库,并查询HADRTEST表:

显然,我们的HADR环境已经可以正常工作了。读者可以自己再针对数据的修改、删除等进行一些测试。自动客户端重新路由(Automatic Client Reroute)功能也留给读者自己测试。
HADR管理操作汇总
1. 启动和停止HADR
使用START HADR命令启动主数据库和备用数据库的HADR。启动主数据库使用AS PRIMARY子句,启动备用数据库使用AS STANDBY 子句。如果想以其他用户启动HADR,可以通过USER user-name USING password子句指定用户名和密码:
例子:
START HADR ON DATABASE SAMPLE USING db2inst1 USING db2inst1 AS STANDBY
在启动主数据库的HADR时,如果在数据库HADR_TIMEOUT所指定的时间内未能建立与备用数据库HADR的连接,启动将失败。这时候,你可以等排除故障并成功启动备用数据库HADR后再启动主数据库HADR,也可以通过指定BY FORCE子句强行启动主数据库。
例如:
START HADR ON DATABASE SAMPLE AS PRIMARY BY FORCE
使用STOP HADR 停止主数据库和备用数据库的HADR。
如果在活动的主数据库上发出此命令,所有的数据库连接都被断开,数据库恢复为标准数据库(我们称没有启用HADR的数据库为标准数据库),并保持联机状态。
如果在活动的备用数据库上发出此命令,将停止失败。你必须先使用DEACTIVATE DATABASE命令取消激活,然后再停止HADR。
2. 查看HARD的配置及运行状态
HADR连接状态:
当备用数据库的HADR启动时,它首先进入本地同步更新状态。并根据本地日志路径配置参数及日志归档方法的设置检索本地系统中的日志文件并重放。当本地日志文件重放完毕,备用数据库进入远程同步暂挂状态。当与主数据库建立连接之后,备用数据库进入远程同步更新状态。即主数据库将自己的日志文件通过TCPIP协议发送给备用数据库,备用数据库接收到日志文件并重放,直到所有日志文件都重放完毕,备用数据库和主数据库进入对等状态。见下图:

通过GET SNAPSHOT命令观察主数据库和备用数据库的连接状态。
通过GET DB CFG命令可以查看HADR的配置情况,即HADR相关的几个数据库参数值。