转载请注明出处 http://blog.csdn.net/thirdbrother/article/details/17630813
毕业后所做的几个应用都是采取db2作为后端的数据库,但是大多数都仅限于应用开发时对数据库的一些基本操作,关于db2的维护方面了解的不多,前段时间牛辛庄老师的关于db的三部曲有发行了第二版,看完第一部和第二部后,心血来潮,想做下db2数据库多分区。9月份和10月份分别作了db2的SMP和SMP Cluster。过了这么久了,有些忘记,在此做下记录,以便以后查阅。由于SMP在单机环境下就可以实现,操作步骤比较简单在此就不做介绍了。简单介绍下SMP Cluster的安装配置步骤。
实例级别的multi-partitionDB2环境分为3种: DB2 SMP, DB2 MPP 和 DB2 SMP Cluster
SMP指的是在一台有多个CPU的机器上(双核在Linux上被识别为2个CPU),建立的一个有多个partition(不超过 CPU的数量)的DB2 Instance.
MPP指的是在多台单个CPU的机器上,建立的一个有多个partition的DB2 Instance,在其中的每台机器上建立1个Partition.
SMP Cluster指的是在多台有多个CPU的机器上,建立的一个有多个partition的DB2 Instance,在其中的每台机器上建立多个Partition.
安装
所需软件
所需软件如下图所示:
vmwareworkstation 10、redhatEnterprise 5.4、db2 universal版本V9.7 fp3a、ssh-server-0.17、putty。
首先创建2个虚拟机,然后安装操作系统,在修改主机名称 并设置固定IP,再删除vmware自带的ssh服务,重启操作系统系统,安装ssh-server。然后使用putty进行测试连 通性。
注意事项:
1.db2在安装的时候要选择ESE版本,否则就不支持多分区特性。
2.要在安装db2的分区分配足够的磁盘空间。
3.在ssh server安装的过程中,要先删除 vmware自带的ssh,否则服务器启动的时候会出现错误,在删除vmware自带的ssh 服务器后,需重启服务器。
4.将sshd、nfs服务器设置为自动启动,运行setup命令,选中服务即可。选中时候使用空格选中
5.由于本机配置比较低,在安装过程中,db2持续时间比较长,请耐心等待。
6.安装操作系统的过程中,关闭防火墙,关闭SELInux 避免不不要的麻烦。
配置
创建用户和组
分别在server1和server2上使用root创建,下列用户和组
实例用户db2idba,所属组db2igdba,密码db2idba;fence用户db2fdba ,所属组db2fgdba,密码db2fdba;应用用户dba_user,所属组dba_grp,密码dba_user;
创建实例
在server1上使用root用户创建实例db2idba,必须和实例用户名一致。 db2icrt -u db2fdba db2idba;
在server2不需要使用root用户创建实例db2idba,使用nfs将server1中相关实例文件导出即可。
server1和server2共用一套配置文件,方面进行修改。
更新实例环境参数
db2set DB2CODEPAGE=1208
db2set DB2_PARALLEL_IO=*
db2setDB2_PINNED_BP=yes
db2setDB2COMM=tcpip
配置实例
db2 update dbm cfgusing SVCENAME 50000
启动数据库
启动server1上数据库 db2start,如能正常启动,则表示实例已创建成功
配置hosts文件
在server1和server2上分别添加对方主机地址。
192.168.1.110 server1
192.168.1.111 server2
server1导出
在/etc/exports中添加 /home/db2idba/sqllib *(rw,no_root_squash) 将目录导出
server2挂载
server1:/home/db2idba/sqllib/home/db2idba/sqllib nfs defaults,soft,intr 0 0
启动数据库
启动server2数据库,如能正常启动,则server2已配置成功
ssh免密码登陆
配置db2idba用户的在server1和server2的ssh免密码登陆,此处不再赘述,网上百度即可。
配置db2nodes.cfg
在server1下的/home/db2idba/sqllib 找到db2nodes.cfg文件,修改文件的内容为
0 server1 0
1 server2 0
由于server1和server2实例目录NFS共享,所以相当于对2个节点进行修改。
启动集群
在server1或者server2上运行db2satart命令 如果出现
12/28/201312:58:48 0 0 SQL1063N DB2START processing was successful.
12/28/2013 12:59:42 1 0 SQL1063N DB2START processing was successful.
证明集群已安装成功。
创建数据库
在server1或者server2上创建一个数据库,本例子中在server1上创建数据库。
创建分区组
[db2idba@server1~]$ db2 "create databasepartition group dbgroup_test on DBPARTITIONNUMS (0to 1)";
DB20000I The SQLcommand completed successfully.
创建分区表空间
[db2idba@server1~]$ db2 create tablespace tbsp_testin database partition group dbgroup_testmanaged by automatic storage
DB20000I The SQLcommand completed successfully.
创建分区表
[db2idba@server1~]$ db2 "create table mytest (idint, name varchar(10) ) distribute byhash(id) in tbsp_test";
DB20000I The SQL commandcompleted successfully.
插入数据
db2 "insertinto mytest values(1 ,'angelo')";
db2 "insert into mytestvalues(2 ,'angelo')";
db2 "insert into mytestvalues(3 ,'angelo')";
db2 "insert into mytestvalues(4 ,'angelo')";
db2 "insert into mytestvalues(5 ,'angelo')";
db2 "insert into mytestvalues(6 ,'angelo')";
db2 "insert into mytestvalues(7 ,'angelo')";
db2 "insert into mytestvalues(8 ,'angelo')";
db2 "insert into mytestvalues(9 ,'angelo')";
db2 "insert into mytestvalues(10,'angelo')";
db2 "insert into mytestvalues(11,'angelo')";
db2 "insert into mytestvalues(12,'angelo')";
出现如下提示证明插入成功。
[db2idba@server1~]$ db2 "insert into mytest values(4,'angelo')";
DB20000I The SQL commandcompleted successfully.
[db2idba@server1 ~]$ db2"insert into mytest values(5 ,'angelo')";
查询数据
[db2idba@server2sqllib]$ db2 "select distinct id,dbpartitionnum(id), hashedvalue(id),namefrom mytest"
可以看到数据,分布在server1和server2节点里面。