【问题标题】:Python package IBM_DB connection with enableAlternateServerListFirstConnect and alternateserverlist parametersPython 包 IBM_DB 连接与 enableAlternateServerListFirstConnect 和alternateserverlist 参数
【发布时间】:2021-04-01 15:47:16
【问题描述】:

我需要为使用 IBM_DB 包的 Python 应用程序托管在 Linux 服务器上的 DB2 数据库启用故障转移/辅助数据库。

使用 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

但是,通过下面链接中如何包含它的说明,似乎只能将它们包含在这个 DB 文件中: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

我知道很多这些参数可以在连接字符串中配置,我想知道是否可以在连接字符串中包含这些特定参数。是否有任何文件/验证这样的东西可以工作:

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", "", "")

感谢您的帮助。

【问题讨论】:

    标签: python database db2 connection


    【解决方案1】:

    一个有用的页面是这个one

    注意 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 参数/关键字也可以在连接字符串中设置,除非特别排除。所以做你的测试来验证。

    【讨论】:

    • 再次感谢您的详细回复。似乎 .cfg 文件为备用服务器列表提供了一个列表,如下所示:<server name="server1" hostname="db2luwa.luw.ibm.com" port="446"/> 你知道如何在连接字符串中输入几个参数吗?我没有找到任何关于 IBM_DB 如何处理连接字符串的线索。
    • IBM_DB 不处理连接字符串,只有 CLI 驱动程序会处理。如前所述,您不需要指定该列表,CLI 驱动程序应该在连接时自动从 Db2-LUW 实例获取它。
    • 我相信它从数据库实例配置为clientRerouteAlternateServerName。 CLI 驱动程序是否仍然能够使用这些配置自动获取它,或者数据库是否也需要配置备用服务器列表?好像在我上面发送的链接中,列表是在 .cfg 文件中的客户端配置的,所以我的印象是这也应该由我的应用程序 / 在连接字符串中完成。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-26
    • 2017-04-16
    相关资源
    最近更新 更多