sunyangnj
作者sunyangnj2012-12-16 17:48
技术经理, 苏宁金融研究院

DB2 V9.7FP7 DPF实战 总结

字数 5507阅读 10521评论 31赞 2
最近在公司用三台SLES服务器安装测试了一个DPF,DB2版本是V9.7FP7 ESE, SLES是enterprise 10 sp2
每个服务器是12个核,磁盘总共使用了12个,3个服务器,6个节点。
 
1. 存储规划
为每个服务器规划了4个磁盘,每个磁盘20个G,每个卷组初步规划一个磁盘,实例属主5个磁盘
每个服务器 4个卷组,db2data卷组,db2backup卷组,db2logarch卷组,db2plog卷组,实例属主服务器还有db2home卷组
其中db2data卷组包含db2fs逻辑卷,db2mlog逻辑卷,db2path逻辑卷
其中对于db2plog卷组使用RAID10创建的LUN,db2data卷组使用RAID5创建的LUN,其他都是使用普通的配置
db2fs逻辑卷保存表空间数据,db2mlog做为分区的镜像日志路径,db2path做为数据库元数据路径
db2backup, db2logarch和db2plog分别是独立的卷组,用于保存数据库备份,日志归档以及主日志(数据和日志分开,抗毁,防止磁头争用)
卷组的命名为vg+xxx+p0, xxx是db2data, db2backup,db2logarch等,p0指示是0号服务器的卷组,因为都在一个磁阵中,每次卷扫描都会看到,区分的清楚有利于后续管理。逻辑卷也是lv+xxx+p0,道理同上。
db2home只在实例属主节点部署,一个磁盘,用于保存实例目录
分别在三个服务器根目录下创建db2fs、db2mlog、db2path、db2backup、db2logarch、db2plog、db2home目录
因为是SLES,使用EXT4文件格式
建立存储的过程为:
lvmdiskscan, pvcreate, vgcreate, lvcreate, mkfs.ext4, 修改/etc/fstab,将各个逻辑卷绑定到上面创建的目录中,对于非实例属主节点,db2home是NFS共享而来,所以在非实例属主服务器配置hostname:/db2home /db2home  nfs rw,hard 0 0
在实例属主服务器上,配置/etc/exports文件
/db2home  10.132.24.0/24(rw,sync,no_root_squash)
注意对于IP网段不能用xx.*的配置,只能用/24的方法
然后root下exportfs -a
接着showmount -e就可以看到共享出去的目录
在SLES上,/etc/rc.d/nfsserver启动nfs服务器服务,nfs启动客户端服务,我曾经悲催的碰到一台服务器,nfs怎么都搞不定
对于其他逻辑卷,配置/dev/vgdb2datap0/lvdb2fsp0 /db2fs ext4 defaults 0 0
mount -a将所有逻辑卷都挂在目录下,可以通过df -h观察根目录下多出来的目录和容量。
 
总体来说,其实mlog是不太必要的,只是对于OLTP较常用,但是加上双保险而已。
 
2. 创建DPF实例用户
数据库分区中在实例属主节点创建一个实例,然后通过前面的/db2home的NFS共享发布出去,其他节点可以共享这个实例目录,好处是不用考虑手动复制保证实例目录的高度一致,减少管理的复杂度。
DPF实例的用户和组的ID和名称在各个节点都要完全一样
在各个服务器上先用grep xxx /etc/group, grep xxx /etc/passwd扫描id的使用情况
然后再实例属主节点上
groupadd -g 1000 db2iadm
groupadd -g 1001 db2fadm
useradd -u 1000 -g db2iadm -m -d /db2home/db2inst
useradd -u 1001 -g db2fadm -m -d /db2home/db2fenc
在其他节点上也一样,只是不用-m属性,重用实例属主节点发布的目录
DAS已经被淘汰,就不创建DAS用户
su,支护chown db2inst /db2xxx,将相关目录的属主都修改为db2inst
在db2inst下ssh-keygen -t rsa创建.ssh目录,同时将id_rsa.pub修改为authorized_keys,并将.ssh chmod  700 .ssh修改为只有db2inst才能操作,ssh用于分区命令在各节点上传递的通道。这个在pureScale中是要在不同的节点和用户中分别交换的。
 
