如何为分区环境配置 DB2 UDB Enterprise Server Edition
级别: 中级
Priti Desai, DB2 UDB 顾问, IBM US
Fraser McArthur, DB2 UDB 顾问, IBM Canada
2005 年 5 月
本
文通过一个简单的例子,展示如何使用 db2_install 方法在 Red Hat Linux Advanced Server 2.1
上安装具有数据分区功能(DPF)的 IBM® DB2® Universal Database™ Enterprise Server
Edition V8.1。db2_install 的使用便于通过一个 telnet 会话来安装
DB2。学习在大型多服务器和多分区环境中安装和配置具有 DPF 的 DB2 所需的基本步骤。
概述
为了使单个数据库能扩展到多个服务器,需要使用 IBM 的 DB2 UDB V8.1 Enterprise Server Edition
(DB2 ESE V8.1) 的数据库分区功能(DPF)。此外,为了能够使用 DB2 UDB ESE 中的 DPF,需要一个有效的 DPF
许可。DPF 提供了必要的可伸缩性,以便将大型数据库分布到无共享(shared-nothing)架构下的多个(逻辑和物理)分区。DPF
对于独立的 SMP 服务器和由多个服务器组成的环境都是有利的。通过 DPF “分治(divide and conquer)”
处理,可以增强单个服务器(向上扩展)和服务器集群(向外扩展)的可伸缩性。
本文的目标是提供简单直观的逐步说明,向您展示如何使用
db2_install 脚本方法(而不是通过 GUI Setup 向导)在 Red Hat Linux Advanced Server
(AS) 2.1 上安装和配置具有 DPF 的 DB2 ESE V8.1。本文适合初学者用户,但是对于已经熟悉这种架构的 IT
架构师和专家也有一定的用处。db2_install 实用程序可以安装 DB2 文件集,但是不创建实例和用户,也不会执行任何其他由 DB2
Setup 向导执行的配置任务。当在有特殊需求的大型、复杂的数据库系统上安装 DB2 时,或者在使用 telnet 会话将 DB2 安装到
DB2 服务器上时,有些人喜欢使用 db2_install。
按照下面的步骤,便可以设计和设置多达 1000 个分区,但在我们的设置过程当中,我们使用两个基于 Intel 的 IBM Blade Server 机器来设置两个物理分区(每个物理服务器上还有两个逻辑分区)。
注意:
按照技术转移条款,以下简单易用的逐步说明已经在一个合作伙伴的站点上经过了测试。
图 1. 跨两台计算机的分区数据库
操作系统
Red Hat Advanced Server 2.1 (RHAS)
硬件
基于 Intel 的双路 IBM Blade Servers:
- HS20 Blade Server
- 2 GB RAM
- 2 x 2.4 GHz
- 一台作为 NFS 服务器 (ServerA)
- 另一台作为 NFS 客户机 (ServerB)
IBM 中间件
- IBM DB2 UDB Enterprise Server Edition V8.1 (+DPF Feature) Linux for Intel 32-bit —— 从 C48THML.tar 安装
- Fixpak
5a —— 从 PSoft_10533_v81_fp5a_linuxintel_32.tar (FixPak link -
ftp://ftp.software.ibm.com/ps/products/db2/fixes/english/peoplesoft/v81fp5a/)
安装
文件系统配置
为 DB2 V8.1 分区环境而配置的两个基于 Intel 的双路 IBM Blade 服务器:
- 对
于分区环境,建议在集群中的一台机器上创建一个单独的 DB2 主文件系统,用作实例主目录。这个文件系统将通过 NFS —— 从 NFS
服务器(在这里是 ServerA)导出的 NFS 和装配在其他计算机(在这里是 ServerB)上的 NFS ——
在集群中所有的计算机之间共享。在这里的配置中,我们创建了文件系统
/db2home
,装配点为 ServerA 上的 /db2home
,这是 DB2 Instance 属主的主目录。 - 对于分区数据库系统,在每台参与分区数据库的计算机上都应该有一个单独的数据库文件系统。在这里的配置中,我们创建了一个名为
/data1
的文件系统,装配点为 ServerA 和 ServerB 上的 /data1
。 - DB2 install 和 fixpak 镜像必须能够被所有参与分区的计算机访问。我们简单地在 ServerA 上的
/db2home
文件系统中创建了一个名为 images
的目录。这个目录将包含 DB2 install 镜像和 fixpak,并且将通过 NFS 向所有参与分区的计算机开放。
安装和配置说明
下面是这里的配置中使用的两台计算机:
- ServerA
: 实例所在的计算机(最多只能有一台驻留实例的计算机),其中 ServerA 是这台计算机的真实主机名。
- ServerB
(以及集群中其他的每一台计算机):参与分区的计算机,其中 ServerB 是计算机的真实主机名。
下面是在 DPF 环境中安装和运行 DB2 的步骤。
步骤 1 - 检验文件系统的装配情况
以 root 身份,检验所需的文件系统是否装配好。我们假设之前已创建了文件系统(请参阅前面的“文件系统配置”)。
ServerA:
- 检验之前创建的文件系统
/db2home
是否真的装配好了。发出以下命令,看 /db2home
是否出现在输出的“Mounted on”列中:
ServerA
和 ServerB
(以及集群中其他的每一台计算机):
- 检验之前创建的文件系统
/data1
是否真的装配好了。发出以下命令,看 /data1
是否出现在输出的“Mounted on”列中:
步骤 2 - 必需的文件和包
以 root 身份,使适当的 DB2 镜像可用,然后检验 Red Hat 上是否安装了所有必需的包。
ServerA:
- 将 Intel 32 位 Linux 上的 DB2 UDB Enterprise Server Edition V8.1 的 Install Image
C48THML.tar
文件复制到 /db2home/images
目录。 - 将用于 FixPak 5a 的
PSoft_10533_v81_fp5a_linuxintel_32.tar
文件复制到 /db2home/images
目录。
ServerA
和
ServerB
(以及集群中其他每一台计算机)
- 检验是否安装了所需的 Red Hat 包,方法是发出以下命令:
rpm -qa | grep pdksh
rpm -qa | grep rsh
rpm -qa | grep nfs
如果上面所说的包没有安装,那么应该可以从 下载缺失的包。然后使用类似于
rpm -ivh pdkshxxxxxx.rpm
的命令安装下载的包,其中
pdkshxxxxxx.rpm
是包的名称。否则,与 Linux 系统管理员联系。
步骤 3 - 修改内核
参数 以 root 身份,修改
ServerA和
ServerB
(以及集群中所有其他的每一台计算机)上的内核参数,即添加以下条目到缺省的系统控制配置文件
/etc/sysctl.conf
:
kernel.msgmni = 1024
kernel.sem = 250 256000 32 1024
其中
max semaphores system wide = max number of arrays x max semaphores/array
。 现在需要从缺省文件
/etc/sysctl.conf
中载入刚刚更新的 sysctl 设置。为此,发出以下命令:
步骤 4 - 启动 NFS 以 root 身份,检验 NFS 是否同时在
ServerA
和
ServerB
(以及集群中所有其他的每一台计算机)上运行。发出以下命令:
其中
hostname
是计算机的真实主机名。在这里的配置中,两个主机名分别是 ServerA 和 ServerB。 在不带
hostname
参数的情况下输入
showmount
命令可以检查本地系统。如果 NFS 没有激活,那么将收到如下所示的消息:
showmount: hostname: RPC: Program not registered
这条
showmount
命令应该列出文件系统。如果该命令失败,那么 NFS 服务器可能还没有启动。以 root 身份运行以下命令来手动启动服务器:
/etc/rc.d/init.d/nfs restart
步骤 5 - 启用 rsh 以 root 身份,启用
ServerA
和
ServerB
(以及集群中所有其他的每一台计算机)上的 rsh。
- 编辑
/etc/xinetd.d/rsh
文件并将 disable 标志改为 no
。 - 输入以下命令,重新启动
xinetd
服务器: /etc/init.d/xinetd restart
步骤 6 - 配置 NFS 服务器 在
ServerA
上以 root 身份执行以下操作:
- 发出以下命令,确信装配了
/db2home
目录: - 确保新的文件系统将会在启动时被装配,这可以通过检查
/etc/fstab
是否包含相关条目来做到。如果没有关于 /db2home
的条目,那么应该添加这样的条目。在这里的配置中,我们使用: /dev/hda7 /db2home ext3 defaults 1 2
- 添加一个条目到
/etc/exports
文件,以便在启动时自动地导出 NFS 文件系统。在这里的配置中,这个条目是: /db2home ServerA (rw,sync,no_root_squash) ServerB (rw,sync,no_root_squash)
如果有更多的计算机,那么这个条目看上去更像是这样的: /db2home ServerA (permissions) ServerB (permissions) ServerC (permissions)...
缺省情况下,permissions 被设为 rw 和 root_squash。设为 root_squash 意味着在访问 NFS
服务器上的文件时,客户机上的 root 用户不会被当作 root
用户来对待。虽然这种模式的操作在生产环境中通常是可取的,但是为了在集群中其他每一台计算机上创建用户,应该把它关闭。为此,可以将
permissions 部分设为 no_root_squash。 - 运行以下命令,导出 NFS 目录:
步骤 7 - 配置 NFS 客户机 在
ServerB
(以及集群中所有其他的每一台计算机)上以 root 身份执行以下操作:
- 发出以下命令,创建将映射到 NFS 共享目录
/db2home
的新目录: - 添加一个条目到
/etc/fstab
文件,以便在启动时自动装配 NFS 文件系统。 ServerA:/db2home /db2home nfs rw,timeo=300,retrans=5,hard,intr,bg,suid
其中, ServerA
- NFS 服务器的计算机名
rw - 读和写访问 timeo=300
- 如果 nfs 服务器在规定时间内没有响应(以十分之一秒为单位),则允许内核超时 retrans=5
- 设置在返回错误之前重复的请求数 hard
- 当服务器挂起时,客户机将被阻塞,直到服务器重新处于活动状态 intr
- 客户机(用户)可以中断会导致错误的被阻塞的操作 bg
- 如果装配失败,系统继续在后台重试,然后继续 suid
- 允许 set-user-identifier 或 set-group-identifier 生效
- NFS 装配导出的文件系统
mount SereverA:/db2home /db2home
如果 NFS 不处于活动状态,那么将收到类似于下面的消息: showmount: ServerA: RPC: Program not registered
上面的 showmount
命令应该会列出文件系统。如果该命令失败,那么可能是因为 NFS 服务器还没有启动。以 root 身份在 NFS 服务器上运行以下命令手动启动该服务器: /etc/rc.d/init.d/nfs restart
步骤 8 - 创建所需的组和用户 以 root 身份在
ServerA
和
ServerB
(以及集群中所有其他的每一台计算机)上执行以下命令,为 DB2 创建适当的 OS 用户和组(
注意:
每台计算机上的用户和组必须相同):
groupadd -g 999 db2iadm1
groupadd -g 998 db2fadm1
groupadd -g 997 dasadm1
useradd -u 1004 -g db2iadm1 -m -d /db2home/db2inst1 db2inst1 -p password1
useradd -u 1003 -g db2fadm1 -m -d /db2home/db2fenc1 db2fenc1 -p password2
useradd -u 1002 -g dasadm1 -m -d /home/dasusr1 dasusr1 -p password3
passwd db2inst1
passwd db2fenc1
passwd dasusr1
步骤 9 - 在实例所在的计算机上安装 DB2 UDB V8.1 ESE 和 FixPak 以 root 身份在
ServerA
上执行以下命令,安装 IBM DB2 UDB Enterprise Server Edition V8.1 和 FixPak:
cd /db2home/images/
tar xvf C48THML.tar
tar xvf PSoft_10533_v81_fp5a_linuxintel_32.tar
安装 DB2: cd /db2home/images/009_ESE_LNX_32_NLV
./db2_install
当 db2_install 提示输入产品密码时,输入: 安装 FixPak: cd /db2home/images/FP5a
./installFixPak
在 Linux 上 DB2 的安装目录是
/opt/IBM/db2/V8.1
。
步骤 10 - 实例所在计算机上安装后的任务 以 root 身份在
ServerA
上执行以下操作:
- 创建 DB2 实例:
cd /opt/IBM/db2/V8.1/instance
./db2icrt -u db2fenc1 db2inst1
- 为 DB2 实例配置 TCP/IP,即更新
/etc/services
文件,在其中指定 DB2 服务器用于侦听客户机请求的服务名和端口号。之后这个文件看上去应该是这样的: db2c_db2inst1 50000/tcp # DB2 connections service port
DB2_db2inst1 60000/tcp
DB2_db2inst1_1 60001/tcp
DB2_db2inst1_2 60002/tcp
DB2_db2inst1_END 60003/tcp
- 更新服务器上的数据库管理器配置文件和
.profile
文件: su - db2inst1
- 通过运行 db2profile 脚本设置实例环境
./db2home/db2inst1/sqllib/db2profile
为了在每次用户登录到 Linux 系统上的时候设置用户环境,添加以下命令到 .profile
中: vi /db2home/db2inst1/.profile file
./db2home/db2inst1/sqllib/db2profile
- 更新 DBM 配置文件中的 SVCENAME 参数:
db2 update dbm cfg using SVCENAME db2c_db2inst1
- 将 DB2COMM 注册表变量设置为 tcpip:
- 停止并重新启动实例,以便使得这些更改生效
- 以 root 身份,创建 DB2 Administration Server (DAS)
su -
cd /opt/IBM/db2/V8.1/instance
./dascrt -u dasusr1
注意: 如果您计划使用 DB2 GUI 工具,例如 Control Center 和 Task Center,那么必须要有 DAS。 步骤 11 - 在参与分区的计算机上安装 DB2 UDB V8.1 ESE 和 FixPak 以 root 身份在
ServerB
(以及集群中所有其他的每一台计算机)上执行以下操作,以便安装 IBM DB2 UDB Enterprise Server Edition V8.1 和 FixPak:
- 安装 DB2:
cd /db2home/images/009_ESE_LNX_32_NLV
./db2_install
- 当 db2_install 提示输入产品密码时,输入:
- 现在安装 FixPak:
cd /db2home/images/FP5a
./installFixPak
步骤 12 - 分区配置 在分区数据库系统中,每个数据库分区服务器必须有权限来在参与实例的所有其他数据库分区服务器上执行远程命令。以 root 身份在
ServerA
上执行以下操作,以使 DB2 实例能在多个分区上运行:
- 在一个编辑器中打开
.rhosts
文件: vi /db2home/db2inst1/.rhosts
- 添加以下两行到
.rhosts
中并保存: ServerA db2inst1
ServerB db2inst1
- 为 root(只有 root)授予对
.rhosts
文件的读 (r) 和写 (w) 许可: chmod 600 /db2home/db2inst1/.rhosts
- 为了定义哪些主机参与分区环境,必须更新
db2nodes.cfg
: vi /db2home/db2inst1/sqllib/db2nodes.cfg
- 添加以下几行(表示分区号、主机名和逻辑端口)到
db2nodes.cfg
并保存: 0 ServerA 0
1 ServerA 1
2 ServerB 0
3 ServerB 1
在这里,每台物理服务器上有两个逻辑分区。
为了允许参与分区数据库系统的数据库分区服务器之间进行通信,必须在
/etc/services
文件中保留 TCPIP 端口。以 root 身份在
ServerB
(以及集群中所有其他的每一台计算机)上确保每台计算机上的
/etc/services
文件包含一组相同的 DB2 条目。
/etc/services
文件包含以下 DB2 条目: # Local services
db2c_db2inst1 50000/tcp
DB2_db2inst1 60000/tcp
DB2_db2inst1_1 60001/tcp
DB2_db2inst1_2 60002/tcp
DB2_db2inst1_END 60003/tcp
完成所有更新后,便可以使用
db2_all
命令来检查设置情况,该命令将查询所有分区(在这里,两个物理服务器上各有两个逻辑分区)上的数据。以 db2inst1 身份在
ServerA
或
ServerB
上输入:
清单 1. db2_all test
$ db2_all date Fri Jul 16 18:57:57 EDT 2004 ServerA: date completed ok
Fri Jul 16 18:57:57 EDT 2004 ServerA: date completed ok Fri Jul 16
18:57:49 EDT 2004 ServerB: date completed ok Fri Jul 16 18:57:49 EDT
2004 ServerB: date completed ok $
这样可以检验是否成功地用 db2_inst
all 在 Red Hat Advanced Server 2.1 上安装和配置了带有 DPF 的 DB2 UDB ESE V8.1。
步骤 13 - 测试配置
现在可以使用带有 DPF 环境的 DB2 UDB ESE V8.1 了。尝试以下命令:
db2stop
db2start
cd /db2home/db2inst1/sqllib/bin
./db2sampl
db2 connect to sample
db2 "select * from sales"
阅读(1582) | 评论(0) | 转发(0) |