DB2 HADR的搭建

主数据库 : 192.168.2.100
备数据库 : 192.168.2.101

OS: redhat 6.10

1 解压缩,root用户下

tar -zxvf v10.5fp10_linuxx64_server_t.tar.gz

2 检查,并安装相应的软件包

./db2prereqcheck -v 10.5.0.10 -s -o /tmp/dbcheck.log
yum install glibc* libstdc* pam* compat-libstdc* ksh* libstdc++.so.6  

3 进行安装,在root用户下

./db2_install 

4 查看db2的注册信息

./db2licm -a /root/db2ese_c.lic   -- 安装许可证
cd /opt/ibm/db2/V10.5/adm 
./db2licm -l

5 创建用户和组

groupadd db2iadm1
groupadd db2fadm1
groupadd dasadm1

useradd -u 600 -g db2iadm1 -m -d /home/db2inst1 db2inst1
useradd -u 601 -g db2fadm1 -m -d /home/db2fenc1 db2fenc1
useradd -u 602 -g dasadm1 -m -d /home/dasusr1 dasusr1

6 创建DAS  ## 在9.7中已经不推荐使用DB2管理服务器(DAS),在以后的发行版本中可能会将其移除。DAS在DB2 pureScale环境中不受支持

cd /opt/ibm/db2/V10.5/instance
./dascrt -u dasusr1

7 创建db2实例 ## 注意,要设置hosts里面的主机名和IP。否则会报错

--./db2icrt -u db2fenc1 db2inst1
./db2icrt -p 50000 -u db2fenc1 db2inst1    -- 使用这个,指定端口为50000

##netstat -a | grep db2c_db2inst1   -- 查看端口信息
##netstat -lnp |grep 50000

8 查看创建的实例和版本

 ./db2ilist
 /opt/ibm/db2/V10.5/bin/db2level

HADR的配置

1 在主库和备库上创建缺省实例db2inst1,端口为50000 ,缺省实例的所有者用户 db2inst1,密码oracle

./db2icrt -p 50000 -u db2fenc1 db2inst1 

2 在主库上创建SAMPLE数据库

cd /home/db2inst1/sqllib/bin
db2 create db cms automatic storage yes on /home/cms/db2fs using codeset GBK territory CN   -- 创建数据库,创建到指定的目录下
./db2sampl 
list db directory 

3 修改SAMPLE数据库配置参数LOGRETALL为ON ,使数据库日志记录方式为存档日志,(注意路径的权限)

update db cfg for sample using logarchmeth1 disk:/database/archive

4 修改索引日志记录参数(不是必须的)

update db cfg for sample using logindexbuild on 
update db cfg for sample using indexrec restart 

5 备份SAMPLE数据库(在主库上执行)

backup db sample to /database

6 将备份后的文件,复制到备库上对应的目录下(/database目录下)

7 在备库上恢复SAMPLE数据库

RESTORE DATABASE SAMPLE FROM "/database/" TAKEN AT 20140726122125 REPLACE HISTORY FILE WITHOUT PROMPTING  -- 这个没成功,日期要换成生成的备份文件的日期  (这个语句没有执行成功)

RESTORE DATABASE SAMPLE FROM "/database/"   -- 直接这样执行,成功了  

8 配置自动客户端重新路由
  在主数据库上

  update alternate server for database sample using hostname 192.168.2.101 port 50000  -- 主库上执行
  update alternate server for database sample using hostname 192.168.2.100 port 50000  -- 备库上执行 

9 配置HADR服务和侦听端口 (主库和备库上)(不是必须的,因为后面配置HADR_LOCAL_SVC和HADR_REMOTE_SVC数据库参数的时候,可以直接使用端口号来替代服务名)

vi /etc/services 
DB2_HADR_1 55001/tcp
DB2_HADR_2 55002/tcp  

10 修改主库的配置参数

