前言
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个脚本。
以DB03为例说明,DB04同理:
db1_start.sh用于修改db2node.cfg、修改相应文件系统的权限,使之满足PUB库启动的条件,启动PUB数据库。
db1_stop.sh用于停止PUB数据库。
db2_start.sh用于修改db2node.cfg、修改相应文件系统的权限,使之满足MRK库启动的条件,启动MRK数据库。
db2_stop.sh用于停止MRK数据库。
转载于:https://blog.51cto.com/5063935/2074308