Chinaunix首页 | 论坛 | 博客
  • 博客访问: 267843
  • 博文数量: 51
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 606
  • 用 户 组: 普通用户
  • 注册时间: 2007-11-13 16:43
文章分类

全部博文(51)

文章存档

2011年(1)

2010年(3)

2009年(45)

2008年(2)

我的朋友

分类: LINUX

2009-06-25 16:13:13

如何为分区环境配置 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”列中:
    • df

ServerAServerB (以及集群中其他的每一台计算机):

  • 检验之前创建的文件系统 /data1 是否真的装配好了。发出以下命令,看 /data1 是否出现在输出的“Mounted on”列中:
    • df

步骤 2 - 必需的文件和包

以 root 身份,使适当的 DB2 镜像可用,然后检验 Red Hat 上是否安装了所有必需的包。

ServerA:

  1. 将 Intel 32 位 Linux 上的 DB2 UDB Enterprise Server Edition V8.1 的 Install Image C48THML.tar 文件复制到 /db2home/images 目录。
  2. 将用于 FixPak 5a 的 PSoft_10533_v81_fp5a_linuxintel_32.tar 文件复制到 /db2home/images 目录。
ServerAServerB (以及集群中其他每一台计算机)
  1. 检验是否安装了所需的 Red Hat 包,方法是发出以下命令:
    • rpm -qa | grep pdksh
    • rpm -qa | grep rsh
    • rpm -qa | grep nfs
如果上面所说的包没有安装,那么应该可以从 下载缺失的包。然后使用类似于 rpm -ivh pdkshxxxxxx.rpm 的命令安装下载的包,其中 pdkshxxxxxx.rpm 是包的名称。否则,与 Linux 系统管理员联系。
步骤 3 - 修改内核
参数 以 root 身份,修改 ServerAServerB (以及集群中所有其他的每一台计算机)上的内核参数,即添加以下条目到缺省的系统控制配置文件 /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 设置。为此,发出以下命令:
  • sysctl -p
步骤 4 - 启动 NFS 以 root 身份,检验 NFS 是否同时在 ServerAServerB (以及集群中所有其他的每一台计算机)上运行。发出以下命令:
  • showmount -e hostname
其中 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 身份,启用 ServerAServerB (以及集群中所有其他的每一台计算机)上的 rsh。
  1. 编辑 /etc/xinetd.d/rsh 文件并将 disable 标志改为 no
  2. 输入以下命令,重新启动 xinetd 服务器:
    • /etc/init.d/xinetd restart
步骤 6 - 配置 NFS 服务器 在 ServerA

上以 root 身份执行以下操作:
  1. 发出以下命令,确信装配了 /db2home 目录:
    • mount /db2home
  2. 确保新的文件系统将会在启动时被装配,这可以通过检查 /etc/fstab 是否包含相关条目来做到。如果没有关于 /db2home 的条目,那么应该添加这样的条目。在这里的配置中,我们使用:
    • /dev/hda7 /db2home ext3 defaults 1 2
  3. 添加一个条目到 /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。
  4. 运行以下命令,导出 NFS 目录:
    • /usr/sbin/exportfs -a
步骤 7 - 配置 NFS 客户机 在 ServerB (以及集群中所有其他的每一台计算机)上以 root 身份执行以下操作:
  1. 发出以下命令,创建将映射到 NFS 共享目录 /db2home 的新目录:
    • mkdir /db2home
  2. 添加一个条目到 /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 生效
  3. 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 用户和组(注意: 每台计算机上的用户和组必须相同):
  1. groupadd -g 999 db2iadm1
  2. groupadd -g 998 db2fadm1
  3. groupadd -g 997 dasadm1
  4. useradd -u 1004 -g db2iadm1 -m -d /db2home/db2inst1 db2inst1 -p password1
  5. useradd -u 1003 -g db2fadm1 -m -d /db2home/db2fenc1 db2fenc1 -p password2
  6. useradd -u 1002 -g dasadm1 -m -d /home/dasusr1 dasusr1 -p password3
  7. passwd db2inst1
  8. passwd db2fenc1
  9. 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 提示输入产品密码时,输入:
    • DB2.ESE
  • 安装 FixPak:
    • cd /db2home/images/FP5a
    • ./installFixPak
  • 在 Linux 上 DB2 的安装目录是 /opt/IBM/db2/V8.1
    步骤 10 - 实例所在计算机上安装后的任务 以 root 身份在 ServerA

    上执行以下操作:
    1. 创建 DB2 实例:
      • cd /opt/IBM/db2/V8.1/instance
      • ./db2icrt -u db2fenc1 db2inst1
    2. 为 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
    3. 更新服务器上的数据库管理器配置文件和 .profile 文件:
      1. su - db2inst1
      2. 通过运行 db2profile 脚本设置实例环境
        • ./db2home/db2inst1/sqllib/db2profile
        为了在每次用户登录到 Linux 系统上的时候设置用户环境,添加以下命令到 .profile 中:
        • vi /db2home/db2inst1/.profile file
        • ./db2home/db2inst1/sqllib/db2profile
      3. 更新 DBM 配置文件中的 SVCENAME 参数:
        • db2 update dbm cfg using SVCENAME db2c_db2inst1
      4. 将 DB2COMM 注册表变量设置为 tcpip:
        • db2set DB2COMM=tcpip
      5. 停止并重新启动实例,以便使得这些更改生效
        • db2stop
        • db2start
    4. 以 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:
    1. 安装 DB2:
      • cd /db2home/images/009_ESE_LNX_32_NLV
      • ./db2_install
    2. 当 db2_install 提示输入产品密码时,输入:
      • DB2.ESE
    3. 现在安装 FixPak:
      • cd /db2home/images/FP5a
      • ./installFixPak
    步骤 12 - 分区配置 在分区数据库系统中,每个数据库分区服务器必须有权限来在参与实例的所有其他数据库分区服务器上执行远程命令。以 root 身份在 ServerA 上执行以下操作,以使 DB2 实例能在多个分区上运行:
    1. 在一个编辑器中打开 .rhosts 文件:
      • vi /db2home/db2inst1/.rhosts
    2. 添加以下两行到 .rhosts 中并保存:
      • ServerA db2inst1
      • ServerB db2inst1
    3. 为 root(只有 root)授予对 .rhosts 文件的读 (r) 和写 (w) 许可:
      • chmod 600 /db2home/db2inst1/.rhosts
    4. 为了定义哪些主机参与分区环境,必须更新 db2nodes.cfg
      • vi /db2home/db2inst1/sqllib/db2nodes.cfg
    5. 添加以下几行(表示分区号、主机名和逻辑端口)到 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 身份在 ServerAServerB 上输入:
    • db2_all date
    清单 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 了。尝试以下命令:

    1. db2stop
    2. db2start
    3. cd /db2home/db2inst1/sqllib/bin
    4. ./db2sampl
    5. db2 connect to sample
    6. db2 "select * from sales"

    阅读(1582) | 评论(0) | 转发(0) |
    给主人留下些什么吧!~~