暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

RHEL 7.2 DB2 V11.1 PureScale

原创 郭大侠 2021-03-23
1189

v11.1 先决条件
https://www.ibm.com/support/knowledgecenter/zh/SSEPGG_11.1.0/com.ibm.db2.luw.qb.server.doc/doc/r0057441.html

按下表配置主机相关信息
image.png

所有节点配置 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

image.png

创建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

image.png

节点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

限制条件

  1. 在对一个 DB2 pureScale 集群进行数据库备份之后,如果对该集群的拓扑结构进行了某些调整,比如增加或减少了一个成员节点,则拓扑结构改变之前的备份影像将不能再被用来在新的拓扑结构上进行数据库恢复。
  2. 每次对 DB2 pureScale 集群的拓扑结构进行调整后,数据库将处于 Backup Pending 状态,必须做一次全库的离线备份后才能正常使用。
最后修改时间:2021-03-26 09:30:06
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论