如何交换 ODBC 连接
How to swap ODBC connections
我在一个网络中有 2 个并行的 Informix 数据库 运行。一个是主服务器数据库,另一个是辅助服务器数据库。默认情况下,我需要从客户端节点(SCADA 应用程序)连接主数据库。如果主数据库不活动,那么我需要连接辅助数据库。如何使用 ODBC 连接在主要和次要之间切换?
您可能应该查看连接管理器 — oncmsm
— 它旨在处理副本之间的故障转移。您的应用程序将使用单个句柄连接到连接管理器,并且连接管理器会将 activity 路由到主节点,除非它不可用。
如果您不使用连接管理器,则在两个连接之间切换的机制非常简单。您有两个可用的连接句柄,并使用第三个变量 current_connection
,它最初指向主句柄。当您检测到主要句柄不可用时,您将 current_connection
更改为指向次要句柄。这里棘手的部分是检测主服务器何时不可用。您可能需要对每个操作进行某种超时,并且能够在切换后重试最后一条语句。这变得很复杂——检测恢复后何时切换回主服务器也是如此。这是连接管理器自动处理的那种东西。
我在一个网络中有 2 个并行的 Informix 数据库 运行。一个是主服务器数据库,另一个是辅助服务器数据库。默认情况下,我需要从客户端节点(SCADA 应用程序)连接主数据库。如果主数据库不活动,那么我需要连接辅助数据库。如何使用 ODBC 连接在主要和次要之间切换?
您可能应该查看连接管理器 — oncmsm
— 它旨在处理副本之间的故障转移。您的应用程序将使用单个句柄连接到连接管理器,并且连接管理器会将 activity 路由到主节点,除非它不可用。
如果您不使用连接管理器,则在两个连接之间切换的机制非常简单。您有两个可用的连接句柄,并使用第三个变量 current_connection
,它最初指向主句柄。当您检测到主要句柄不可用时,您将 current_connection
更改为指向次要句柄。这里棘手的部分是检测主服务器何时不可用。您可能需要对每个操作进行某种超时,并且能够在切换后重试最后一条语句。这变得很复杂——检测恢复后何时切换回主服务器也是如此。这是连接管理器自动处理的那种东西。