3. 创建数据库分区实例和修改相关配置文件
DB2软件在各分区上的路径必须完全一样 比如我们都是在/opt/ibm/db2/V9.7fp7下面
另外各分区上的DB2软件都必须要有DPF的license,通过dblicm -a xxx.lic完成,如果分区没有license,则对应节点无法启动
在实例属主服务器上 su
/opt/ibm/db2/V9.7FP7/instance/db2icrt -s ese -p 50000 -u db2fenc db2inst
修改db2nodes.cfg,只需要在实例属主服务器ServerA进行
0  ServerA 0
1  ServerA 1
2 ServerB 0
3 ServerB 1
目前只加入四个分区的数据,第三个服务器ServerC的两个分区数据通过增加分区的操作实践加入。
在三个服务器上都修改/etc/hosts
将ServerA, ServerB, ServerC的IP地址和hostname分别加入
在三个服务器上都修改/etc/services
db2c_db2inst  50000/tcp
DB2_db2inst   60000/tcp
DB2_db2inst _1  60001tcp
DB2_db2inst_2   60002/tcp
DB2_db2inst_3   60003/tcp
DB2_db2inst_4   60004/tcp
DB2_db2inst_END   60005/tcp
默认的情况下,只生成四个端口号,我们有几个分区,就修改为几个端口号,本例为6个,则预留6个端口号
/etc/hosts, /etc/services文件很重要,如果修改不正确会遇到很多细小的反反复复的问题,DPF将启动不成功
 
修改svcename
db2 update dbm cfg using svcename db2c-db2inst
修改注册变量
db2set DB2COMM=TCPIP
db2set DB2RSHCMD=/usr/bin/ssh
db2set DB2_ANTIJOIN=Y
db2set DB2_EXTENDED_OPTIMIZATION=ON
db2set DB2_PARALLEL_IO=*:3 (根据容器磁盘数而定,本例中表空间所在卷组是RAID5,三个磁盘组成,所以设并行度3)
db2set DB2_COMPATIBILITY_VECTOR=ORA(必须事先配置,这样后续创建数据库才可兼容)
修改实例变量
db2 update dbm cfg using sheapthres 2500000 (数据仓库排序较多)
db2 update dbm cfg using FCM_NUM_BUFFERS automatic
db2stop
db2start
 
4. 创建分区数据库和修改数据库配置参数
db2 create db dwdb on /db2fs dbpath  on /db2path
修改日志路径
db2 connect to dwdb
db2_all "db2 update db cfg using newlogpath /db2plog/db2inst"
db2_all "db2 update db cfg using mirrorlogpath /db2mlog/db2inst"
db2_all "db2 update db cfg using logarchmeth1 /db2logarch/db2inst"
db2_all "db2 update db cfg using logfilesiz 25600"
db2_all "db2 update db cfg using logprimary 70" (因为数据库启动要初始化这个,所以要确保db2plog容量够大,保持监控)
db2_all "db2 update db cfg using logsecond 20"
 
