[发明专利]一种集群实例多数据源绑定的故障转移方法有效
申请号: | 201510213308.9 | 申请日: | 2015-04-29 |
公开(公告)号: | CN104794026B | 公开(公告)日: | 2017-09-15 |
发明(设计)人: | 程永新;宋辉;陈爱珍 | 申请(专利权)人: | 上海新炬网络信息技术有限公司 |
主分类号: | G06F11/14 | 分类号: | G06F11/14;G06F17/30 |
代理公司: | 上海科律专利代理事务所(特殊普通合伙)31290 | 代理人: | 袁亚军,金碎平 |
地址: | 200063 上海市普*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 集群 实例 多数 绑定 故障 转移 方法 | ||
技术领域
本发明涉及一种多数据源故障转移的方法,尤其涉及一种集群实例多数据源绑定的故障转移方法。
背景技术
WebLogic Server为多数据源提供了故障转移算法,以便在数据源故障时(例如,在数据库管理系统崩溃时),系统可继续运行。一个多数据源可被视为一组数据源。多数据源最适用于具有高可用性的数据库系统(如冗余数据库或Oracle Real Application 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上的数据更改被忽略。WebLogic Server事务管理器会调用资源上的准备和提交。在此情况下,由于各数据源具有相同名称,因此,它们被视为同一个资源,这样,就只会在该数据源的一个实例上进行调用。由于各数据源包含与不同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。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海新炬网络信息技术有限公司,未经上海新炬网络信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510213308.9/2.html,转载请声明来源钻瓜专利网。