CN104794026A - 一种集群实例多数据源绑定的故障转移方法 - Google Patents
一种集群实例多数据源绑定的故障转移方法 Download PDFInfo
- Publication number
- CN104794026A CN104794026A CN201510213308.9A CN201510213308A CN104794026A CN 104794026 A CN104794026 A CN 104794026A CN 201510213308 A CN201510213308 A CN 201510213308A CN 104794026 A CN104794026 A CN 104794026A
- Authority
- CN
- China
- Prior art keywords
- cluster
- database
- instance
- transfer
- database instance
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Hardware Redundancy (AREA)
- Multi Processors (AREA)
Abstract
本发明公开了一种集群实例多数据源绑定的故障转移方法,包括如下步骤:a)将同一应用程序分布部署在多个集群服务器上,并为该应用程序的所有集群实例至少配置连接两个数据库实例;b)定时探测所有集群实例与当前数据库实例之间的网路连接状态;c)如果某一集群实例与当前数据库实例网络断连,则确认该集群实例与下一数据库实例之间的连接是否正常;d)如果连接正常则自动转移连接到下一数据库实例上,并强制集群内所有其他实例转移连接到下一数据库实例上。本发明在发生单集群实例与数据库节点网络故障时,能够让集群所有实例连接在同一个节点上,确保所有实例的数据库操作都能正常提交,避免数据丢失。
Description
技术领域
本发明涉及一种多数据源故障转移的方法,尤其涉及一种集群实例多数据源绑定的故障转移方法。
背景技术
WebLogic Server为多数据源提供了故障转移算法,以便在数据源故障时(例如,在数据库管理系统崩溃时),系统可继续运行。一个多数据源可被视为一组数据源。多数据源最适用于具有高可用性的数据库系统(如冗余数据库或Oracle RealApplication Clusters,简称RAC)的节点之间的故障转移或负载平衡。故障转移算法提供了一个用于满足连接请求的数据源的有序列表。通常情况下,每一个对这种类型的多数据源发出的连接请求都由该列表中的第一个数据源提供服务。如果某个数据源连接未能通过测试,并且该连接无法被替换,或者如果该数据源已挂起,则会从该列表中的下一个数据源开始,按顺序查找连接。但是,在某些发生了故障的情况下,当未正在使用多数据源时,发生在某个RAC实例(该实例不是在其上启动了某个事务的实例)上的事务处理(数据更改)将会丢失,而不会发出任何通知或引发任何异常。在下列情况下,某些数据更改将会丢失:
1、server2和RAC1之间的网络连接已丢失,这导致了server2上cp1中的数据库连接故障转移到RAC2。server1上的相同数据源仍然具有与RAC1的连接。
2、在server1上,某个应用程序启动了一个事务并使用来自cp1的连接(与RAC1的连接)进行数据更改。
3、该应用程序调用了server2上的某个EJB,该EJB使用了server2上cp1中的某个数据库连接(与RAC2的连接)进行数据更改。
4、该应用程序在server1上完成了该事务。
结果如下:RAC1上的数据更改被提交。RAC 2上的数据更改被忽略。WebLogicServer事务管理器会调用资源上的准备和提交。在此情况下,由于各数据源具有相同名称,因此,它们被视为同一个资源,这样,就只会在该数据源的一个实例上进行调用。由于各数据源包含与不同RAC实例的连接,因此,一个RAC实例上数据更改会被提交,但其他RAC实例上的更改都会丢失。
针对这种情况,一定要确保提供WebLogic Server实例和Oracle RAC之间的冗余网络硬件可避免网络故障,但是网络故障是不可控的。虽然使用了多数据源和RAC来确保数据库单节点异常时可以故障转移,但是如果出现网络故障,这种故障转移将会失效,并导致数据丢失,影响业务。
发明内容
本发明所要解决的技术问题是提供一种集群实例多数据源绑定的故障转移方法,能够确保集群里的应用实例连接在RAC数据库的同一节点上,避免因网络故障导致集群结构里的实例对同一数据源连接在不同的RAC数据库节点上,最终导致其他RAC实例上的更改都丢失。
本发明为解决上述技术问题而采用的技术方案是提供一种集群实例多数据源绑定的故障转移方法,包括如下步骤:a)将同一应用程序分布部署在多个集群服务器上,并为该应用程序的所有集群实例至少配置连接两个数据库实例;b)定时探测所有集群实例与当前数据库实例之间的网络连接状态;c)如果某一集群实例与当前数据库实例网络断连,则确认该集群实例与下一数据库实例之间的连接是否正常;d)如果连接正常则自动转移连接到下一数据库实例上,并强制集群内所有其他实例转移连接到下一数据库实例上。
上述的集群实例多数据源绑定的故障转移方法,其中,所述步骤a)中的数据库实例为Oracle RAC,所述数据库实例的数目为两个,其中,一个数据库实例作为当前工作数据库节点,另一数据库实例作为备用数据库节点,所述两个数据库实例通过共享存储连接至同一数据库。
上述的集群实例多数据源绑定的故障转移方法,其中,所述步骤b)中定时记录所有集群实例与所有数据库实例之间的网络连接状态,并将状态存入数据库中记录,每一记录包括集群实例、数据源、数据库实例、故障转移标识以及转移成功标识;当出现某一集群实例与当前数据库实例网络断连,所述步骤c)设置故障转移标识为TRUE,并抛出异常信息通知集群内其他实例,当该集群实例转移连接到下一数据库实例后,所述步骤d)设置转移成功标识为TRUE,确认集群中的其他实例进行故障转移。
上述的集群实例多数据源绑定的故障转移方法,其中,所述步骤b)通过判断集群实例所在服务器与数据库实例所在服务器之间的物理连接状态来确认集群实例与数据库实例的连接状态;所述步骤c)通过发送测试SQL语句,测试该集群实例与下一数据库实例之间的连接是否正常,若SQL测试正常则设置转移成功标识为TRUE。
上述的集群实例多数据源绑定的故障转移方法,其中,所述步骤d)通过向集群中的其他实例发送网络故障的假信号,让其他实例主动关闭与当前数据库实例的连接,并全部转移连接到下一数据库实例上;所述步骤d)收到该集群实例与当前数据库实例的断连信息后,接着通过判断物理连接,确认该集群实例已经成功转移连接到下一数据库实例后,再强制断开集群中所有其他实例与当前数据库实例的连接,使得所有集群实例都转移连接到在下一数据库实例上。
本发明对比现有技术有如下的有益效果:本发明提供的集群实例多数据源绑定的故障转移方法,在发生单集群实例与数据库节点网络故障时,能够让集群所有实例连接在同一个节点上,确保所有实例的数据库操作都能正常提交,避免数据丢失。
附图说明
图1为本发明使用的集群实例多数据源连接结构示意图;
图2为集群实例多数据源故障转移数据丢失示意图;
图3为本发明集群实例多数据源绑定的故障转移流程示意图;
图4为本发明集群实例多数据源绑定故障转移示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的描述。
图1为本发明使用的集群实例多数据源连接结构示意图。
请参见图1,本发明使用的应用实例集群结构与数据库RAC的连接模式为failover模式。将同一个数据源DS1部署在集群上,集群内所有实例都会在启动时初始化一个已与数据库节点RAC1创建多个连接的连接池CP1。而数据库节点RAC2则作为故障转移的备用节点。
图2为集群实例多数据源故障转移数据丢失示意图。
请继续参见图2,当集群实例server2与数据库节点RAC1产生网络故障时,集群实例server2上的数据库连接池CP1将会自动故障转移到数据库节点RAC2上。而此时,集群实例server1和server3与数据库节点RAC1的网络连接正常,不会转移到RAC2上,依然保持在RAC1上。此时,集群里的实例包含不同数据库节点的连接。应用APP1分别从不同的集群实例上提交数据库操作变更,由于他们都是使用同一个数据源DS1,被视为同一资源,只会在该数据源的一个实例上进行调用,而这个数据源包含不同RAC实例连接,只一个会被提交,其他的丢失。所以集群实例server1,server3上的数据库操作提交正常完成,而集群实例server2上的数据库操作提交丢失。
图3为本发明集群实例多数据源绑定的故障转移流程示意图;图4为本发明集群实例多数据源绑定故障转移示意图。
请参见图3和图4,在单个集群实例与数据库节点发生网络故障转移到第二个节点上,导致集群实例里同一数据源连接在不同的数据库节点上,为了避免这种模式下数据库操作出现丢失的情况,在探测到有一个实例与数据库节点发生网络故障后,将集群里的其他实例的数据库连接绑定转移,实现所有集群实例连接在同一数据库节点上,从而提高failover模式对业务性能的保障。具体步骤如下:
步骤S1:将同一应用程序分布部署在多个集群服务器上,并为该应用程序的所有集群实例至少配置连接两个数据库实例;
步骤S2:定时探测所有集群实例与当前数据库实例之间的网路连接状态;
步骤S3:如果某一集群实例与当前数据库实例网络断连,则确认该集群实例与下一数据库实例之间的连接是否正常;
步骤S4:如果连接正常则自动转移连接到下一数据库实例上,并强制集群内所有其他实例转移连接到下一数据库实例上。
下面给出本发明的具体实施方式:
1)本发明实时探测集群实例与数据库节点的连接状态,并将状态保存在数据库中,在本地存原始配置状态。
集群实例 | 数据源 | 数据库 | 故障转移标识 | 转移成功标识 |
server1 | DS1 | RAC1 | FALSE | FALSE |
server2 | DS1 | RAC1 | FALSE | FALSE |
server3 | DS1 | RAC1 | FALSE | FALSE |
2)实时探测集群实例与数据库节点的连接状态,先对比本地原始配置,与本地原始配置一致不更新数据库,与本地原始配置不一致,更新数据库,并设置故障转移标识,发出告警短信通知网络异常。
集群实例 | 数据源 | 数据库 | 故障转移标识 | 转移成功标识 |
server1 | DS1 | RAC1 | FALSE | FALSE |
server2 | DS1 | RAC2 | TRUE | FALSE |
server3 | DS1 | RAC1 | FALSE | FALSE |
3)对已故障转移的实例进行转移后的连接状态测试,发送测试SQL语句,确认连接正常,并设置转移成功标识。并发告警短信通知节点转移成功。
集群实例 | 数据源 | 数据库 | 故障转移标识 | 转移成功标识 |
server1 | DS1 | RAC1 | FALSE | FALSE |
server2 | DS1 | RAC2 | TRUE | TRUE |
server3 | DS1 | RAC1 | FALSE | FALSE |
4)通过故障转移标识和转移成功标识,确认集群中的其他实例可以做故障转移。向集群中的其他实例发出网络故障的假信号,让其他的实例主动关闭与数据库节点1的连接,全部转移动节点2上,并设置故障转移标识。
集群实例 | 数据源 | 数据库 | 故障转移标识 | 转移成功标识 |
server1 | DS1 | RAC2 | TRUE | FALSE |
server2 | DS1 | RAC2 | TRUE | TRUE |
server3 | DS1 | RAC2 | TRUE | FALSE |
5)对绑定故障转移的实例进行转移后的连接状态测试,发送测试SQL语句,确认连接正常,并设置转移成功标识。并发告警短信通知绑定转移成功。
集群实例 | 数据源 | 数据库 | 故障转移标识 | 转移成功标识 |
server1 | DS1 | RAC2 | TRUE | TRUE |
server2 | DS1 | RAC2 | TRUE | TRUE |
server3 | DS1 | RAC2 | TRUE | TRUE |
6)最终所有实例都因server2与数据库节点RAC1间的网络故障,全部跟server2绑定一起转移到数据库节点RAC2上,可以有效避免数据库操作丢失,从而提高failover模式对业务性能的保障。
虽然本发明已以较佳实施例揭示如上,然其并非用以限定本发明,任何本领域技术人员,在不脱离本发明的精神和范围内,当可作些许的修改和完善,因此本发明的保护范围当以权利要求书所界定的为准。
Claims (5)
1.一种集群实例多数据源绑定的故障转移方法,其特征在于,包括如下步骤:
a)将同一应用程序分布部署在多个集群服务器上,并为该应用程序的所有集群实例至少配置连接两个数据库实例;
b)定时探测所有集群实例与当前数据库实例之间的网络连接状态;
c)如果某一集群实例与当前数据库实例网络断连,则确认该集群实例与下一数据库实例之间的连接是否正常;
d)如果连接正常则自动转移连接到下一数据库实例上,并强制集群内所有其他实例转移连接到下一数据库实例上。
2.如权利要求1所述的集群实例多数据源绑定的故障转移方法,其特征在于,所述步骤a)中的数据库实例为Oracle RAC,所述数据库实例的数目为两个,其中,一个数据库实例作为当前工作数据库节点,另一数据库实例作为备用数据库节点,所述两个数据库实例通过共享存储连接至同一数据库。
3.如权利要求1所述的集群实例多数据源绑定的故障转移方法,其特征在于,所述步骤b)中定时记录所有集群实例与所有数据库实例之间的网络连接状态,并将状态存入数据库中记录,每一记录包括集群实例、数据源、数据库实例、故障转移标识以及转移成功标识;当出现某一集群实例与当前数据库实例网络断连,所述步骤c)设置故障转移标识为TRUE,并抛出异常信息通知集群内其他实例,当该集群实例转移连接到下一数据库实例后,所述步骤d)设置转移成功标识为TRUE,确认集群中的其他实例进行故障转移。
4.如权利要求3所述的集群实例多数据源绑定的故障转移方法,其特征在于,所述步骤b)通过判断集群实例所在服务器与数据库实例所在服务器之间的物理连接状态来确认集群实例与数据库实例的连接状态;所述步骤c)通过发送测试SQL语句,测试该集群实例与下一数据库实例之间的连接是否正常,若SQL测试正常则设置转移成功标识为TRUE。
5.如权利要求1所述的集群实例多数据源绑定的故障转移方法,其特征在于,所述步骤d)通过向集群中的其他实例发送网络故障的假信号,让其他实例主动关闭与当前数据库实例的连接,并全部转移连接到下一数据库实例上;所述步骤d)收到该集群实例与当前数据库实例的断连信息后,接着通过判断物理连接,确认该集群实例已经成功转移连接到下一数据库实例后,再强制断开集群中所有其他实例与当前数据库实例的连接,使得所有集群实例都转移连接到在下一数据库实例上。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510213308.9A CN104794026B (zh) | 2015-04-29 | 2015-04-29 | 一种集群实例多数据源绑定的故障转移方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510213308.9A CN104794026B (zh) | 2015-04-29 | 2015-04-29 | 一种集群实例多数据源绑定的故障转移方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104794026A true CN104794026A (zh) | 2015-07-22 |
CN104794026B CN104794026B (zh) | 2017-09-15 |
Family
ID=53558836
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510213308.9A Active CN104794026B (zh) | 2015-04-29 | 2015-04-29 | 一种集群实例多数据源绑定的故障转移方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104794026B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105279279A (zh) * | 2015-11-16 | 2016-01-27 | 天津南大通用数据技术股份有限公司 | 从低速数据源加载压缩数据文件的方法及装置 |
CN106095571A (zh) * | 2016-06-07 | 2016-11-09 | 中国建设银行股份有限公司 | 多rac集群系统、数据访问方法及装置 |
CN107342905A (zh) * | 2017-08-28 | 2017-11-10 | 郑州云海信息技术有限公司 | 一种集群存储系统故障转移的节点调度方法及系统 |
CN107566475A (zh) * | 2017-08-28 | 2018-01-09 | 北京天元创新科技有限公司 | 一种会话故障转移方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070198684A1 (en) * | 2006-02-22 | 2007-08-23 | Kazunori Mizushima | Method and system for data processing with connection pool for the same |
CN101447989A (zh) * | 2007-11-28 | 2009-06-03 | 阿尔卡特朗讯公司 | 用于改进的高可用性组件实现的系统和方法 |
CN103124967A (zh) * | 2010-09-15 | 2013-05-29 | 甲骨文国际公司 | 用于将应用服务器连接到集群的数据库的系统和方法 |
CN103917972A (zh) * | 2011-06-27 | 2014-07-09 | 甲骨文国际公司 | 用于在集群数据库环境中提供会话亲和性和改善的连通性的系统和方法 |
CN104503965A (zh) * | 2014-10-16 | 2015-04-08 | 杭州斯凯网络科技有限公司 | PostgreSQL高弹性的高可用及负载均衡实现方法 |
-
2015
- 2015-04-29 CN CN201510213308.9A patent/CN104794026B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070198684A1 (en) * | 2006-02-22 | 2007-08-23 | Kazunori Mizushima | Method and system for data processing with connection pool for the same |
CN101447989A (zh) * | 2007-11-28 | 2009-06-03 | 阿尔卡特朗讯公司 | 用于改进的高可用性组件实现的系统和方法 |
CN103124967A (zh) * | 2010-09-15 | 2013-05-29 | 甲骨文国际公司 | 用于将应用服务器连接到集群的数据库的系统和方法 |
CN103917972A (zh) * | 2011-06-27 | 2014-07-09 | 甲骨文国际公司 | 用于在集群数据库环境中提供会话亲和性和改善的连通性的系统和方法 |
CN104503965A (zh) * | 2014-10-16 | 2015-04-08 | 杭州斯凯网络科技有限公司 | PostgreSQL高弹性的高可用及负载均衡实现方法 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105279279A (zh) * | 2015-11-16 | 2016-01-27 | 天津南大通用数据技术股份有限公司 | 从低速数据源加载压缩数据文件的方法及装置 |
CN105279279B (zh) * | 2015-11-16 | 2019-01-25 | 天津南大通用数据技术股份有限公司 | 从低速数据源加载压缩数据文件的方法及装置 |
CN106095571A (zh) * | 2016-06-07 | 2016-11-09 | 中国建设银行股份有限公司 | 多rac集群系统、数据访问方法及装置 |
CN106095571B (zh) * | 2016-06-07 | 2019-06-04 | 中国建设银行股份有限公司 | 多rac集群系统、数据访问方法及装置 |
CN107342905A (zh) * | 2017-08-28 | 2017-11-10 | 郑州云海信息技术有限公司 | 一种集群存储系统故障转移的节点调度方法及系统 |
CN107566475A (zh) * | 2017-08-28 | 2018-01-09 | 北京天元创新科技有限公司 | 一种会话故障转移方法及装置 |
CN107566475B (zh) * | 2017-08-28 | 2020-08-04 | 北京天元创新科技有限公司 | 一种会话故障转移方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104794026B (zh) | 2017-09-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100549960C (zh) | 群集计算系统中改变的快速应用程序通知的方法和系统 | |
JP6382454B2 (ja) | 分散ストレージ及びレプリケーションシステム、並びに方法 | |
US7457236B2 (en) | Method for providing fault-tolerant application cluster service | |
US8412790B2 (en) | Method, system and computer readable recording medium for determining major group under split-brain syndrome | |
CN109729129A (zh) | 存储集群的配置修改方法、存储集群及计算机系统 | |
CN110958151B (zh) | 保活检测方法、装置、节点、存储介质及通信系统 | |
CN103019889A (zh) | 分布式文件系统及其故障处理方法 | |
US20190075084A1 (en) | Distributed Lock Management Method, Apparatus, and System | |
EP3817290B1 (en) | Member change method for distributed system, and distributed system | |
CN104794026A (zh) | 一种集群实例多数据源绑定的故障转移方法 | |
CN102761528A (zh) | 数据管理系统及方法 | |
CN105933407A (zh) | 一种实现Redis集群高可用的方法及系统 | |
US20130139178A1 (en) | Cluster management system and method | |
CN103856357A (zh) | 一种堆叠系统故障处理方法及堆叠系统 | |
CN112217847A (zh) | 微服务平台及其实现方法、电子设备及存储介质 | |
CN105100185A (zh) | 事务中间件机器环境中处理数据库状态通知的系统和方法 | |
CN112214377A (zh) | 一种设备管理方法及系统 | |
CN108733477B (zh) | 数据集群化处理的方法、装置及设备 | |
CN109189854B (zh) | 提供持续业务的方法及节点设备 | |
CN114328033A (zh) | 保持高可用设备组业务配置一致性的方法及装置 | |
JP2013505499A (ja) | 動的ネットワークでの改善されたサーバ冗長性の方法 | |
US20210326224A1 (en) | Method and system for processing device failure | |
CN105323271B (zh) | 一种云计算系统以及云计算系统的处理方法和装置 | |
CN114095342B (zh) | 备份的实现方法及装置 | |
CN100563233C (zh) | 一种公共对象请求代理结构应用中的容错性方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 201701 room 1, zone 113, zone 1, building 588, No. 7548, Lane R, outer Pine Road, Qingpu District, Shanghai Patentee after: Shanghai new torch network information technology Limited by Share Ltd Address before: 200063 Shanghai, Zhongshan North Road, No. 2000, building, building No. 3, B Patentee before: SHANGHAI XINJU NETWORK INFORMATION TECHNOLOGY CO., LTD. |