v11.1 先决条件
https://www.ibm.com/support/knowledgecenter/zh/SSEPGG_11.1.0/com.ibm.db2.luw.qb.server.doc/doc/r0057441.html
按下表配置主机相关信息

所有节点配置 vim /etc/hosts
192.168.1.92 db2realservernode1
192.168.1.93 db2realservernode2
192.168.1.94 db2realservernode3
10.10.12.150 db2realservernode1-priv
10.10.12.151 db2realservernode2-priv
10.10.12.152 db2realservernode3-priv
关掉防火墙和selinux
安装依赖包
yum -y install ksh vim pam.i686 ntp.x86_64 ntpdate.x86_64 openssh-clients.x86_64\
sg3_utils.x86_64 dapl.x86_64 dapl.i686 compat-dapl.x86_64 compat-dapl.i686\
rdma.noarch libaio.x86_64 libaio.i686 libstdc++.x86_64 libstdc++.i686\
compat-libstdc++-33.x86_64 iscsi-initiator-utils.x86_64
安装db2前的必需的程序包
yum -y install librdmacm
yum -y install rdma-core
yum -y install dapl
yum -y install ibacm
yum -y install ibutils
yum -y install libstdc++ x86_64 和 i686
yum -y install glibc x86_64 和 i686
yum -y install gcc-c++
yum -y install gcc
yum -y install kernel
yum -y install kernel-devel
yum -y install kernel-headers
yum -y install linux-firmware
yum -y install ntp or chrony
yum -y install ntpdate
yum -y install sg3_utils
yum -y install sg3_utils-libs
yum -y install binutils
yum -y install binutils-devel
yum -y install m4
yum -y install openssh
yum -y install cpp
yum -y install ksh
yum -y install libgcc (both x86_64 and i686
yum -y install file
yum -y install libgomp
yum -y install make
yum -y install patch
yum -y install perl-Sys-Syslog
yum -y install make perl rsh ld-linux.so libm.so.6 libc.so.6 ksh libstdc++.so.5 rsh-server rpcbind xinetd libaio cpp gcc-c++ gcc nfs-utils kernel-headers kernel-devel compat-libstdc++ glibc-devel libXp.so.6 imake rpm-build rpm-build redhat-lsb
以上肯定有重复的,直接复制粘贴就好了。
复制一个库文件,应为后面安装db2会用到,不做的话gpfs编译有问题
cp -v /usr/src/kernels/3.10.0-327.el7.x86_64/include/generated/autoconf.h /lib/modules/3.10.0-327.el7.x86_64/build/include/linux/
chkconfig postfix off
#chkconfig ntpd on (只在节点 1 上启动)
chkconfig rdma on
chkconfig iscsid on
新建组和用户
groupadd -g 1003 db2fadm1
groupadd -g 1002 dasadm1
useradd -u 1004 -g db2iadm1 -m -d /home/db2inst1 db2inst1
useradd -u 1003 -g db2fadm1 -m -d /home/db2fenc1 db2fenc1
useradd -u 1002 -g dasadm1 -m -d /home/dasusr1 dasusr1
设置密码
db2inst1
db2inst1
EOF
passwd db2fenc1 <<EOF
db2fenc1
db2fenc1
EOF
passwd dasusr1 <<EOF
dasusr1
dasusr1
EOF
配置SSH互信
在当前系统中存在两个用户需要配置 SSH 等效性,这两个用户分别是 root 和 db2inst1。在所有节点上执行如下步骤生成公钥和私钥,在所有节点上执行如下步骤生成公钥和私钥
ssh-keygen -t rsa
su - db2inst1
ssh-keygen -t rsa
下面的操作都在节点 1 上执行。
执行的步骤如下:
cd .ssh
cat id_rsa.pub >authorized_keys
ssh db2realservernode2 cat /root/.ssh/id_rsa.pub >>authorized_keys
ssh db2realservernode3 cat /root/.ssh/id_rsa.pub >>authorized_keys
su - db2inst1
cd .ssh
cat id_rsa.pub >authorized_keys
ssh db2inst1@db2realservernode2 cat /home/db2inst1/.ssh/id_rsa.pub >>authorized_keys
ssh db2inst1@db2realservernode3 cat /home/db2inst1/.ssh/id_rsa.pub >>authorized_keys
在节点 1 上把生成的 authorized_keys 文件拷贝到每个节点上
在 root 用户下执行
# cd .ssh
# scp authorized_keys db2realservernode2:/root/.ssh
# scp authorized_keys db2realservernode3:/root/.ssh
在 db2inst1 用户下执行
cd .ssh
scp authorized_keys db2realservernode2:/home/db2inst1/.ssh
scp authorized_keys db2realservernode3:/home/db2inst1/.ssh
验证SSH互信
在所有节点的root和db2inst1下执行
ssh db2realservernode2 date
ssh db2realservernode3 date
配置ntp服务(节点1为服务端)如果有现成NTP服务的话直接用就好
NTP配置参考
2.修改ntp配置文件
vim /etc/ntp.conf
有这样几行
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
以上全部注释掉,然后改为自己的配置为:
server 127.127.1.0 iburst (这一行是固定地,作用是:使用当前主机作为时间同步的服务器)
fudge 127.127.1.0 stratum 8(这一行表示当前服务器在整个互联网时间同步服务器层级中处于第八层,数字越小层级越高)
然后还有这样两行
Hosts on local network are less restricted. (这行表示限制网段的意思)
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap(这行是限制网段的格式)
添加一行,其中的ip为你的主机ip网段,nomodify表示不允许你修改此网段:
restrict 192.168.1.0 mask 255.255.255.0 nomodify
保存退出
重启ntp
systemctl restart ntpd
systemctl enable ntpd
在节点2、3配置定时任务
*/5 * * * * /usr/sbin/ntpdate 192.168.1.92
配置root环境变量
PATH=/root/bin:/usr/sbin/rsct/bin:/opt/ibm/db2/V11.1/bin:$PATH:/opt/ibm/db2/V11.1/instance
export PATH=/usr/lpp/mmfs/bin:$PATH
export IBM_RDAC=NO
export DB2USENONIB=TRUE
export DB2_CFS_GPFS_NO_REFRESH_DATA=true
export CT_MANAGEMENT_SCOPE=2
ip-san 安装步骤
参考链接
# vim /etc/tgt/targets.conf
<target iqn.2021-02.cn.node01.www:target4_scan>
backing-store /dev/sdb1
initiator-address 192.168.1.92
initiator-address 192.168.1.93
initiator-address 192.168.1.94
vendor_id node
product_id target4
</target>
#systemctl start iscsid
#systemctl enable iscsid
#systemctl status iscsid
发现
#iscsiadm -m discovery -t sendtargets -p 192.168.1.95
#192.168.1.95:3260,1 iqn.2021-02.cn.node01.www:target4_scan
登入
#iscsiadm -m node -T iqn.2021-02.cn.node01.www:target4_scan -p 192.168.1.95 -l
systemctl status iscsi
systemctl start iscsi
systemctl enable iscsi
先启动iscsid 服务
在启动iscsi服务 该服务是根据iscsid服务信息/var/lib/iscsi/ 来识别设备的
开机自动挂载配置
编辑rc.local文件
[root@db2realservernode1 ~]# vim /etc/rc.d/rc.local
touch /var/lock/subsys/local
iscsiadm -m discovery -t sendtargets -p 192.168.1.95
iscsiadm -m node -T iqn.2021-02.cn.node01.www:target4_scan -p 192.168.1.95 -l
增加执行权限
chmod a+x /etc/rc.d/rc.local
编辑iscsi服务配置文件
vim /etc/iscsi/iscsid.conf
#node.startup = automatic //将原有 自动注释掉 复制一行改为手动
node.startup = manual
rm -rf /var/lib/iscsi/nodes/*
rm -rf /var/lib/iscsi/send_targets/*
重启速度慢解决办法
把 /etc/rc.d/rc0.d和/etc/rc.d/rc6.d里面的K90network删掉即可,稳妥的话重命名就可以了。再重启速度就快多了。
mv /etc/rc.d/rc6.d/K90network /etc/rc.d/rc6.d/K90network.bak
mv /etc/rc.d/rc0.d/K90network /etc/rc.d/rc0.d/K90network.bak
reboot
检查磁盘是否自动挂载
db2 安装
检查
./db2prereqcheck -p -v 11.1.3.3
安装步骤略,如有警告和报错,查看log定位问题,一般都是依赖包问题
所有节点都要安装db2
在所有节点创建gpfs文件挂载点
mkdir /db2data
以下操作只在节点执行
创建集群域
db2cluster -cfs -create -domain testdomain -host db2realservernode1
db2cluster -cfs -add -host db2realservernode2
db2cluster -cfs -add -host db2realservernode3
添加许可协议
mmchlicense server --accept -N db2realservernode1,db2realservernode2,db2realservernode3
db2cluster -cfs -add -license
创建 nsd文件系统
vim /tmp/newNSD1
%nsd:
device=/dev/sdb
nsd=nsd1
usage=dataAndMetadata
mmcrnsd -F /tmp/newNSD1
OR
mmcrnsd -F /tmp/newNSD1 -v no (如果之前存在过,加-v参数,忽略)
查看创建的 nsd
mmlsnsd
启动gpfs集群服务
mmstartup -a
查看服务状态
mmgetstate -a
arbitrating 为中间状态
active 为最终状态
确保所有节点状态为active,一般过程为几分钟
[root@db2realservernode1 adm]# mmgetstate -a

创建gpfs文件
mmcrfs -T /db2data db2data nsd1
/db2data 为文件系统挂载路径,db2data为文件系统名
挂载集群文件系统
chown -R db2inst1:db2iadm1 /db2data
mmmount all -a
mm操作只需要在节点一操作就好了
df -h确认
创建db2实例
db2icrt -cf db2realservernode1 -cfnet db2realservernode1 -m db2realservernode2 -mnet db2realservernode2 -instance_shared_dir /db2data -tbdev 192.168.1.254 -u db2fenc1 db2inst1
推荐需要两个CF主机和至少两个DB2成员。
以上语句是把节点 2(db2realservernode2)加入到集群中。
-tbdev 是仲裁设备,一般设定为网关的 IP 地址。
查看集群成员
# db2instance -instance db2inst1 -list
[root@db2realservernode1 /]# db2instance -instance db2inst1 -list

节点1(CF)
su - db2inst1
db2start (会自动起其他成员)
报错SQL1726N
修改参数
db2set DB2_SD_ALLOW_SLOW_NETWORK=ON
db2 terminate
db2start
创建数据库
无法在CF节点执行,只能在member节点
db2 create db db2test automatic storage yes on /db2data/db2test using codeset gbk territory cn pagesize 8192
实际生产中,会创建多个GPFS目录,会将数据文件、日志文件、数据库分开存放,以避免业务高峰出现I/O争抢。
往集群中添加新成员
在节点1 CF执行
db2iupdt -d -add -m db2realservernode3 -mnet db2realservernode3 db2inst1
启动member1
su - db2inst1 -c "db2start member 1"
gpfs文件系统扩容
挂载新盘
修改iscsi配置文件
vim /etc/tgt/targets.conf 增加target
# The "#" symbol disables the processing of a line.
# Set the driver. If not specified, defaults to "iscsi".
default-driver iscsi
# Set iSNS parameters, if needed
#iSNSServerIP 192.168.111.222
#iSNSServerPort 3205
#iSNSAccessControl On
#iSNS On
# Continue if tgtadm exits with non-zero code (equivalent of
# --ignore-errors command line option)
#ignore-errors yes
<target iqn.2021-02.cn.node01.www:target4_scan>
backing-store /dev/sdb1
initiator-address 192.168.1.92
initiator-address 192.168.1.93
initiator-address 192.168.1.94
vendor_id node
product_id target4
</target>
<target iqn.2021-02.cn.node01.www:target5_scan>
backing-store /dev/sdc1
initiator-address 192.168.1.92
initiator-address 192.168.1.93
initiator-address 192.168.1.94
vendor_id node
product_id target5
</target>
重载配置文件
service tgtd reload
客户端 (三个节点)
发现
#iscsiadm -m discovery -t sendtargets -p 192.168.1.95
192.168.1.95:3260,1 iqn.2021-02.cn.node01.www:target4_scan
192.168.1.95:3260,1 iqn.2021-02.cn.node01.www:target5_scan
登入
#iscsiadm -m node -T iqn.2021-02.cn.node01.www:target5_scan -p 192.168.1.95 -l
配置开机自动挂载
vim /etc/rc.d/rc.local
touch /var/lock/subsys/local
iscsiadm -m discovery -t sendtargets -p 192.168.1.95
iscsiadm -m node -T iqn.2021-02.cn.node01.www:target4_scan -p 192.168.1.95 -l
iscsiadm -m node -T iqn.2021-02.cn.node01.www:target5_scan -p 192.168.1.95 -l
确保所有节点都已登入新加的盘,fdisk -l能看到,继续下面操作。
创建新的nsd
vim /tmp/newNSD2
%nsd:
device=/dev/sdc
nsd=nsd2
usage=dataAndMetadata
mmcrnsd -F /tmp/newNSD2
查看创建的 nsd 名称
mmlsnsd
[root@db2realservernode1 /]# mmlsnsd
File system Disk name NSD servers
---------------------------------------------------------------------------
db2data nsd1 (directly attached)
(free disk) nsd2 (directly attached)
添加nsd2到db2data
mmadddisk db2data -F /tmp/newNSD2
[root@db2realservernode1 /]# mmlsnsd
File system Disk name NSD servers
---------------------------------------------------------------------------
db2data nsd1 (directly attached)
db2data nsd2 (directly attached)
我们看到新盘已经加入到现有的db2data中
df -h
确认成功。
数据恢复(单实例–> PureScale)
源库做脱机备份 只能是脱机备份。
执行脱机数据库备份:
db2 backup database db2test to directory
在目标库上恢复
db2 "restore database db2test from /home/db2inst1 on '/db2data' DBPATH ON '/db2data/db2test' into db2test without rolling forward"
在目标实例上,运行 db2checkSD 命令:
db2checkSD dbname -l filename -u userid -p password
[db2inst1@db2realservernode2 ~]$ db2checkSD db2test -l checktest.txt
DBT5000I The db2checkSD utility completed successfully. The specified database can be used in a DB2 pureScale environment. The output log file is named "checktest.txt".
此时,db2checkSD 命令将执行数据库转换,以便数据库可以用于 Db2 pureScale 环境。
此用户标识必须与源实例上具有 DATAACCESS 权限的用户标识相同。
通过发出以下命令,从成员 0(公共成员)执行完全脱机数据库备份:
db2 backup database dbname to directory
限制条件
- 在对一个 DB2 pureScale 集群进行数据库备份之后,如果对该集群的拓扑结构进行了某些调整,比如增加或减少了一个成员节点,则拓扑结构改变之前的备份影像将不能再被用来在新的拓扑结构上进行数据库恢复。
- 每次对 DB2 pureScale 集群的拓扑结构进行调整后,数据库将处于 Backup Pending 状态,必须做一次全库的离线备份后才能正常使用。




