DB2 HADR 单一备库搭建过程
环境:
主数据库服务器:Red Hat Enterprise Linux Server release 6.7 (Santiago) 172.16.115.244 65000 db2inst1
备数据库服务器:Red Hat Enterprise Linux Server release 6.7 (Santiago) 172.16.115.243 65000 db2inst1
1.创建HADR数据库HADRDB(主数据库服务器)
db2 create db HADRDB using codeset gbk territory CN collate using identity
2.创建缓冲池,包括表缓冲池、索引缓冲池(主数据库服务器)。
db2 "create bufferpool TB_BP_32k size 2000 pagesize 32k"
db2 "create bufferpool IDX_BP_32k size 2000 pagesize 32k"
3.创建表表空间、索引表空间(主数据库服务器)。
db2 "create regular tablespace TB_TS pagesize 32k managed by database using(file '/db2/db2inst1/HADRDB/tablespaces/HADRDB' 10g) bufferpool TB_BP_32k"
db2 "create regular tablespace IDX_TS pagesize 32k managed by database using(file '/db2/db2inst1/HADRDB/tablespaces/HADRDB_IDX' 4g) bufferpool IDX_BP_32k"
4.创建HADR schema,并创建表(主数据库服务器)
db2 connect to HADRDB
db2 "create schema HADR"
set current schema HADR;
CREATE TABLE
hadr_01
(
JRN_NO VARCHAR(18) NOT NULL,
LOG_NO VARCHAR(20) DEFAULT '' NOT NULL,
TX_CD VARCHAR(10) DEFAULT '' NOT NULL,
TX_TYP VARCHAR(2) DEFAULT '03' NOT NULL,
BUS_TYP VARCHAR(4) DEFAULT '' NOT NULL,
TM_SMP VARCHAR(26) DEFAULT '' NOT NULL,
CONSTRAINT PPDTJFCPCMBC_PK PRIMARY KEY (JRN_NO)
) IN "TB_TS" INDEX IN "IDX_TS";
5.检查创建的表是否正常(主数据库服务器).
db2 "INSERT INTO HADR.hadr_01 (JRN_NO, LOG_NO, TX_CD, TX_TYP, BUS_TYP, TM_SMP) VALUES ('000000000000000001', '00000000000000000001', '交易码0001', '01', '0940', CURRENT TIMESTAMP)"
db2 "select * from HADR.hadr_01"
6.设置 HADRDB 为归档日志(主数据库服务器)
不然启动HADR 报错 SQL1768N Unable to start HADR. Reason code = "1".
db2 "UPDATE DB CFG FOR HADRDB USING LOGINDEXBUILD ON"
db2 "UPDATE DB CFG FOR HADRDB USING INDEXREC RESTART"
7.备份HADRDB数据库(主数据库服务器).
db2 "backup db HADRDB to '/home/db2inst1/src' "
8.将数据库备份文件 sftp至备数据库 服务器(主数据库服务器)。
9.恢复数据库(备数据库 服务器)
db2 "restore db HADRDB"
10.主数据库HADR配置参数(主数据库服务器)
db2 "UPDATE DB CFG FOR HADRDB USING
HADR_TARGET_LIST 172.16.115.243:65000
HADR_REMOTE_HOST 172.16.115.243
HADR_REMOTE_SVC 65000
HADR_SYNCMODE sync
HADR_REMOTE_INST db2inst1
HADR_LOCAL_HOST 172.16.115.244
HADR_LOCAL_SVC 65000"
11.主备数据库HADR配置参数(备数据库服务器)。
db2 "UPDATE DB CFG FOR HADRDB USING
HADR_TARGET_LIST 172.16.115.244:65000
HADR_REMOTE_HOST 172.16.115.244
HADR_REMOTE_SVC 65000
HADR_LOCAL_HOST 172.16.115.243
HADR_LOCAL_SVC 65000
HADR_SYNCMODE sync
HADR_REMOTE_INST db2inst1"
12.启动主备数据库HADR(备数据库服务器).
db2 START HADR ON DB HADRDB AS STANDBY
13.启动主数据库HADR(主数据库服务器)。
db2 START HADR ON DB HADRDB AS PRIMARY
注意:必须先启动备数据库 HADR.
14.启用备数据库 为只读模式(备数据库服务器)
在STANDBY端,设置以下DB2SET参数:
db2set DB2_STANDBY_ISO=UR
db2set DB2_HADR_ROS=ON
db2 TERMINATE
db2stop
db2start
重启实例生效后,就可以在备数据库 端连接数据库,并进行只读查询操作。
15.测试主库、备库是否搭建成功。
在主库插入HADR_01一条记录:
db2 "INSERT INTO HADR.hadr_01 (JRN_NO, LOG_NO, TX_CD, TX_TYP, BUS_TYP, TM_SMP) VALUES ('000000000000000001', '00000000000000000001', '交易码0001', '01', '0940', CURRENT TIMESTAMP)"
在备数据库查询,若能查到该记录,并且不可删除就证明搭建成功。
在主、备库服务器上执行如下命令:
db2 "select HADR_ROLE, STANDBY_ID, HADR_STATE,
varchar(PRIMARY_MEMBER_HOST,20) as PRIMARY_HOST,
varchar(STANDBY_MEMBER_HOST,20) as STANDBY_HOST
from table (mon_get_hadr(NULL))"
至此,一个完整的 HADR 单备机环境已经配置完成。
附件:
1. HADR接管方式
使用STANDBY数据库接管PRIMARY数据库
TAKEOVER HADR ON DATABASE DBNAME USER db2inst1 USING db2inst1;
以上接管方式只能在主、备数据库均正常的情况下使用
TAKEOVER HADR ON DATABASE DBNAME USER db2inst1 USING db2inst1 BY FORCE;
以上接管方式只能在主数据库出现故障的情况下使用
2.停止HADR
STOP HADR; 停止主数据库和备用数据库的HADR
如果在活动的主数据库上发出此命令,所有的数据库连接都被断开,数据库恢复为标准数据库(没有启用HADR的数据库为标准数据库),并保持联机状态。
如果在活动的备用数据库上发出此命令,将停止失败。必须先使用DEACTIVATE DATABASE命令取消激活,然后再停止HADR。