2024年6月6日发(作者:)

DB2 HADR+TSA for Linux实施步骤

前言

本文描述了DB2 for Linux HADR和TSA的安装和配置过程。

安装步骤

HADR安装

系统环境说明

操作系统版本:RHLE5.5 64bit

内核版本:5 #1 SMP Tue Mar 16 21:52:39 EDT 2010 x86_64 x86_64 x86_64

GNU/Linux

机器硬件配置:CPU 2G*1,Memory 2G

数据库版本:V9.7 fp8

主机名和IP规划:

节点主机名

Primarylab_db01

Standbylab_db02

IP地址

172.16.89.15

172.16.89.16

备注(说明)

主节点

备用节点

准备工作

hosts文件设置

DB2和TSA软件对主机名是非常敏感的,在配置主机名的时候需要注意如下几点:

1. 主机名的命名分为短名称(lab_db01)和长名称(lab_),对于DB2和TSA来说,主

机名的设置一定要统一。如果在/etc/hosts文件中使用短名称,在配置数据库和TSA的时候

一 定也要使用短名称。例如:在/etc/hosts文件中这样设置

172.16.89.15 lab_db01

172.16.89.16 lab_db02

在配置HADR环境和TSA环境的时候指定主机名就要指定成lab_db01 和lab_db02。千万

要设置成其它的名称。

操作系统网络参数调优

1.编辑文件:/etc/

用root用户登录,编辑/etc/文件,修改需调整的内核参数,增加如下:

=268435456

=8388608

=65535

=65535

、 、参数值有冲突,以上面的为准,可以根据实际

情况调整

= 2097152

= 2147483648

= 4096

# semaphores: semmsl, semmns, semopm, semmni

=250 256000 32 1024

-max = 65536

_local_port_range = 1024 65000

_default=262144

_max=262144

_default=262144

_max=262144

执行sysctl -p,从/etc/文件装入sysctl设置。

运行ipcs –l命令显示验证当前的内核参数设置

# ipcs -l

------ Shared Memory Limits --------

max number of segments = 4096 // SHMMNI

max seg size (kbytes) = 32768 // SHMMAX

max total shared memory (kbytes) = 8388608 // SHMALL

min seg size (bytes) = 1

------ Semaphore Limits --------

max number of arrays = 1024 // SEMMNI

max semaphores per array = 250 // SEMMSL

max semaphores system wide = 256000 // SEMMNS

max ops per semop call = 32 // SEMOPM

semaphore max value = 32767

------ Messages: Limits --------

max queues system wide = 1024 // MSGMNI

max size of message (bytes) = 65536 // MSGMAX

default max size of queue (bytes) = 65536 // MSGMNB

2.用户资源限制调整

设置DB2实例用户Data,nofiles,fsize资源的操作系统硬限制为无限制。

可通过修改文件/etc/security/ 设置

* soft nproc 3000

* hard nproc 16384

* soft nofile 65536

* hard nofile 65536

配置时间校正服务

1.配置主服务器,设置为主时钟服务器

时间校正服务是为了保证主数据库服务器和备用数据库服务器上的系统时间是一致的,

如果时间不一致会造成数据同步出现错误,数据库无法启动的情况发生。

编辑文件:/etc/,设置图中高亮部分内容:

启动ntp服务,service ntpd start

2.备用数据库服务器与时间源服务器同步时间

用root用户执行如下命令编辑定时任务:

# crontab -e

编辑root用户的定时任务,内容如下 :

*/5 * * * * /sbin/ntpdate 192.168.100.32 ------此处配置为主时钟服务器,每5分钟同步一次

配置双节点等价性

DB2数据库在配置Tivoli SAMP软件组成高可用环境的时候需要用到双节点等价性。 本

章节说明如何在红帽子v5.x系统上配置双节点等价性。

1.安装rsh-server软件

2.编辑配置文件

用root用户创建配置文件/etc/,文件的内容为

+lab_db01 db2inst1

+lab_db02 db2inst1

主备服务器都要配置

3.重命名文件

在主数据库服务器和备用数据库服务器上修改相关命令的名称。执行如下操作

# cd /usr/kerberos/bin

# mv rsh

# mv rcp

# mv rlogin

4.启动服务

设置rsh服务自启动,命令如下:

# chkconfig rsh on

# chkconfig rlogin on

# service xinetd reload

安装DB2数据库产品

用命令行交互方式安装DB2 V9.7,完成后安装补丁fp8

配置HADR

创建数据库实例

1.创建用户组

groupadd -g 501 db2iadm1

groupadd -g 502 db2fadm1

groupadd -g 503 dasadm1

2.创建用户

useradd -g 501 -u 501 -m -d /home/db2inst1 db2inst1

useradd -g 502 -u 502 -m -d /home/db2fenc1 db2fenc1

