作者·2010-08-17 13:38
·

DB2 数据库分区partition实验

字数 11510阅读 4205评论 0赞 0
概念:DB2 数据库分区称为节点或数据库节点,是 DB2 企业版 DPF(Data Partitioning Feature)选件提供的,它主要用来为大规模数据处理、高并发数据访问提供支持。DB2 数据库分区采用 Share-nothing 体系结构,数据库在一个非共享的环境中被分解为独立的分区,每个分区都具有自己的资源,例如内存,CPU 和磁盘以及自己的数据、索引、配置文件和事务日志。

  
    分区的优势是:通过HASH算法将文件分布存储于不同的节点目录内,可以提高相应的事务/IO操作的并发能力
  
   实验环境为linux2.6.18-194.el5,数据库版本为db2 v9.7,
   1,实验前的准备:
   1.1 两台实验机的ip为同一网段,如:172.16.10.1/24 zhang3.shaw.com;
172.16.10.2/24 zhang4.shaw.com
   1.2 两台试验机新建相同gid的group名和uid的用户名
   为db2数据库分区配置应用
   groupadd -g 502 db2iamd1
   gourpadd -g 503 db2fenc1
   同时确保DAS(database administrator)的帐号和用户uid为相同,我这里是db2i9
   相关das查看命令为
   [db2inst3@zhang3 ~]$ db2set -all |grep DB2ADMINSERVER
[g] DB2ADMINSERVER=db2i9

配置相应两端服务器的相应的hosts文件
/etc/hosts
将相应的127.0.0.1 注销掉。

相关的配置文件为/home/db2inst3/sqllib/profile.env

   用户: useradd -g 502 -u 106 db2inst3 (instance user)
          useradd -g 503 -u 107 db2fenc3(fenced user)
 
  1.3确保相应的RSH必须安装并配置,分区间通信需要,k-shell要安装在rsh软件之前(都在系统盘内,rsh-server-*.rpm,pdksh-5.2.14-36.el5.i386.rpm)
  查看相应的/etc/xinetd.d/rsh,rlogin,rexec三个配置文件中的
  disable 参数为no 状态,
  在/etc/目录下写入配置文件hostx.equiv
  将两台机器的主机名和相对应的相同访问用户添加入内(为是拥有共同UID的相同帐号的两端可以相互控制)
   1.3.1在相应的用户下配置.rhosts文件
  内容: zhang4.shaw.com db2inst3
         zhang3.shaw.com db2inst3
        
  两端数据库的相应端口要开启
rsh 544/tcp;rlogin543/tcp;rexec 8230/tcp, 8230/udp 
默认的rsh权限:注意用户位上的S表记
  -rwsr-xr-x 1 root root       8908 Mar 30  2009 rsh
  -rwsr-xr-x 1 root root       8908 Mar 30  2009 rlogin
  将系统默认的RSH程序重命名,自动使用安装的RSH
  /usr/kerberos/bin
  mv rsh rsh.vn
 
  测试连通性
  /usr/bin/rsh remote-hostname k-shell command

1.4,配置相应的NFS服务


  2,开始安装相应的分区ESE数据库
  选择定制安装并选择分区(本例为4个分区,记下相应的tcp/ip通信端口 )