5.创建表和加载数据和数据库分区的加入和删除
create table cusomer (id int, name varchar(10),sex char(1), salary decimal (7,2), hiredate date)
然后通过存储过程cusomerpipe生成一百万行数据输入表格
通过 db2"select dbpartitionnum(id),count(*) from cusomer group by dbpartitionnum(id) order by dbpartitionnum(id)"了解数据在各分区的分布
cat db2nodes.cfg 和 db2 list nodes都可以看到当前数据库中的分区号
查看数据库分区组
db2 list database partition group show detail
加入新的节点
db2start dbpartitionnum 4 add dbpartitionnum hostname ServerC port 0
cat db2nodes.cfg可以看到新的节点,但是db2 list nodes还没看到,因为还不在ibmdefaultgroup中
增加分区到分区组
db2 "alter database partition group ibmdefaultgroup add dbpartitionnum (4) without tablespaces"
db2 list nodes已经可以看到,通过db2 list db partition group show detail也可以看到
数据重分布
db2 "redistribute database partition group ibmdefaultgroup uniform"
再查询数据分布,数据已经分布到了节点4
删除节点
export DB2NODE=3
db2 terminate (这个很重要,如果不做,就会让db2node无法生效)
db2 drop dbpartitionnum verify确认该分区上所包含的数据库,
然后接入不同的数据库
db2 "redistribute database partition group ibmdefaultgroup uniform drop dbpartitionnum (3)"
注意,在这里这个命令一定要在该数据库所在的catalog节点发出,要再次通过export db2node=0来确认在catalog节点上,可以通过list db directory show detail看到编目节点
db2 list node就可以看到某节点已经被删除
我反反复复在数据节点添加和删除上实验了十多遍,速度十分的快。
 
6.数据库分区的备份
db2 backup db dwdb online on all dbpartition num to /db2backup
因为两个节点公用一个服务器,目录也共享,所在三个服务器下面的db2backup会有两个节点数据的备份,用NODE000X区分
 
也可以备份某节点
db2_all "<<+0<backup  db dwdb online to xxxx"
db2_all "<<-0<backup db dwdb online to xxxx"除了某节点
db2 reover db dwdb
rollforward也只需要在后面加上on all dbpartitionnums的后缀即可
 
7.后记
参考了王飞鹏的运筹帷幄DB2以及温涛的高级DBA
很多东西不实践真是印象不深。
DPF充分调动了各节点的CPU和内存的能力,还有多硬盘的并行。
随着表分区的流行,单个表空间多硬盘的并行方面,DPF优势并不大,但是对于海量数据,由于多个服务器,可以提供更高的IO并行度。表分区单节点的CPU也受限,DPF更好一些。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

2

添加新评论31 条评论

yellow-finyellow-fin项目经理, 浙江兰德纵横网络技术有限公司
2014-03-25 17:07
我在执行这个操作的时候,总是报错:db2 "alter database partition group ibmdefaultgroup add dbpartitionnum (4) without tablespaces"
DB21034E  The command was processed as an SQL statement because it was not a
valid Command Line Processor command.  During SQL processing it returned:
SQL1524N  The request cannot occur until all applications in the instance are
aware of the new database partition server.  SQLSTATE=55077
请问其他人有遇到这个问题吗?
yellow-finyellow-fin项目经理, 浙江兰德纵横网络技术有限公司
2014-03-13 10:24
db2_all "db2 update db cfg for dwdb using newlogpath /db2plog/db2inst"
执行成功了,想请楼主确认一下
yellow-finyellow-fin项目经理, 浙江兰德纵横网络技术有限公司
2014-03-13 10:23
db2_all "db2 update db cfg using newlogpath /db2plog/db2inst"
执行报错:
SQL1024N  A database connection does not exist.  SQLSTATE=08003
lab_dpf01: db2 update db cfg ... completed rc=4
yellow-finyellow-fin项目经理, 浙江兰德纵横网络技术有限公司
2014-03-10 23:02
想先学习一下原理。。。
netstevennetsteven数据库管理员, 中英人寿保险有限公司
2014-03-03 16:27
cusomerpipe 这个存储过程能共享一下吗?
sunyangnjsunyangnj技术经理, 苏宁金融研究院
2013-12-28 22:17
cnwangdp: 弄过gpfs版本的吗?
cnwangdpcnwangdp技术经理, 北京先进数通信息技术股份公司
2013-12-28 21:30
弄过gpfs版本的吗?
oracle12coracle12c数据库管理员, **证券
2013-11-03 20:56
dddddddddddddd
weiboweibo副总, 北京象前行信息科技有限公司
2013-06-07 23:49
这个算是比较熟悉了,再复习下,多谢分享哈!
thuanqinthuanqin其它, ibm
2013-05-03 12:45
收藏啦,正愁那官方文档太死板呢,这周末在虚机上试一试
iwaichiwaich软件开发工程师, IBM
2013-05-02 20:41
膜拜。。。
sunny_zhao0127sunny_zhao0127数据库管理员, C.H.Robinsion
2013-05-02 11:44
拜读学习之
DB-TrendSetterDB-TrendSetter数据库架构师, 公司
2013-04-28 17:18
sunyangnj: 可以搞
http://www.ibm.com/developerworks/cn/data/library/techarticle/dm-1207maoq/

