教你搭建DB2 DPF for Linux/Unix

发布时间:2020-12-01编辑:脚本学堂
教你搭建DB2 DPF for Linux/Unix

已知问题和解决方案:

(1)在某些情况下,在删除了原先的instance以后,不能创建同名的instance。
错误是sqllib目录已经存在,即使删除也不管用.可以把instance用户的home目录设成不可读不可写,然后再创建instance有时可以成功。

rsh必须在每台机器的instance用户下都要配置。
这样要保证从环境中的任何一台机器的instance用户都可以通过rsh访问其他任何一台机器的instance用户的命令。

rsh的配置参见SMP中配置rsh

db2nodes.cfg是配置多partition的关键配置文件.位置一般在instance用户的$HOME/sqllib/.文件格式是:
<logic port> <hostname> <logic port>
<logic port> <hostname> <logic port>
<logic port> <hostname> <logic port>
...

建立几个partition的MPP或SMP Cluster环境,就在里面配几行。

示例:
0 volvo 0
1 volvo 1
2 toyota 0
3 acadia 0
4 acadia 1
5 acadia 2

这是一个DB2 SMP Cluster的db2nodes.cfg,其中volvo,toyota,acadia都是环境中的机器名。
这个文件在volvo上2个 partition,在toyota上1个partition,在acadia上3个partition。
第一列的数字是整个环境的logic port不能重复。第三列的数字是在那台机器的instance上的logic port可以重复。

每台机器上的配置都必须相同。
假使一个4个partition的instance。
至少需要使用root用户在/etc/services中配置以下端口:

DB2c_<instance name>     61000/tcp
DB2_<instance name>      61001/tcp
DB2_<instance name>_1    61002/tcp
DB2_<instance name>_2    61003/tcp
DB2_<instance name>_3    61004/tcp
DB2_<instance name>_4    61005/tcp
DB2_<instance name>_END  61008/tcp

其中,DB2c_<instance name>是定义给db manager用的.还需要使用:
db2 update dbm cfg using SVCENAME DB2c_<instance name>
定义到数据库的dbm的参数中.

而DB2_<instance name>到DB2_<instance name>_END,是用来给每个partition用的.后一个必须是前一个加1。

每台机器上都要配置
使用db2 instance用户:
db2set DB2COMM=TCPIP

配置完以上的选项,数据库至少应该可以正常启动。
[instpt@acadia script]$ db2start
06/28/2007 22:32:57     1   0   SQL1063N  DB2START processing was successful.
06/28/2007 22:32:58     3   0   SQL1063N  DB2START processing was successful.
06/28/2007 22:32:58     0   0   SQL1063N  DB2START processing was successful.
06/28/2007 22:32:58     2   0   SQL1063N  DB2START processing was successful.
SQL1063N  DB2START processing was successful.

配置DPF考虑若干场景:
1 一台物理机单个分区  最简单的单机单数据库环境。
2 一台物理机两个分区
3 两台物理机四个分区  配置同2。
4 三台物理机六个分区  配置同2。

所以介绍配置场景2和3的方法。
===============================
准备工作:
1、检查系统配置

补丁升级、系统时间设置。
每台机器的操作系统必须完全相同,包括位数、小版本号和补丁,如果有任何一台机的操作系统版本不同,即使是细微不同,都有可能造成许多奇怪的错误。
每台机器都必须安装完全相同的DB2版本。

2、启用远程shell程序

对于数据库分区环境,DB2需要一个远程shell程序来在远程分区上执行命令。
在DB28.2之前,rsh被默认为远程shell机制,用于分区间的通信。OPENSSH用于替代rsh,以便在不安全的通道上提供有安全保障的通信。为支持一个受安全保障的环境,在数据库分区环境中,应该使用openSSH,而不是rsh。
检测rsh服务:使用实例用户运行 rsh <hostname> date  #hostname是机器名 正常情况下返回机器时间。

3、设置NFS

对于一个数据分区配置,必须有一个可供所有参与分区数据库系统的机器使用的文件系统。
这个文件系统将用于DB2实例的home目录。容纳DB2实例的机器被称为instance-owning机器。为了共享该文件系统,必须配置NFS。NFS盘需要mouont到所有机器上。

4、创建新用户和组
4.1 instance用户和fenced用户的home目录必须建立在NFS盘上,而且必须是NFS盘上的同一个目录。
推荐创建新的DB2 instance用户和组,而不用安装DB2时默认创建的用户 组,至少创建2个用户和2个组。

4.2 在所有机器上,建立db2 admin server : dascrt -u <db2 admin user>
                       启动 db2 admin server:db2admin start

4.3 在node0所在机器上,创建fenced user和instance user:db2icrt -u <fenced user> <instance user>

可能的问题和解决方法:
(1)在某些情况下,删除了原先的instance以后,不能创建同名的instance,错误时sqllib目录已经存在。几时删除也不管用。
     可以把instance用户的home目录设成不可读不可写,然后再创建instance有时可以成功。
(2)rhs必须在每台机的instance用户下都要配置,保证从环境中的任何一台机器的instance用户都可以通过rsh访问其他任何一台机器的instance用户的命令。

场景2的配置(一台物理机两个分区)
1、查看系统配置
prtconf|more
如:power6, 4processors, 内核64bit,内存15G,主机名***,vg有rootvg/datavg/dbvg。

oslevel -s
如:6100-04-01-0944

2、查看NFS是否运行(对于一台机的环境其实不需要)
lssrc -g nfs
rpc.statd    active
rpc.lockd    active

3、查看已有用户
cat /etc/passwd
db2fenc1,db2inst1,db2inst2,db2inst3

4、查看DB2版本
su - db2inst1
db2level
DB2 v9.5.0.5

5、用smit去掉用户db2inst2,用rm -r删除目录/db2home/db2inst2

6、用smit重建实例用户db2inst2
userID:212
primary group:db2udb
group set:db2udb,staff,dasadm1
home directory:/db2home/db2inst2(创建实例时自动认为该目录为实例目录)
记得设置密码!(passwd db2inst2)

7、用root用户新建实例
#/opt/IBM/db2/V9.5/db2icrt -u db2fenc1 db2inst2

8、验证可用端口
cat /etc/services

DB2_db2inst2 60008/tcp
DB2_db2inst2_1 60009/tcp
DB2_db2inst2_2 60010/tcp
DB2_db2inst2_END 60011/tcp

9、配置远程rsh,哪个用户需要远程执行rsh命令就在自己的home目录下建立.rhosts文件。
例如对db2inst2用户,用db2inst2创建:vi /db2home/db2inst2/.rhosts
添加:hostname instance_owner_user_name
但用rsh hostname date检验说permission denied。改为+。但在生产环境中不得用这个。

10、配置节点,用db2inst2更改/db2home/db2inst2/sqllib/db2nodes.cfg为:
0 hostname 0
1 hostname 1

11、设置tcp/ip通信
root用户修改/etc/services: db2_conn  50000/tcp
db2set DB2COMM=tcpip
db2 terminate
db2 update dbm cfg using svcename db2_conn

12、启动实例,创建分区的数据库
db2start
db2 "create db reportdb on /db2data(数据库目录) using codeset gbk territory cn pagesize 16 k"
则在/db2data下创建db2inst2目录,里面有两个节点NODE0000、NODE0001,每个节点里有一个数据库的分区REPORTDB,里面有三个系统自建的表空间。

上一篇:返回列表
下一篇:DB2基础知识(1)了解DB2