Database 如何从远程Db2实例连接到IBM Db2事件存储实例?

Database 如何从远程Db2实例连接到IBM Db2事件存储实例?,database,ssl,db2,ibm-event-store,Database,Ssl,Db2,Ibm Event Store,我有一个Db2实例,正在尝试将其连接到远程IBMDB2事件存储集群。我已经能够连接DB2CLP客户机了,是否可以让Db2实例看到Db2事件存储集群中的表,就像它们是本地表一样 我使用的容器已经包含最新的DB211.5实例,可以直接从下载。有了这个容器,我能够按照以下步骤配置Db2客户机来远程访问IBMDB2事件存储实例,因此我知道我已经具备了连接性 首先,我用db2实例启动容器 $ docker run -itd --name db2 -e DBNAME=testdb -v ~/:/databa

我有一个Db2实例,正在尝试将其连接到远程IBMDB2事件存储集群。我已经能够连接DB2CLP客户机了,是否可以让Db2实例看到Db2事件存储集群中的表,就像它们是本地表一样

我使用的容器已经包含最新的DB211.5实例,可以直接从下载。有了这个容器,我能够按照以下步骤配置Db2客户机来远程访问IBMDB2事件存储实例,因此我知道我已经具备了连接性

首先,我用db2实例启动容器

$ docker run -itd --name db2 -e DBNAME=testdb -v ~/:/database -e DB2INST1_PASSWORD=GD1OJfLGG64HV2dtwK -e LICENSE=accept -p 50000:50000 --privileged=true ibmcom/db2
进入集装箱

$ docker exec -it  db2 bash -c "su - db2inst1"
跟随

为此,使用GSKCapiCmd工具创建密钥数据库

[db2inst1@a33d5b29ffa2 ~]$ mkdir /database/config/db2inst1/sqllib/security/keystore
[db2inst1@a33d5b29ffa2 ~]$ cd /database/config/db2inst1/sqllib/security/keystore
[db2inst1@a33d5b29ffa2 ~]$ gsk8capicmd_64 -keydb -create -db "mydbclient.kdb" -pw "myClientPassw0rdpw0" -stash
然后从服务器复制默认的自签名证书

# kubectl get pods -n dsx | grep eventstore-tenant-engine | head -1
eventstore-tenant-engine-565d74cfd8-64jv4         1/1       Running     0          21h

# kubectl exec -n dsx eventstore-tenant-engine-565d74cfd8-64jv4 -- cat /eventstorefs/eventstore/db2inst1/sqllib_shared/gskit/certs/eventstore_ascii.cert
(如果您无权访问服务器,也可以使用)

通过此操作,我在客户端上创建了一个server-certificate.cert文件,然后将该证书添加到我之前创建的客户端密钥数据库中:

[db2inst1@a33d5b29ffa2 ~]$ gsk8capicmd_64 -cert -add -db "mydbclient.kdb" -pw "myClientPassw0rdpw0"  -label "server" -file "server-certificate.cert" -format ascii -fips
最后更新了客户端上的配置,以使用我刚刚设置的客户端密钥数据库:

[db2inst1@a33d5b29ffa2 ~]$ db2 update dbm cfg using 
      SSL_CLNT_KEYDB /database/config/db2inst1/sqllib/security/keystore/clientkey.kdb 
      SSL_CLNT_STASH /database/config/db2inst1/sqllib/security/keystore/clientstore.sth
然后,我按照文档进行操作,因为Db2事件存储企业版默认配置了SSL:

[db2inst1@a33d5b29ffa2 ~]$ db2 catalog tcpip node nova remote 172.16.197.11 server 18730 SECURITY SSL
DB20000I  The CATALOG TCPIP NODE command completed successfully.
DB21056W  Directory changes may not be effective until the directory cache is
refreshed.
最后,我按照文档进行了介绍,这是Db2事件存储所需要的:

[db2inst1@a33d5b29ffa2 ~]$ db2 CATALOG DATABASE eventdb AT NODE  nova AUTHENTICATION GSSPLUGIN
DB20000I  The CATALOG DATABASE command completed successfully.
DB21056W  Directory changes may not be effective until the directory cache is
refreshed.
通过我所做的一切设置,我能够建立一个


现在我想更进一步,让db2实例同时看到本地表和远程db2事件存储表。这可能吗?

是的!你真的很接近

如果已连接到Db2事件存储数据库,则可以运行:

db2列出所有的表

或对于给定的模式:

db2模式列表

现在,由于您使用的是
DB211.5
docker容器,因此还可以在容器内创建一个数据库。例如:

db2createdbtestdb

之后,您可以连接到容器的本地数据库,并列出“本地”表。例如:

> db2 connect to testdb
> db2 list tables for all
这里的关键是你的主动连接。当连接到远程Db2事件存储数据库时,
Db2 list tables…
命令将显示远程数据库的表,当连接到本地数据库时,
Db2 list tables…
命令将显示本地数据库的表

> db2 connect to testdb
> db2 list tables for all