Python 包 IBM_DB 连接与 enableAlternateServerListFirstConnect 和 alternateserverlist 参数

Python package IBM_DB connection with enableAlternateServerListFirstConnect and alternateserverlist parameters

我需要使用 IBM_DB 包为 python 应用程序在 Linux 服务器上托管的 DB2 数据库启用 failover/secondary 数据库。

使用JDBC驱动程序,您可以轻松地将以下参数添加到连接字符串中:

clientRerouteAlternatePortNumber=port#
clientRerouteAlternateServerName=servername
enableSeamlessFailover=1 

由于 IBM_DB 包使用 CLI 驱动程序,这些参数不会相同。我通过IBM的文档找到了如下参数,分别是: https://www.ibm.com/support/knowledgecenter/SSEPGG_11.5.0/com.ibm.db2.luw.apdv.embed.doc/doc/c0060428.html

enableAlternateServerListFirstConnect
alternateserverlist
maxAcrRetries

然而,通过下面link中如何包含它的说明,似乎只能将它们包含在这个数据库文件中:db2dsdriver.cfg

https://www.ibm.com/support/producthub/db2/docs/content/SSEPGG_11.5.0/com.ibm.db2.luw.apdv.cli.doc/doc/c0056196.html

我知道很多这些参数都可以在连接字符串中配置,我想知道是否可以在连接字符串中包含这些特定参数。有没有 documentation/verification 这样的东西可以工作:

import ibm_db_dbi

connect = ibm_db_dbi.connect("DATABASE=whatever; \
    HOSTNAME=whatever; \
    PORT=whatever; \
    PROTOCOL=TCPIP; \
    UID=whatever; \
    PWD=whatever; \
    CURRENTSCHEMA=whatever;\
    AUTHENTICATION=SERVER_ENCRYPT;\
    ClientEncAlg=2;\
    enableAlternateServerListFirstConnect=True;\
    alternateserverlist=server1,port1,server2,port2;\
    maxAcrRetries=2", "", "")

感谢您的帮助。

这是一个有用的页面 one

请注意 keywords/parameters 在 jdbc/sqlj 和 CLI 之间的不同名称。

想法是,如果使用 CLI 驱动程序正确配置了 Db2-LUW 实例,则 CLI 驱动程序将自动从 Db2-LUW 实例获取 ACR 的详细信息,并将应用有用的默认值。因此,您可能不需要在连接字符串中添加更多关键字,除非进行调整。

CLI 的 HA 相关关键字参数如下:

acrRetryInterval
alternateserverlist
detectReadonlyTxn
enableAcr
enableAlternateGroupSeamlessACR
enableAlternateServerListFirstConnect
enableSeamlessAcr
maxAcrRetries

更多详细信息here。请注意,如果 enableACR=true(默认值),则 enableSeamlessAcr=true(也是默认值)。

虽然文档提到 db2dsdriver.cfg 大多数 CLI parameter/keywords 也可以在连接字符串中设置,除非特别排除。所以做你的测试来验证。