useradd -g 503 -u 503 -m -d /home/dasusr1 dasusr1

3.创建实例

/opt/ibm/db2/V9.7/instance/db2icrt -p 50000 -a server -s ese -u db2fenc1 db2inst1

4.创建管理服务器实例

/opt/ibm/db2/V9.7/instance/dascrt -u dasusr1

配置HADR服务和监听端口对应关系

在红帽子系统中/etc/services文件记录了服务名称和端口的对应关系,需要在此文件中

加入两行新的配置以保证可以解析到相应服务的端口。新追加的内容是:

db2c_db2inst1 50000/tcp

DB2_HADR_1 55001/tcp

DB2_HADR_2 55002/tcp

配置DB2v9.7数据库参数

1.在主数据库服务器上创建数据库

在DB2实例用户db2inst1环境下执行如下命令创建数据库:

$ db2 CREATE DATABASE MACRODB AUTOMATIC STORAGE YES USING CODESET GBK TERRITORY

CN PAGESIZE 16 K

创建一个叫做macrodb的数据库,此数据库采用自动存储管理,使用GBK编码中文,页大

小为16K。数据库创建时没有特殊的要求,具体的参数根据业务情况而定。

2.修改主数据库的参数

在配置数据库参数之前需要了解一下HADR着重要配置哪些参数,这些参数都起到 了

什么作用。

索引的创建、重建和重组也是HADR环境中需要考虑的一个方面,DB2通过数据库配置

参数LOGINDEXBUILD和CREATE TABLE 或ALTER TABLE语句中的LOG INDEX BUILD选项来控制

是否对索引的相关操作进行详细的日志记录。我们在上面的HADR配置实例中将

LOGINDEXBUILD数据库参数配置为ON,意味让DB2记录索引创建、重建和重组的完整日志。

这显然会降低主数据库的运行效率并占用更多的日志空间。但因为备用数据库可以通过重

放日志来重新构建索引,所以当主数据库发生故障,备用数据库的索引仍然可用。用户可

以通过CREATE TABLE或者ALTER TABLE语句的LOG INDEX BUILD选项来

对单个标设定所以日志记录级别。

LOG INDEX BUILD选线有三个可选参数:

NULL:这是缺省值,当使用此参数时,表的索引日志记录级别由数据库配置参数

LOGINDEXBUILD的值决定。

ON:使用此参数,数据库配置参数LOGINDEXBUILD的值将被忽略,DB2将记录这个表上所

有索引维护的详细日志。

OFF:使用此参数,数据库配置参数LOGINDEXBUILD的值将被忽略。DB2将不记录这个表上

索引维护的日志。如果表选项LOG INDEX BUILD设置为OFF。

或者LOG INDEX BUILD设置为NULL但是数据库配置参数LOGINDEXBUILD设置为OFF,DB2

将不记录这些表的索引维护日志,备用数据库也就无法重新索引维护操作,致使这些索引

在备用数据库上变为无效状态。当主数据库发生故障时,备用数据库切换为主数据库后,

这些无效的索引必须重建才能被使用。DB2通过数据库配置参数INDEXREC来指定在什么时

候检查并重建无效索引。

INDEXREC参数有三个可选值:

RESTARE:DB2将在显示或隐士重启数据库的时候检查并重新构建无效索引。

ACCESS:DB2将在无效索引第一次被访问的时候才会重新构建它。

SYSTEM:使用数据库管理器配置参数INDEXREC的值。

这里主要是把数据库修改成归档日志模式,用到的命令如下:

$ db2 UPDATE DATABASE CFG FOR MACRODB USING LOGARCHMETH1 'Disk:/db2home/archlogs'

注意:如果LOGARCHMETH1的值为LOGRETAIN,则LOGARCHMETH2的值就必须是OFF。打

开日志的归档只需要修改LOGARCHMETH1参数即可。

$ db2 UPDATE DATABASE CFG FOR MACRODB USING LOGARCHMETH2 'Disk:/db2data/archlog2'

注意:此步为可选。

$ db2 UPDATE DATABASE CFG FOR MACRODB USING TRACKMOD ON

$ db2 UPDATE DATABASE CFG FOR MACRODB USING LOGINDEXBUILD ON

$ db2 UPDATE DATABASE CFG FOR MACRODB USING INDEXREC RESTART

配置重新链接数据库后重建索引功能,如果不配置此参数在启动HADR的时候会提示需要

修改。不修改不影响到sHADR的功能。

创建样例数据库:db2sampl

db2 UPDATE DB CFG FOR sample USING INDEXREC RESTART LOGINDEXBUILD ON

LOGARCHMETH1 DISK:/db2home/archlogs LOGPRIMARY 20 LOGSECOND 20 AUTORESTART OFF

TRACKMOD ON

备份主服务器上的数据库