UPDATE DB CFG FOR SAMPLE USING HADR_LOCAL_HOST 192.168.2.100 
UPDATE DB CFG FOR SAMPLE USING HADR_LOCAL_SVC DB2_HADR_1 
UPDATE DB CFG FOR SAMPLE USING HADR_REMOTE_HOST 192.168.2.101
UPDATE DB CFG FOR SAMPLE USING HADR_REMOTE_SVC DB2_HADR_2 
UPDATE DB CFG FOR SAMPLE USING HADR_REMOTE_INST db2inst1 
UPDATE DB CFG FOR SAMPLE USING HADR_SYNCMODE NEARSYNC 
UPDATE DB CFG FOR SAMPLE USING HADR_TIMEOUT 120 
CONNECT TO SAMPLE  
QUIESCE DATABASE IMMEDIATE FORCE CONNECTIONS 
UNQUIESCE DATABASE 
CONNECT RESET

11 修改备库的参数

UPDATE DB CFG FOR SAMPLE USING HADR_LOCAL_HOST 192.168.2.101 
UPDATE DB CFG FOR SAMPLE USING HADR_LOCAL_SVC DB2_HADR_2 
UPDATE DB CFG FOR SAMPLE USING HADR_REMOTE_HOST 192.168.2.100
UPDATE DB CFG FOR SAMPLE USING HADR_REMOTE_SVC DB2_HADR_1 
UPDATE DB CFG FOR SAMPLE USING HADR_REMOTE_INST db2inst1 
UPDATE DB CFG FOR SAMPLE USING HADR_SYNCMODE NEARSYNC 
UPDATE DB CFG FOR SAMPLE USING HADR_TIMEOUT 120

12 启动HADR
先启用备用数据库服务器的HADR

DEACTIVATE DATABASE SAMPLE 
START HADR ON DATABASE SAMPLE AS STANDBY 

然后启动主库的HADR (先启动主库也可以。但是要保证在HADR_TIMEOUT时间内启动备库。否则HADR会启动失败)

DEACTIVATE DATABASE SAMPLE 
START HADR ON DATABASE SAMPLE AS PRIMARY

HADR测试  

1 连接到主数据库创建一个测试表

connect to sample 
create table t (ID INTEGER NOT NULL WITH DEFAULT,NAME VARCHAR(10),PRIMARY KEY (ID))
insert into t values(1,'aa')
insert into t values(2,'bb')

2 使用备库接管主数据库

TAKEOVER HADR ON DATABASE SAMPLE USER db2inst1 USING oracle  -- 在备库上执行  
GET SNAPSHOT FOR DB ON SAMPLE  -- 主备库上都可以查询 

3 连接到新的主库,查询数据 (略)

HADR管理操作汇总
1 启动HADR

--start hadr on database sample using db2inst1 using oracle as standby
db2 start hadr on database sample as standby
--start hadr on database sample using db2inst1 using oracle as primary
db2 start hadr on database sample as primary
START HADR ON DATABASE SAMPLE AS PRIMARY BY FORCE   -- 强行启动 

2 停止HADR (实际测试,要先停止备库)

-- 主备都做

db2 deactivate database sample

-- 备库

[db2inst1@db2101 ~]$ db2 stop hadr on database sample
DB20000I  The STOP HADR ON DATABASE command completed successfully.
[db2inst1@db2101 ~]$ 

--主库

[db2inst1@db2100 ~]$ db2 stop hadr on database sample
DB20000I  The STOP HADR ON DATABASE command completed successfully.
[db2inst1@db2100 ~]$ 

3 查看HADR的配置及运行状态
get snapshot 命令查看主备数据库的连接状态
get db cfg 命令查看HADR的配置情况
db2pd -db sample -hadr

4 接管和故障转移
接管命令takeover只能用在备用数据库上

紧急接管(如果主数据库发生故障,普通接管失败,需要紧急接管)
takeover hadr on database sample by force
普通接管(没有使用by force语句)
takeover hadr on database sample

 

END

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值