如何在单个Linux虚拟机上安装Db2 pureScale
1.前言
本文阐述了在Suse Linux上安装Db2 pureScale的详细过程,仅部署一个member和一个CF,主要目的是让大家在单个虚机上可以安装pureScale,不需要很多的机器和网络设备,帮助大家尽快的熟悉pureScale的安装和使用。
2.软件下载
在下面的网址中下载Db2 11.1的开发版,这个版本对使用pureScale不需要许可证文件。
https://www.ibm.com/us-en/marketplace/ibm-db2-direct-and-developer-editions
建议使用IE浏览器,在我本机使用firefox的时候有问题,可能和版本和浏览器的设置有关系。
3.如何将安装包传到虚拟机的环境
可以通过以下两种方式
1)将本机Windows的IP设置为和虚拟机的IP在同一个网段,然后通过sftp传输安装包;
2)通过在虚拟机中的设置/选项/Shared Folders中增加共享目录
本人在安装过程中无法使用第二种方式,因此采用了第一种方式;
4.支持的操作系统版本
请参考下面的网址:
https://www.ibm.com/support/knowledgecenter/SSEPGG_11.1.0/com.ibm.db2.luw.qb.server.doc/doc/r0057441.html
5.存储空间方面的准备工作
在开始安装之前,先准备下面的3块硬盘,在虚机的设置界面里选择增加硬盘,使用缺省配置就可以,界面如下:
这3块盘的容量和用途如下
/dev/sdb 3GB #实例共享目录instance_shared_dir
/dev/sdc 6GB #用户数据库的数据空间,建议不少于3GB,否则可能创建数据库失败
/dev/sdd 1GB #用户数据库日志空间
执行fdisk -l将看到这3块盘,输出如下:
node01:~/Desktop # fdisk -l
Disk /dev/sda: 42.9 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 cylinders, total 83886080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00020b25
Device Boot Start End Blocks Id System
/dev/sda1 2048 4208639 2103296 82 Linux swap / Solaris
/dev/sda2 * 4208640 83886079 39838720 83 Linux
WARNING: GPT (GUID Partition Table) detected on '/dev/sdb'! The util fdisk doesn't support GPT. Use GNU Parted.
Disk /dev/sdb: 3221 MB, 3221225472 bytes
255 heads, 63 sectors/track, 391 cylinders, total 6291456 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/sdb1 1 6291455 3145727+ ee GPT
WARNING: GPT (GUID Partition Table) detected on '/dev/sdc'! The util fdisk doesn't support GPT. Use GNU Parted.
Disk /dev/sdc: 6442 MB, 6442450944 bytes
255 heads, 63 sectors/track, 783 cylinders, total 12582912 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/sdc1 1 12582911 6291455+ ee GPT
WARNING: GPT (GUID Partition Table) detected on '/dev/sdd'! The util fdisk doesn't support GPT. Use GNU Parted.
Disk /dev/sdd: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders, total 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/sdd1 1 2097151 1048575+ ee GPT
6.修改内核参数
内核参数的调整建议如下:
kernel.shmmni (SHMMNI) 256 * <size of RAM in GB>
kernel.shmmax (SHMMAX) <size of RAM in bytes>1
kernel.shmall (SHMALL) 2 * <size of RAM in bytes> (setting is in 4 K pages) 2
kernel.sem (SEMMNI) 256 * <size of RAM in GB>
kernel.sem (SEMMSL) 250
kernel.sem (SEMMNS) 256 000
kernel.sem (SEMOPM) 32
kernel.msgmni (MSGMNI) 1 024 * <size of RAM in GB>
kernel.msgmax (MSGMAX) 65 536
kernel.msgmnb (MSGMNB) 65 536
vm.swappiness = 0
vm.overcommit_memory = 0
kernel.randomize_va_space = 0
本人在安装虚机时,设置是使用4.5GB的内存,因此在调整这些参数时,按4GB内存进行调整;调整的方式是编辑/etc/sysctl.conf文件,加入下面的内容:
#Example for a computer with 4GB of RAM:
kernel.shmmni=1024
kernel.shmmax=4294967296
kernel.shmall=2097152
#kernel.sem=<SEMMSL> <SEMMNS> <SEMOPM> <SEMMNI>
kernel.sem=250 256000 32 1024
kernel.msgmni=4096
kernel.msgmax=65536
kernel.msgmnb=65536
然后执行sysctl -p就可以生效,不需要重启操作系统。
7.确认操作系统版本和补丁
解压产品包后,执行db2prereqcheck -p确认操作系统满足pureScale的安装要求,如果缺少某个包或者版本太低,都会影响pureScale的安装;
关于pureScale在linux上的安装和规划,请参考下面的网址:
https://www.ibm.com/support/knowledgecenter/SSEPGG_11.1.0/com.ibm.db2.luw.qb.server.doc/doc/r0061535.html
8.创建用户和组
运行groupadd --gid选项以使用组标识符999和998创建组db2iadm1和db2fadm1:
groupadd --gid 999 db2iadm1
groupadd --gid 998 db2fadm1
运行useradd创建每个用户,分配用户ID,组,并为用户创建主目录:
useradd --uid 1004 -g db2iadm1 -m -d /home/db2sdin1 db2sdin1
useradd --uid 1003 -g db2fadm1 -m -d /home/db2sdfe1 db2sdfe1
passwd db2sdin1
passwd db2sdfe1
9.配置root用户和db2sdin1用户的ssh信任关系
以root用户为例
mkdir ~/.ssh
cd .ssh
ssh-****** -t dsa
此操作在~/ .ssh目录中生成两个新文件,id_dsa(私钥)和id_dsa.pub(公钥)用于DSA加密
cat id_dsa.pub >> authorized_keys
chmod 644 authorized_keys
10.安装Db2产品包
执行db2setup程序。
使用典型安装,选择不创建实例。
在Host list的界面中,只有一台机器,就是虚机的hostname node01。
11.创建GPFS文件系统
通过db2cluster_prepare命令,创建将来创建实例要使用的instance shared dir:
node01:/opt/ibm/db2/V11.1/instance # ./db2cluster_prepare -instance_shared_dev /dev/sdb -instance_shared_mount /db2sd -t /tmp/sd_prepare.trc -l /tmp/sd_prepare.log
DB2 installation is being initialized.
Total number of tasks to be performed: 1
Total estimated time for all tasks to be performed: 60 second(s)
Task #1 start
Description: Creating IBM General Parallel File System (GPFS) Cluster and Filesystem
Estimated time 60 second(s)
Task #1 end
The execution completed successfully.
For more information see the DB2 installation log at "/tmp/sd_prepare.log".
DBI1070I Program db2cluster_prepare completed successfully.
12.创建实例
cd /opt/ibm/db2/V11.1/instance
./db2icrt -m node01 -mnet node01 -cf node01 -cfnet node01 -instance_shared_dir /db2sd -tbdev node01 -u db2sdfe1 -d db2sdin1
在安装中出现下面的两个警告,并不影响安装:
Operating system information: Linux 3.0.101-63-default.#1 SMP Tue Jun 23 16:02:31 UTC 2015 (4b89d0c) x86_64
WARNING: DBI20167W The DB2 pureScale instance was set to use the TCP/IP network protocol because the network is not configured for the RDMA network protocol.
WARNING: The DB2 installer detected there is "2331MB" space available in instance shared directory "/db2sd". It recommends there is "10240MB" free space in the instance shared directory.
13.在安装结束后,提示要修改文件/var/ct/cfg/netmon.cf ,此文件用户pureScale的网络监控
cat /var/ct/cfg/netmon.cf
!REQD eth1 192.168.1.2
!IBQPORTONLY !ALL
!LINK_STATE_REQD_ONLY !ALL
!IBQPORTONLY !ALL
For more details see sections "Setting up the netmon.cf file on a TCP/IP network" or "Setting up the netmon.cf file on a RoCE network" in the DB2 Information Center based on the choice of your host network.
有关更多详细信息,请参阅DB2信息中心中的“Setting up the netmon.cf file on a TCP/IP network" or "Setting up the netmon.cf file on a RoCE network”部分,具体取决于主机网络的选择。
另外由于使用的是tcpip网络,
还需要设置Db2的注册变量DB2_SD_ALLOW_SLOW_NETWORK ,否则实例不能正常启动。
[email protected]:~> db2set DB2_SD_ALLOW_SLOW_NETWORK=ON
在正常启动之后,应该能看到管理器参数CF_TRANSPORT_METHOD为TCP
Transport method to CF (CF_TRANSPORT_METHOD) = TCP
在DB2 pureScale环境中,cf_transport_method配置参数控制用于DB2成员与集群高速缓存设施(CF)之间通信的方法。
默认[范围]
RDMA [RDMA,TCP]
当cf_transport_method设置为RDMA时,DB2成员必须使用远程直接内存访问(RDMA)与CF通信。 要使用RDMA协议网络,必须使用的硬件配置是安装了相应InfiniBand硬件的InfiniBand网络或使用RoCE适配卡的以太网网络。
当cf_transport_method参数设置为TCP时,DB2成员使用TCP / IP协议网络与CF通信。
14.数据库创建
创建存放表空间的目录
node01:/opt/ibm/db2/V11.1/bin # ./db2cluster -CFS -CREATE -FILESYSTEM db2data -DISK /dev/sdc -MOUNT /db2/db2data
创建存放日志的目录
node01:/opt/ibm/db2/V11.1/bin # ./db2cluster -CFS -CREATE -FILESYSTEM db2log -DISK /dev/sdd -MOUNT /db2/db2log
创建数据库
db2 "create db psdb on /db2/db2data using codeset gbk territory cn"
将日志路径移动到/db2/db2log目录中
db2 connect to psdb
db2 get db cfg | grep -i LOG
db2 update db cfg using newlogpath /db2/db2log
db2 terminate
db2 deactivate db psdb
db2 activate db psdb
15.如果你安装的是Db2企业版或者超级企业版,还需要注册Db2和TSA的许可证,否则只能使用90天.
注册Db2许可证的方法比较简单,执行下面的命令;
/opt/IBM/db2/V11.1/adm/db2licm -a filename
TSA许可证的注册相对步骤会多一下,参照下面的步骤注册即可:
用root用户执行:
# samlicm -i ./sam41.lic
在对群集中的主机上的操作系统或硬件进行更新时,可以将群集置于维护模式。
要执行此任务,您必须是Db2集群服务管理员。
操作过程
作为实例用户,请执行以下步骤:
通过在单个主机上发出以下命令来停止所有主机上的数据库管理器:
su – db2sdin1
db2sotp
在每台主机上,通过发出以下命令来停止Db2实例:
db2stop instance on <hostname>
其中hostname表示给定成员或CF的主机名,并且对集群中的每个主机运行hostname命令上的db2stop实例。
作为Db2群集服务管理员,请执行以下步骤:
通过发出以下命令,将集群管理器置于所有主机上的维护模式:
DB2DIR / bin / db2cluster -cm -enter -maintenance -all
其中DB2DIR表示Db2副本的安装位置。
通过发出以下命令将主机上的群集文件系统服务置于维护模式:
DB2DIR / bin / db2cluster -cfs -enter -maintenance -all
其中DB2DIR表示Db2副本的安装位置。
接下来做什么
作为Db2群集服务管理员,请执行以下步骤:
执行计划的任何维护活动。例如,安装修订包更新,或对Db2pureScale环境进行网络拓扑更改。
通过发出以下命令退出主机上的集群管理器维护模式:
DB2DIR / bin / db2cluster -cm -exit -maintenance -all
其中DB2DIR表示Db2副本的安装位置。
通过发出以下命令确保所有成员和域都处于活动状态:
DB2DIR / bin / db2cluster -cm -list -host -state
其中DB2DIR表示Db2副本的安装位置。
通过发出以下命令在主机上退出群集文件系统维护模式:
DB2DIR / bin / db2cluster -cfs -exit -maintenance -all
其中DB2DIR表示Db2副本的安装位置。如果超时,请通过发出DB2DIR / bin / db2cluster -cfs -list -host -state命令来检查集群文件系统的状态。
作为实例用户,请执行以下步骤:
在每台主机上,通过发出以下命令启动Db2实例:
db2start instance on <hostname>
其中hostname表示给定成员或CF的主机名,并且对集群中的每个主机运行hostname命令上的db2start实例。
通过发出以下命令启动数据库管理器:
su – db2sdin1
db2start
通过检查以下两个命令在每个节点上返回0来验证是否已应用Tivoli SA MP许可证
samlicm -p; echo $?
samlicm -t; echo $?
通过samlicm -s命令确认许可证注册成功
16.注册结束之后,重新启动实例
db2start instance on node01
[email protected]:~> db2start instance on node01
SQL1063N DB2START processing was successful.
[email protected]:~> db2start cf 128
SQL1063N DB2START processing was successful.
[email protected]:~> ps -u db2sdin1
PID TTY TIME CMD
5281 pts/0 00:00:00 db2bp
13593 ? 00:00:00 ca-mgmnt-lwd
13601 ? 00:00:01 ca-server
13617 pts/1 00:00:00 bash
17006 pts/0 00:00:00 ps
25534 pts/0 00:00:00 bash
[email protected]:~> db2start
04/21/2019 22:01:45 0 0 SQL1063N DB2START processing was successful.
SQL1063N DB2START processing was successful.
[email protected]:~> ps -u db2sdin1
PID TTY TIME CMD
5281 pts/0 00:00:00 db2bp
13593 ? 00:00:00 ca-mgmnt-lwd
13601 ? 00:00:03 ca-server
13617 pts/1 00:00:00 bash
19980 ? 00:00:00 db2sysc
19981 ? 00:00:00 db2sysc
19989 ? 00:00:00 db2sysc
20835 ? 00:00:03 db2sysc
21140 ? 00:00:00 db2vend
21851 ? 00:00:00 db2fmp
24244 pts/0 00:00:00 ps
25534 pts/0 00:00:00 bash
[email protected]:~> db2 activate db psdb
DB20000I The ACTIVATE DATABASE command completed successfully.
17.在安装过程中遇到的问题
1)没有设置DB2_SD_ALLOW_SLOW_NETWORK注册变量导致在执行db2start时报错。
2)在异常关闭虚机后,在连接数据库时报下面的错误
SQL1015N The database is in an inconsistent state.
解决办法如下:
降低numdb参数,从而增加分配给单个数据库的CF内存;
db2 update dbm cfg using numdb 2 immediate #如果不修改,后面的数据库恢复命令restart database将失败;
db2stop force
db2start
db2 restart database psdb
3)Windows操作系统和虚拟机的网络不通,无法传输Db2安装包
通过图形化界面控制中心中的网络设置将虚拟机的网络IP设置为和Windows上VMnet8的地址在同一个网段;如VMnet8的IP地址是169.254.196.181 ,你可以将虚拟机的IP地址设置为169.254.196.180 ;
但需要注意的是169.254.196.180 这种地址,在安装时pureScale并不能识别这种私网地址,因此在安装之前,需要先将IP地址修改为类似192.168.1.2这样的私网地址