database-db2

  DB2 数据库分区partition实验

概念: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操作
到此配置结束
测试成功!







你可能感兴趣的:(数据结构,oracle,应用服务器,db2,配置管理)