主数据库 : 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