前言node
HA即High Availability,意为高可用性。DB2高可用双机互备,使用两台主机互为主备,目的在于当主机发生断电或者外部故障时,可以自动切换到备机正常运行,从而体现DB2高可用的特色。sql
一 需求说明数据库
在DB03,DB04两台主机上各建立一个实例,每一个实例下建立一个数据库。两台主机互为主备,即当DB03发生断电等故障时,数据库资源能够自动切换到DB04上正常运行。服务器
二 实施前提ide
1两台主机之间安装共享VG(由主机维护厂商进行操做)spa
2两台主机上安装DB2 ESE版操作系统
三 环境说明日志
操做系统版本:AIX7.1three
DB2版本:V10.5.FP5资源
主机1(DB03):XX.XXX.XXX.139
主机2(DB04):XX.XXX.XXX.140
四 相关规划
1用户组规划
组 |
GID |
db2iadm1 |
601 |
db2iadm2 |
602 |
db2fadm1 |
603 |
db2fadm2 |
604 |
db2grp1 |
605 |
db2grp2 |
606 |
2用户规划
用户 |
UID |
用户组 |
dausr1 |
501 |
db2iadm1 |
dausr2 |
502 |
db2iadm2 |
db2fenc1 |
503 |
db2fadm1 |
db2fenc2 |
504 |
db2iadm2 |
db2inst1 |
505 |
db2grp1 |
db2inst2 |
506 |
db2grp2 |
3文件系统规划
主机名 |
数据库名 |
文件系统 |
容量大小 |
备注 |
DB03 |
PUB |
/db2node01 |
40G |
数据库目录 |
/db2home01 |
30G |
实例用户目录(用户家目录) |
||
/db2log01 |
100G |
活动日志目录 |
||
/archlog01 |
100G |
归档日志目录 |
||
表空间 |
3T |
共享 |
||
DB04 |
MRK |
/db2node02 |
40G |
数据库目录 |
/db2home02 |
30G |
实例用户目录(用户家目录) |
||
/db2log02 |
100G |
活动日志目录 |
||
/archlog02 |
100G |
归档日志目录 |
||
表空间 |
2T |
共享 |
五 建立步骤
1建立用户组
使用root用户,在DB03以及DB04两台主机上建立相同的用户组,以db2iadm1为例,建立语句为:
mkgroup -A id=601 db2iadm1 |
其余用户组的建立方法相同,此处不赘述。
2建立用户
使用root用户,在DB03以及DB04两台主机上建立相同的用户,以dausr1,db2inst1为例,建立语句为:
mkuser id=501 pgrp='db2iadm1' dausr1 mkuser id=505 home=/db2home01 pgrp='db2grp1' db2inst1 |
其余用户的建立方法相同,此处不赘述。
3修改目录权限
主机维护厂商建立所需的文件系统并挂载完成后,对其权限进行相应的修改
以DB03为例,使用root用户,执行如下指令以修改用户权限:
chown -R db2inst1:db2grp1 /db2node01 chown -R db2inst1:db2grp1 /db2home01 chown -R db2inst1:db2grp1 /db2log01 chown -R db2inst1:db2grp1 /archlog01 |
在DB04上的操做同理:
chown -R db2inst2:db2grp2 /db2node02 chown -R db2inst2:db2grp2 /db2home02 chown -R db2inst2:db2grp2 /db2log02 chown -R db2inst2:db2grp2 /archlog02 |
操做完成后,使用df -g 来检查文件系统是否挂载完成。
4建逻辑卷
主机维护厂商建立完成所需的VG并挂载完成后,建立逻辑卷,做为表空间容器。
(说明:容器是DB2的一个概念。在物理存储上,每一个表空间由一个或多个容器构成,容器映射到物理存储,能够是目录,也能够是文件或者裸设备。每一个容器只能属于一个表空间。)
以pub1vg上的逻辑卷建立为例:
mklv -y ts_pub_01_1 pub1vg 400 mklv -y ts_pub_01_2 pub1vg 400 mklv -y ts_pub_01_3 pub1vg 400 |
六 数据库层面操做
说明:DB2的逻辑层次为:实例→数据库→表空间→表。
1安装DB2软件(此处省略DB2安装步骤)
2建立实例
须要在DB03上建立实例db2inst1,在DB04上建立实例db2inst2。
以DB03为例:
cd /opt/IBM/db2/V10.5/instance ./db2icrt -p 50000 -u db2fenc1 db2inst1 |
实例创建完成。
3为实例用户配置相应的环境变量
以DB03上的db2inst1用户为例:
su - db2inst1 vi .profile |
将如下几行
# The following three lines have been added by UDB DB2. if [ -f /db2home01/sqllib/db2profile ]; then . /db2home01/sqllib/db2profile fi set -o vi |
添加到.profile最后的位置
修改完成后执行.profile文件
./.profile
说明:其它实例用户,包括DB03的db2inst2用户,以及DB04的db2inst1,db2inst2用户也是采用相同方法配置其环境变量。
4建数据库(以DB03上的操做为例,DB04同理)
(1)在DB03上建立PUB库,具体操做以下:
su – db2inst1 db2start db2set DB2COMM=TCPIP db2 CREATE DATABASE PUB ON /db2node01 USING CODESET UTF-8 |
(2)修改数据库参数(设置活动日志以及归档日志路径)
db2 update db cfg for PUB using NEWLOGPATH /db2log01 db2 update db cfg for PUB using LOGARCHMETH1 DISK:/archlog01 |
(3)建缓冲池(以PUB_BP8K为例,其他缓冲池同理)
db2 connect to PUB db2 "CREATE BUFFERPOOL PUB_BP8K IMMEDIATE SIZE 80000 PAGESIZE 8K" |
(4)建立表空间,以建立ts_pub_dat01表空间 为例:
db2 "create tablespace ts_pub_dat01 pagesize 8k managed by database using (device '/dev/rts_pub_01_1' 100g,device '/dev/rts_pub_01_2' 100g,device '/dev/rts_pub_01_3' 100g) bufferpool PUB_BP8K " |
七 修改配置
1端口号
使用root用户,修改/etc/services文件,确保各个用户的端口号没有重复。
2实例用户目录下的db2nodes.cfg
(说明:db2nodes.cfg为节点配置文件,位于实例全部者的主目录中,它包含一些配置信息,告诉 DB2有哪些服务器参与分区数据库环境的实例。本例为单分区数据库环境,db2nodes.cfg 只包含一台主机的信息。db2nodes.cfg的内容与本机名一致时,才能够启动数据库。)
(1)DB03
cp db2nodes.cfg db2nodes.cfg.DB03 cp db2nodes.cfg db2nodes.cfg.DB04 |
vi db2nodes.cfg.DB04(修改成如下内容,保存)
0 DB04 0 |
(2)DB04
cp db2nodes.cfg db2nodes.cfg.DB03 cp db2nodes.cfg db2nodes.cfg.DB04 |
vi db2nodes.cfg.DB03(修改成如下内容,保存)
0 DB03 0 |
八 HA脚本调整
在DB0三、DB04均部署如下4个脚本。
以DB03为例说明,DB04同理:
db1_start.sh用于修改db2node.cfg、修改相应文件系统的权限,使之知足PUB库启动的条件,启动PUB数据库。
db1_stop.sh用于中止PUB数据库。
db2_start.sh用于修改db2node.cfg、修改相应文件系统的权限,使之知足MRK库启动的条件,启动MRK数据库。
db2_stop.sh用于中止MRK数据库。