前提环境介绍: DB2 9.7, centos7
1.配置端口
root用户vi /etc/services添加如下端口配置信息:
这里为:
DB2C_db2inst1 60000/tcp
DB2_db2inst1 60003/tcp
DB2_db2inst1_1 60004/tcp
DB2_db2inst1_2 60005/tcp
DB2_db2inst1_END 60006/tcp
用实例用户修改SVCENAME 为连接数据库的端口号:
db2 update dbm cfg using SVCENAME DB2C_db2inst1 #也可以直接设置成成60000
说明:
端口号为60000是数据库连接的端口号,总共4个node分别对应DB2_db2inst1到DB2_db2inst1_END的4个端口号设置
可以通过netstat -an|grep 60000查看是否启动
如果配置了db2nodes.cfg之后, 启动db 那么/etc/services会自动把多个分区都加上?
2. 配置通信方式:
db2set DB2RSHCMD=ssh
DB2COMM=tcpip #默认已经存在
3.配置本机ssh的免密登录:
(1) cd ~ #进入实例路径/home/db2inst1
(2) ssh-keygen #产生公钥私钥对
会在当前实例路径下产生一个文件夹.ssh,下面会有两个文件--公钥秘钥对:
[db2inst1@localhost .ssh]$ pwd
/home/db2inst1/.ssh
[db2inst1@localhost .ssh]$ ls -lrt
total 8
-rw-r--r--. 1 db2inst1 db2iadm1 412 May 8 23:36 id_rsa.pub
-rw-------. 1 db2inst1 db2iadm1 1675 May 8 23:36 id_rsa
(3)把本地公钥复制到需要免密的另一台机器上(这里还是本机)
ssh-copy-id -i ~/.ssh/id_rsa.pub db2inst1@localhost.localdomain
执行该命令时需要输入密码,成功后再次通过ssh db2inst1@localhost.localdomain 就不需要密码了。
测试:
rah date
db2_all date
(4). root创建 /etc/hosts.equiv , 内容为: --不用
localhost.localdomain db2inst1
db2inst创建 ~/.rhosts ,内容为: ---不用
+
或者只创建 ~/.rhosts 内容为:
localhost.localdomain db2inst1
步骤(4)仅当db2set DB2RSHCMD=rsh的时候才需要配置,这里是ssh,所以可以不配。
4.修改host
/etc/hosts 修改后的内容为:
[db2inst1@test ~]$ more /etc/hosts
127.0.0.1 localhost
192.168.232.130 test
这里可以把原来的内容留着,也可以删掉,然后加上以上这两行。这里删掉了。
127.0.0.1 localhost #本地环路地址, 不依赖于实际的网卡,不走外部网络,一般本地测试程序用
192.168.232.130 test #路由器的IP地址,是网卡的实际地址
5.添加分区
db2start dbpartitionnum 1 add dbpartitionnum hostname localhost.localdomain port 1
db2start dbpartitionnum 1 add dbpartitionnum hostname localhost.localdomain port 1
db2start dbpartitionnum 1 add dbpartitionnum hostname localhost.localdomain port 1
db2start dbpartitionnum 1 add dbpartitionnum hostname localhost.localdomain port 1
直接修改~/sqllib下db2nodes.cfg也行。内容为:
0 localhost 0
1 localhost 1
2 localhost 2
3 localhost 3
这里用test也可以,建议用test
6.创建数据库sample: db2sampl
注意,对于这种单个主机配置多个逻辑节点的情况,如果在配置这些节点之前在单节点node0上创建数据库,那么等配好节点之后其他节点上可能会找不到这个数据库
7.启动数据库:
但是启动时发现报错,我发启动:
[db2inst1@localhost sqllib]$ db2start
05/09/2019 01:29:06 0 0 SQL6048N A communication error occurred during START or STOP DATABASE MANAGER processing.
05/09/2019 01:29:07 1 0 SQL6048N A communication error occurred during START or STOP DATABASE MANAGER processing.
SQL1032N No start database manager command was issued. SQLSTATE=57019
实在没找到原因,对实例进行了更新:
cd /opt/ibm/db2/V9.7/instance
./db2iupdt db2inst1 #root执行
更新之后,就可以启动了。(猜测是db2哪里没配置好)
注意:
/etc/service下的节点个数要和db2nodes.cfg一样。
----------------------后续fix的一些记录:
touch .profile --应该没用
查看端口: netstat -an |grep 6000
hostname test
重新更新实例
yum install sysstat
rpm -aql | grep sysstat
vi /etc/networks
uname -a
root: service network restart 重启网络
[db2inst1@test db2dump]$ more /etc/hosts
127.0.0.1 localhost
192.168.232.130 test