我之前搞过,但是在虚拟机安装purescale的时候回滚了,后来忙,一直没研究。回
come on
sunyangnjsunyangnj技术经理, 苏宁金融研究院
2013-04-28 17:16
tianshizuoyi: 虚拟机没法搞PureScale,除非有IBM工程师帮你修改数据库源码,支持用普通的网线代替InfiniBand连接线
可以搞
http://www.ibm.com/developerworks/cn/data/library/techarticle/dm-1207maoq/

我之前搞过,但是在虚拟机安装purescale的时候回滚了,后来忙,一直没研究。回头把这个x86 purescale落实了,不信搞不定!
DB-TrendSetterDB-TrendSetter数据库架构师, 公司
2013-04-28 17:11
sunyangnj: 是的,这几天就在忙这个事情,你怎么知道的?
虚拟机没法搞PureScale,除非有IBM工程师帮你修改数据库源码,支持用普通的网线代替InfiniBand连接线
sunyangnjsunyangnj技术经理, 苏宁金融研究院
2013-02-14 14:49
forsoftdev: 咨询以下,我想学习db2 dpf特性,但又没有 db2dpf.lic,有什么办法可以学习,谢谢
db2 10.1试用版就有DPF功能,可以使用,无需lic
forsoftdevforsoftdev系统分析师, 上海全成通信
2013-02-14 02:08
咨询以下,我想学习db2 dpf特性,但又没有 db2dpf.lic,有什么办法可以学习,谢谢
oasis_moasis_m软件开发工程师, mxm
2013-01-21 10:36
关注中
fengwhqfengwhq数据库管理员, 某城商行
2013-01-16 12:31
一直没搞过DPF,有空试一下,感谢分享,收藏了
wangqh_2008wangqh_2008数据库管理员, 科迈
2013-01-08 14:50
谢谢分享。
taylor840326taylor840326数据库管理员, 中国百盛集团
2013-01-08 14:12
谢谢分享。
shlei6067shlei6067数据库管理员, NJ
2012-12-27 09:40
先收藏,可惜现在没机会实践。
drdb2drdb2系统工程师, se
2012-12-21 02:42
我”半途而废“了, good luck you man:)
sunyangnjsunyangnj技术经理, 苏宁金融研究院
2012-12-20 08:23
drdb2: Guess your next project will be building PureScale using VM:)
是的,这几天就在忙这个事情,你怎么知道的?
drdb2drdb2系统工程师, se
2012-12-20 00:12
Guess your next project will be building PureScale using VM:)
freebilefreebile数据库运维工程师, 金融行业
2012-12-19 20:15
谢谢分享,运维中有DPF ,但是一直没有机会重新创建一次
sunyangnjsunyangnj技术经理, 苏宁金融研究院
2012-12-19 08:37
drdb2: very nice
谢谢前辈鼓励
sunyangnjsunyangnj技术经理, 苏宁金融研究院
2012-12-19 08:36
菜菜鸟一号: 谢谢分享,多分区环境一直是梦想,可惜没机会!
在虚拟机上搞很容易,没有差别
drdb2drdb2系统工程师, se
2012-12-19 01:20
very nice
db2_worldlovedb2_worldlove数据库管理员, zcgx
2012-12-18 19:44
学习
菜菜鸟一号菜菜鸟一号数据库管理员, 龙信科技
2012-12-18 18:14
谢谢分享,多分区环境一直是梦想,可惜没机会!
Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广