在 Linux 上利用数据分区功能提高可伸缩性和性能(4)
- UID
- 1066743
|
在 Linux 上利用数据分区功能提高可伸缩性和性能(4)
步骤 6. 创建所需的组和用户在数据库分区环境中,需要为 DB2 创建三个组和用户 ID,如下表所示:
表 4. 所需的 DB2 组和用户用户 ID组 ID描述db2inst1db2iadm1DB2 实例用户 ID 和组 IDdb2fenc1db2fadm1DB2 fenced 用户 ID 和组 IDdasusr1dasadm1DB2 Administration Server 用户 ID 和组 ID
在所有参与机器上的 DB2 instance owner ID 和密码应该是一致的,而且,它的 home 目录应该在 NFS 共享目录中。fenced ID 应该配置为与 DB2 instance owner ID 相同。DAS 用户 ID 和密码在所有参与机器上可以各不相同;但是,为了简化配置和维护,可能需要使 DAS 用户 ID 和密码一致。
例如,您可以用以下命令在所有机器上创建 DB2 组,创建 DB2 用户 ID 以及设置初始密码:
- groupadd -g 999 db2iadm1
- groupadd -g 998 db2fadm1
- groupadd -g 997 dasadm1
- useradd -u 1100 -g db2iadm1 -m -d /db2home/db2inst1 db2inst1 -p password1
- useradd -u 1101 -g db2fadm1 -m -d /db2home/db22fenc1 db2fenc1 -p password2
- useradd -u 1102 -g dasadm1 -m -d /home/dasadm1 dasusr1 -p password3
- passwd db2inst1
- passwd db2fenc1
- passwd dasusr1
步骤 7. 在 instance-owning 机器和所有参与机器上安装 DB2 UDB可以使用 db2_install 脚本通过 RPM 安装实用程序在 Linux 系统上安装所有的 DB2 ESE 包。您可以使用该脚本首先在 instance-owning 机器上安装 DB2,然后在参与机器上安装 DB2。
由于必须在每个参与机器上安装 DB2,所以最好将安装代码放在一个共享的盘(例如在我们这个例子中是 /db2home)上。也可以将您的设置记录到一个响应文件中,然后使用该文件来配置其他的机器。
首先,为了安装 DB2,必须以 root 用户登录:
- 输入 db2_install 命令启动 db2_install 脚本,该脚本存放在 CD-ROM 的根目录下。
- 当 db2_install 提示输入产品关键字时,输入 DB2.ESE。
步骤 8. instance-owning 机器的配置这台机器将被视作 instance-owning 机器,因为它存储和共享 instance owner 的 home 目录。sqllib 目录正是位于这个目录中,此外在此目录中的还有 Database Manager Configuration 文件 (DBM CFG)、Instance Profile Registry、Node 目录和 System Database 目录。由于这些文件是共享的,所以对任何一个文件的更新在所有参与机器上都可以看到。为了配置 instance-owning 机器,需要执行以下步骤:
- 创建一个 DB2 实例您应该使用 DB2 instance owner ID 登录到系统,然后在 /opt/IBM/db2/V8.2/instance 下执行 db2icrt 创建一个供所有机器共享的 DB2 实例:
- cd /opt/IBM/db2/V8.1/instance
- ./db2icrt -u db2fenc1 db2inst1
其中 -u 指定 fenced ID。
需要注意的是,一个 DPF Instance 实际上存在于每个参与机器上,它们都使用相同的实例名、密码和共享 home 目录。当使用 DPF 时,被分区的是数据库,而不是实例。
- 启用 FCM所有参与机器必须通过一个通信设施互连,例如一个高速 TCPIP 网络。Fast Communications Manager (FCM) 被设计用来处理数据库分区服务器之间的通信。为了启用 FCM,在所有参与机器上的 /etc/services 文件中必须预留一个端口范围。DB2 提供在 /etc/services 文件中已经被预留的一个默认的端口范围;默认情况下,DB2 会修改 /etc/services 文件,以便将端口 60000-60003 用于分区之间的通信,端口 50000 用于应用程序通信。DB2 在创建实例时会为此预留一些端口。每个逻辑分区需要一个端口,并且每台机器需要预留相同的端口。每个条目包含一个端口名和端口号。
除了基本的配置外,FCM 端口看上去应该如下所示:
清单 4. /etc/services 中的 FCM 端口1
2
3
4
5
6
7
| DB2c_db2inst1 50000/tcp
#Add FCM port information
#
DB2_db2inst1 60000/tcp
DB2_db2inst1_1 60001/tcp
DB2_db2inst1_2 60002/tcp
DB2_db2inst1_END 60003/tcp
|
从 中可以看出,端口名是由实例名加上前缀 "DB2_" 得到的。最后一个端口名由实例名加上前缀 "DB2_" 和后缀 "_END" 得到。第一个端口名与最后一个端口名之间的端口名以 "_<序列号>" 为后缀。 端口号后面必须跟上 "/tcp"。
- 更新 DB2 实例参数使用 instance owner ID 登录到机器,并指定 DB2 将使用哪些协议。为了初始化协议,需要使用以下命令更新 DB2COMM profile 注册表变量:
db2set DB2COMM=TCPIP此外,需要在数据库管理器(DBM)配置参数中更新服务名,以指示哪些端口名将用于与 DB2 服务器和远程客户机的通信。这可以通过使用以下命令来完成:
db2 update dbm cfg using SVCENAME db2c_db2inst1 - 创建 DB2 Administration Server (DAS)如果要使用诸如 Configuration Assistant、Control Center、Replication Center 或 Development Centermust 之类的 GUI 工具,则必须让 DAS 处于运行状态。您可以作为 DAS 用户登录,然后使用以下命令创建一个 DAS 服务器:
- cd /opt/IBM/db2/V8.1/instance
- ./dascrt -u dasusr1
其中选项 -u 指定 DAS 的用户 ID。
可以用 DAS 管理用户 ID 登录,并执行命令 db2admin start 来启动 DAS 服务器。若要自动启动 DAS 服务器,则需要使用 DAS 管理用户 ID 并执行以下命令:
- cd /opt/IBM/db2/V8.1/instance
- ./dasauto -on
为了显示 autostart 状态,可以执行:
./dasauto ? - 更新 db2nodes.cfg 文件最后,需要更新 $HOME/sqllib/db2nodes.cfg 文件。db2nodes.cfg 文件包含配置信息,告诉 DB2 哪个服务器上的哪个分区参与了该实例。该文件有四列:
- 数据库分区号
- 服务器主机名
- 逻辑端口号
- 用于分区之间通信的网络接口(可选)
每个条目表示一个特定服务器上的一个数据库分区,该分区参与了该实例的数据库分区。例如,下面的 db2nodes.cfg 文件定义了四个数据分区。数据分区 0 和 1 在 server1 上,数据分区 2 和 3 在 server2 上。每个服务器有两个逻辑端口(每个逻辑分区对应一个),即端口 0 和 1。
清单 5. 示例 db2nodes.cfg1
2
3
4
| 0 server1 0
1 server1 1
2 server2 0
3 server2 1
|
- 更新 .rhosts 文件以允许远程命令为了允许执行远程命令,每个数据库分区必须有在所有其他参与服务器上执行远程命令的权限。因此,必须在 /db2home/db2inst1/.rhosts 文件中为每个服务器提供一个条目。.rhosts 文件应该有两列,分别为主机名和 instance owner ID。例如, .rhosts 文件中的下列条目表示参与一个实例的两个服务器。
清单 6. 示例 .rhosts1
2
| server1 db2inst1
server2 db2inst1
|
应该使用以下命令来确保只有 root 拥有读和写的访问权:
chmod 600 /db2home/db2inst1/.rhosts 步骤 9. 参与机器上的配置为了配置参与机器,需要执行以下步骤:
- 启用 FCM必须作为 root 用户登录到每台参与机器上,并将用于 FCM 定义的相同的端口名和端口号添加到 /etc/services 文件中。
- 创建 DB2 Administration Server必须在所有参与机器上安装 DAS。关于详细信息,请参考在配置 instance-owning 机器时创建 DB2 Administration Server 的方法。
步骤 10. 检验完成所有更新后,可能需要重新启动服务器,并在所有参与服务器上执行命令 db2_all date 来确保成功完成。 |
|
|
|
|
|