前言



HA即High Availability,意为高可用性。DB2高可用双机互备,使用两台主机互为主备,目的在于当主机发生断电或者外部故障时,能够自动切换到备机正常运行,从而体现DB2高可用的特点。

 

一 需求说明



在DB03,DB04两台主机上各创建一个实例,每个实例下创建一个数据库。两台主机互为主备,即当DB03发生断电等故障时,数据库资源可以自动切换到DB04上正常运行。

 

二 实施前提



1两台主机之间安装共享VG(由主机维护厂商进行操作)

2两台主机上安装DB2 ESE版

 

三 环境说明



操作系统版本:AIX7.1

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脚本调整



在DB03、DB04均部署以下4个脚本。

说明: http://note.youdao.com/share/images/replace-img.png

以DB03为例说明,DB04同理:

db1_start.sh用于修改db2node.cfg、修改相应文件系统的权限,使之满足PUB库启动的条件,启动PUB数据库。

db1_stop.sh用于停止PUB数据库。

db2_start.sh用于修改db2node.cfg、修改相应文件系统的权限,使之满足MRK库启动的条件,启动MRK数据库

db2_stop.sh用于停止MRK数据库。