这里需要注意的是在主端(zhang4.shaw.com)的服务器上定制化安装相应的实例与ses服务,而在作为从端(zhang3.shaw.com)上安装SES服务软件即可,选择不安装实例!

  3,配置分区相应的配置文件(该文件确定了本地相对应的逻辑分区组
  3.1 先确定所有数据库实例已关闭
  db2stop
在zhang4.shaw.com和zhang3.shaw.com主机上配置相应的db2SES数据库和相关实例,用户和组如下:
cat /etc/passwd
db2inst3:x:109:105::/home/db2inst3:/bin/bash
db2fenc3:x:120:106::/home/db2fenc3:/bin/bash

3.2 本例4个分区,相对应的配置如下:

 
zhang4.shaw.com 和zhang3.shaw.com主机:
zhang4.shaw.com主机上的db2nodes.cfg配置,该主机作为分区数据库的主库。
  [db2inst3@zhang4 ~]$ cat /home/db2inst3/sqllib/db2nodes.cfg
0 zhang4.shaw.com 0(此处的服务名要与os的主机名相对应)
(节点名)1 zhang3.shaw.com 0(逻辑分区名)
2 zhang4.shaw.com 1
3 zhang4.shaw.com 2
确保zhang4.shaw.com主机的db2inst3目录映射zhang3.shaw.com的db2inst3目录,便于后期数据库分区
实验的操作。

启动数据库
db2start
                      
3.3 netstat -an -t 查看数据库实例与分区相应通信状态
实例
tcp        0      0 0.0.0.0:50002               0.0.0.0:*                   LISTEN   
4个分区
tcp        0      0 192.168.102.155:60008       0.0.0.0:*                   LISTEN     
tcp        0      0 192.168.102.155:60009       0.0.0.0:*                   LISTEN     
tcp        0      0 192.168.102.155:60010       0.0.0.0:*                   LISTEN     
tcp        0      0 192.168.102.155:60011       0.0.0.0:*                   LISTEN  

相对应的端口号可以在/etc/servers文件中找到
实例
db2c_db2inst3   50002/tcp
4个分区
db2c_db2inst3   50002/tcp
DB2_db2inst3    60004/tcp
DB2_db2inst3_1  60005/tcp
DB2_db2inst3_2  60006/tcp
DB2_db2inst3_END        60007/tcp


4,配置数据库
create database info(dbname)
数据库建立了几个分区其数据库实例目录下就会出现几个节点目录
drwxrwxr-x 9 db2inst3 db2iadm1 4096 Aug  7 11:35 NODE0000
drwxrwxr-x 7 db2inst3 db2iadm1 4096 Aug  7 11:35 NODE0001
drwxrwxr-x 7 db2inst3 db2iadm1 4096 Aug  7 11:35 NODE0002
drwxrwxr-x 7 db2inst3 db2iadm1 4096 Aug  7 11:35 NODE0003



5,配置相应的分区组:在分区内部进行划分服务单元便于管理
在数据库连接的状态下进行分区组创建操作:
create database partition group t1
on dbpartitionnums(0 to 1)(这里为什么用0和1呢,因为可以查看相关的实验效果
  查看相关分区组
  list database partition groups
  DATABASE PARTITION GROUP    
-----------------------------
IBMCATGROUP   系统默认生成              
IBMDEFAULTGROUP   系统默认生成          
T1           手动创建               
ZHANG4        手动创建              

  4 record(s) selected.
  我这里是四个,其中zhang4为错误创建的,删除分区组命令为下:
  drop database partition group zhang4
  查看分区组及相应的拥有者
  db2 => select dbpgname,owner from syscat.dbpartitiongroups

DBPGNAME                     OWNER                                                                                                                          
------------------------------------
IBMCATGROUP                 SYSIBM                                                                                                                        
IBMDEFAULTGROUP             SYSIBM                                                                                                                         
IBMTEMPGROUP                SYSIBM                                                                                                                         
T1                         DB2INST3    
                                     
                                                                                                           
  几个相关查看分区组的视图:
syscat.dbpartitiongroups
syscat.partitionmaps
syscat.dbpartitiongroupdef

DB2有别于其他数据库的分区的特性是其可建立独立的分区缓存 partition proprietery buffer pool
其他数据库如oracle只有数据物理存储意义上的分区。


6,创建分区组相关的buffer pool和数据库表空间
create bufferpool t1buffer
database partition group t1 size 5000

相关buffer pool 视图
syscat.bufferpools
sysibm.sysbufferpools

数据库表空间创建
create tablespace t1
in database partition group t1
managed by system
using ('t1')
因为使用的是分区组,其会将表空间的物理文件HASH分布到不同的节点上
/home/db2inst3/db2inst3/NODE0002/SQL00001/t1
/home/db2inst3/db2inst3/NODE0001/SQL00001/t1

7,新建分区键:分区键的作用是提高相对性表列的读写性能
在某列(高基列,数据量比较大的列)上指定相应的分区键,如果不指定,相应的第一个主键列会自动
田间分区键。
create table zhang1(col1 int,col2 int,col3 varchar(10)) 
in t1
partitioning key(col1,col2) using hashing


开启数据库的并发模式
update dbm cfg using intra_parallel yes

断开数据库连接重连后查看
get dbm cfg
Enable intra-partition parallelism     (INTRA_PARALLEL) = YES

到这里zhang4.shaw.com配置完成

8,开始配置zhang3.shaw.com主机

双方主机通过实例用户db2inst3登录


在db2inst3上登录实例数据库
可以查看到db2inst4上相同的内容并可以建立数据库和相应的DML,DDL,DCL操作
到此配置结束
测试成功!

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

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

  • mysql和db2
    评论 0 · 赞 0
  • db2 行数限定选择
    评论 0 · 赞 0
  • db2迁移过程及问题
    评论 0 · 赞 0
  • db2中的in的优化
    评论 0 · 赞 0
  • db2中自增id违反唯一性约束解决方法
    评论 0 · 赞 0
  • 相关文章

    相关问题

    相关资料

    X社区推广