在打开归档日志后,数据库处在一个备份挂起状态。为了解除这个状态应该完整备份

一次数据库,如下所示:

$ db2 BACKUP DATABASE MACRODB

备份完成后在实例用户db2inst1的家目录中就多了一个备份文件,假设备份文件的

名称为: 0000.22.001

传输主数据库备份文件到备用服务器

备份数据库服务器上的数据库是从主数据库服务器的备份文件回复来的,所以先把主

数据库服务器上的备份文件拷贝到备份数据库服务器上。命令如下所示:

$ scp

0000.22.001 db2inst1@172.16.89.16:/db2

data/backup/20140304/

将备份文件拷贝到备份数据库服务器中。

在备用服务器上恢复数据库

在把数据库备份文件拷贝到备份数据库服务器中后就需要恢复数据库,命令如下所示:

$ db2 RESTORE DATABASE MACRODB from /db2data/backup/20140304 REPLACE HISTORY FILE

WITHOUT PROMPTING

恢复完成后不要做任何操作,使数据库处于ROLLING FORWARD状态。千万不要前滚数据库。

配置主服务器上数据库的参数

待主数据库和备用数据库都可用后需要配置数据库级别的HADR参数,主数据的参数

为:

$ db2 UPDATE DB CFG FOR MACRODB USING HADR_LOCAL_HOST lab_db01

$ db2 UPDATE DB CFG FOR MACRODB USING HADR_LOCAL_SVC DB2_HADR_1

$ db2 UPDATE DB CFG FOR MACRODB USING HADR_REMOTE_HOST lab_db02

$ db2 UPDATE DB CFG FOR MACRODB USING HADR_REMOTE_SVC DB2_HADR_2

$ db2 UPDATE DB CFG FOR MACRODB USING HADR_REMOTE_INST db2inst1

$ db2 UPDATE DB CFG FOR MACRODB USING HADR_SYNCMODE NEARSYNC

$ db2 UPDATE DB CFG FOR MACRODB USING HADR_TIMEOUT 120

$ db2 UPDATE DB CFG FOR MACRODB USING HADR_PEER_WINDOW 300

$ db2 CONNECT TO MACRODB

$ db2 QUIESCE DATABASE IMMEDIATE FORCE CONNECTIONS

$ db2 UNQUIESCE DATABASE

$ db2 CONNECT RESET

配置备用服务器上数据库的参数

修改备用数据库的参数,修改命令为:

$ db2 UPDATE DB CFG FOR MACRODB USING HADR_LOCAL_HOST lab_db02

$ db2 UPDATE DB CFG FOR MACRODB USING HADR_LOCAL_SVC DB2_HADR_2

$ db2 UPDATE DB CFG FOR MACRODB USING HADR_REMOTE_HOST lab_db01

$ db2 UPDATE DB CFG FOR MACRODB USING HADR_REMOTE_SVC DB2_HADR_1

$ db2 UPDATE DB CFG FOR MACRODB USING HADR_REMOTE_INST db2inst1

$ db2 UPDATE DB CFG FOR MACRODB USING HADR_SYNCMODE NEARSYNC

$ db2 UPDATE DB CFG FOR MACRODB USING HADR_TIMEOUT 120

$ db2 UPDATE DB CFG FOR MACRODB USING HADR_PEER_WINDOW 300

注:

在配置HADR参数时会碰到两个跟主机名相关的参数HADR_LOCAL_HOST和

HADR_REMOTE_HOST这两个参数可以指定IP地址也可以指定成主机名,不过推荐使用主机

名的形式。

启动HADR

管理说明

本部分主要起到描述的作用,说明HDAR的启动和停止的操作注意内容: 启动和停止

DB2 HADR:使用START HADR命令启动主数据库和备用数据库的HADR。启动主数据库使用

AS PRIMARY子句,启动备用数据库使用AS STANDBY子句。如果想以其他用户启动HADR,

可以通过USER username USING password子句指定用户名和密码。在启动主数据库的HADR

时,如果在数据库HADR_TIMEOUT所指定的时间内未能建立与备用数据库HADR的连接,

启动将失败。这时候你可以等排除故障并成功启动备用数据库HADR后再启动主数据库

HADR,也可以通过指定BY FORCE子句强行启动主数据库HADR。

使用STOP HADR语句停止主数据库和备用数据库的HADR功能。如果在活动的主数据库上

发出此命令,所有的数据库连接都被断开,数据库恢复为标准数据库,并保持联机装套。

如果在活动的备用数据库上发出此命令,将停止失败。必须先用DEACTIVATEDATABASE命令

取消激活,然后再停止HADR。如:db2 deactivate db sample , stop hadr on db sample

2.启动备用数据库服务器的HADR

执行如下命令启动备用数据库服务器的HADR:

$ db2 DEACTIVATE DATABASE MACRODB

$ db2 START HADR ON DATABASE MACRODB AS STANDBY

3.启动主数据库服务器的HADR

执行如下命令启动主数据库服务器的HADR:

$ db2 DEACTIVATE DATABASE MACRODB

$ db2 START HADR ON DATABASE MACRODB AS PRIMARY

HADR验证

1.在主服务器上创建测试环境

在主数据库服务器上创建测试表t1,并插入几条测试数据。命令如下所示:

$ db2 CONNECT TO MACRODB

$ db2 “create table t1(a1 int)”

$ db2 “insert into t1 values(1)”

$ db2 “commit”

2.备用数据库接管主数据库

输入如下命令使备用数据库接管主数据库:

$ db2 TAKEOVER HADR ON DATABASE MACRODB user db2inst1 using 12345678

$ db2pd -d macrodb -hadr

如果切换成功,可以使用db2pd命令查看数据库的状态。

3.连接到新的主数据库并检测状态

使用如下命令测试是否存在t1表,并且表的数据都存在:

$ db2 CONNECT TO MACRODB

$ db2 “select * from t1”

配置TSA

配置前环境要求

1.在配置高可用集群之前首先要确认/etc/services文件已经修改完成。

2.确认/etc/hosts文件是否已经添加两节点的主机名和IP地址的对应关系。

3.在所有即将加入集群域的节点上运行db2start启动实例。确认所有的HADR节点数据库都

被启动并且状态正确。主数据库和备用数据库都要有Peer状态信息。

4.确认HADR中所有节点的数据库参数HADR_PEER_WINDOW被正确设定:

$ db2 update db cfg for macrodb using HADR_PEER_WINDOW 120

配置过程

TSA环境要求

以上所述的内容都符合要求后还需要做下面操作。满足网络通讯的要求。

# /usr/sbin/rsct/install/bin/recfgct

注意:需要用root用户执行这个操作。这个命令用来重新设置节点,生成每个节点的唯一

标识。

# /usr/sbin/rsct/bin/preprpnode lab_db01 lab_db02

这个操作需要在每个节点上都执行一边,此操作用来把节点加入到集群中

安装TSA

略。在安装DB2 V9.7 过程中已经缺省安装

具体步骤可以参考如下:

1.在REDHAT系列系统中可以用如下命令查看TSA是 否已经被安装。

$ rpm -qa|grep sam

sam-2.2.0.7-08170

r-2.2.0.7-08170

5

5

$ rpm -qa|grep rsct

-2.5.1.2-08141

-2.5.1.2-08141

erm-2.5.1.2-08141

-2.5.1.2-08141

$ rpm -qa|grep src

src-1.3.0.4-08141

根据环境的不同,软件版本会有 不同。

2.安装前检查

在安装TSA之前需要运行检查脚本确认当前系统是否适合当前版本的TSA软件。步 骤如下:

# ./prereqSAM

3.安装TSA

在检查步骤通过后就可以进行TSA软件的安装。安装步骤如下所示:

# ./installSAM

4.安装后检查

根据安装最后的警告提示,设定用户环境变量CT_MANAGEMENT_SCOPE。设定方法如下所

示:

$ echo export CT_MANAGEMENT_SCOPE=2 >>~/.bashrc

配置TSA高可用性

注:配置TSA高可用性需要首先在备节点上执行,然后在主节点上执行

1.在备数据库上执行

$db2haicu

给集群取个名字

定义集群的成员数量

选择一个仲裁设备(网络)

定义仲裁设备的IP

创建集群成员网络设备

选择高可用性模式(TSA)

2.在主数据库上执行:

$db2haicu

3.查看ha状态:

$lssam

TSA日常维护操作

1.查看当前的高可用域:

$lsrpdomain

2.查看添加到域中的节点

$ lsrpnode

3.启动停止域中节点

1)在备机上执行如下命令

# id 确认当前登陆的是root用户

2)# ps -ef|grep rsct

查看rsct相关进程

3)# lssam

查看被管理和启动的资源

4)# lsrg

查看资源组

5)在节点2上停止资源组

# chrg -o offline db2_db2inst1_db2inst1_SAMPLE-rg db2_db2inst1_lab_db01_0-rg

db2_db2inst1_lab_db02_0-rg

6)查看被管理和下线的资源

# lssam

7)查看节点信息

# lsrpnode

8)停止备机节点

# stoprpnode lab_db02

9)在备机上查看节点信息

# lsrpnode

10)查看被管理的资源信息

# lssam

11)在主机上启动备机节点

# startrpnode lab_db02

12)在备机上启动资源组

#chrg -o online db2_db2inst1_db2inst1_SAMPLE-rg db2_db2inst1_lab_db01_0-rg

db2_db2inst1_lab_db02_0-rg