搭建db2数据库多分区

来源:互联网 发布:linux安装oracle9i 编辑:程序博客网 时间:2024/05/18 02:03

转载请注明出处 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节点里面。

 


0 0
原创粉丝点击