一种数据库切换自动重连方法以及可读存储介质
文献发布时间:2023-06-19 10:16:30
技术领域
本发明属于数据库连接技术领域,尤其涉及-一种基于durid连接池能力的数据库切换自动重连方法以及可读存储介质。
背景技术
1.Mysql数据库多中心主从切换:
1)重新配置数据库IP和端口。
2)重启应用。
3)检查数据库是否切换成功。
2.Oracle数据库多中心主从切换:
1)使用多中心配置方式
2)发生切换后客户端自动切换到可写的Oracle RAC节点上
3)多中心不同节点的Oracle RAC使用共享存储的方式保证数据库数据一致性
3.其存在以下几点不足。
1.Mysql的方案需要重启应用,如果不重启应用,不会自动连接到新的数据库上。
2.Oracle的方案成本高昂、日常运行风险高、效率低。
发明内容
本发明的目的在于,为克服现有技术缺陷,提供了一种数据库切换自动重连方法以及可读存储介质,通过本数据库切换自动重连方法在现有重启应用切换的基础上,保证了应用不重启就能完成数据库切换的功能。拥有切换稳定,数据丢失少和业务无感知的特点。
本发明目的通过下述技术方案来实现:
一种数据库切换自动重连方法,所述数据库切换自动重连方法包括:S1:将各数据库的连接方式修改为使用域名进行连接;S2:将原有数据库设置为只读状态,切换后的数据库设置为可写状态;S3:修改DNS中数据库的连接域名对应的IP;S4:通过在DataSource中轮询DNS,发现数据库IP发生变化,且现有连接的数据库为只读状态,变化IP的数据库为可写状态时,关闭当前的DataSource,重现创建DataSource。
根据与一个优选的实施方式,所述步骤S1具体包括:修改配置,将数据库的IP修改为域名,并添加数据库切换插件。
根据与一个优选的实施方式,所述步骤S2还包括:切换数据库的状态,将原有的数据库状态切换为从状态,将需要切换的数据库状态设置为主状态。
根据与一个优选的实施方式,所述步骤S4具体包括:DataSource中轮询发现DNS发生数据库切换,检查数据库主从切换关系,主从发生切换则关闭当前DataSource,新建DataSource。
根据与一个优选的实施方式,所述步骤S4还包括:从新建的DataSource获取新的连接到新数据库检测是否切换成功。
根据与一个优选的实施方式,所述步骤S4中通过在DataSource中轮询DNS,发现数据库IP发生变化具体包括:在Druid连接池中增加filter,在该filter中定时检测DNS对应域名的IP是否发生变化。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现前述的数据库切换自动重连方法。
前述本发明主方案及其各进一步选择方案可以自由组合以形成多个方案,均为本发明可采用并要求保护的方案;且本发明,(各非冲突选择)选择之间以及和其他选择之间也可以自由组合。本领域技术人员在了解本发明方案后根据现有技术和公知常识可明了有多种组合,均为本发明所要保护的技术方案,在此不做穷举。
本发明的有益效果:本发明方法在现有重启应用切换的基础上,保证了应用不重启就能完成数据库切换的功能。拥有切换稳定,数据丢失少和业务无感知的特点。并且,本发明在现有的druid中增加filter,在filter中检测DNS,数据库主从状态。然后对DataSource进行重启。即是,无需重启应用就能进行数据库切换,通过修改域名对应的ip就能完成数据库切换。基于域名的自动切换主从数据库:无侵入,数据丢失少。
附图说明
图1是本发明数据库切换自动重连方法的流程示意图。
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
需要说明的是,为使本发明实施例的目的、技术方案和优点更加清楚,下面对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。
因此,以下对本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明的描述中,还需要说明的是,除非另有明确的规定和限定,术语“设置”、“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
另外,本发明要指出的是,本发明中,如未特别写出具体涉及的结构、连接关系、位置关系、动力来源关系等,则本发明涉及的结构、连接关系、位置关系、动力来源关系等均为本领域技术人员在现有技术的基础上,可以不经过创造性劳动可以得知的。
实施例1:
参考图1所示,本发明公开了一种数据库切换自动重连方法。数据库切换自动重连方法包括:
步骤S1:将各数据库的连接方式修改为使用域名进行连接。
优选地,所述步骤S1具体包括:修改配置,将数据库的IP修改为域名,并添加数据库切换插件。
步骤S2:将原有数据库设置为只读状态,切换后的数据库设置为可写状态。
优选地,所述步骤S2还包括:切换数据库的状态,将原有的数据库状态切换为从状态,将需要切换的数据库状态设置为主状态。
步骤S3:修改DNS中数据库的连接域名对应的IP。
步骤S4:通过在DataSource中轮询DNS,发现数据库IP发生变化,且现有连接的数据库为只读状态,变化IP的数据库为可写状态时,关闭当前的DataSource,重现创建DataSource。
优选地,所述步骤S4具体包括:DataSource中轮询发现DNS发生数据库切换,检查数据库主从切换关系,主从发生切换则关闭当前DataSource,新建DataSource。
优选地,所述步骤S4还包括:从新建的DataSource获取新的连接到新数据库检测是否切换成功。
进一步地,所述步骤S4中通过在DataSource中轮询DNS,发现数据库IP发生变化具体包括:在Druid连接池中增加filter,在该filter中定时检测DNS对应域名的IP是否发生变化。
即是,本发明方法实现过程如下:
1)数据库连接不通过IP直接连接数据库,而是通过域名连接。
2)发生数据库切换的时候,修改DNS中的域名对应的IP。
3)在Druid连接池中增加filter,在该filter中定时检测DNS对应域名的IP是否发生变化。
4)检测原来数据库是否为只可读的状态。
5)和新数据库是否为可写的状态。
6)如果上面两个条件都满足,关闭当前所有数据库连接,重启DataSource。
7)从新建的DataSource中获取新的连接到新数据库检测是否切换成功。
本发明方法中业务透明切换,无需业务方操作,仅需要配置插件和修改为域名连接。并且,服务多种场景,支持多种数据库和数据库中间件。
本发明方法在现有重启应用切换的基础上,保证了应用不重启就能完成数据库切换的功能。拥有切换稳定,数据丢失少和业务无感知的特点。并且,本发明在现有的druid中增加filter,在filter中检测DNS,数据库主从状态。然后对DataSource进行重启。即是,无需重启应用就能进行数据库切换,通过修改域名对应的ip就能完成数据库切换。基于域名的自动切换主从数据库:无侵入,数据丢失少。
实施例2
本发明还公开了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现前述实施例1中的数据库切换自动重连方法。
前述本发明基本例及其各进一步选择例可以自由组合以形成多个实施例,均为本发明可采用并要求保护的实施例。本发明方案中,各选择例,与其他任何基本例和选择例都可以进行任意组合。本领域技术人员可知有众多组合。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
- 一种数据库切换自动重连方法以及可读存储介质
- 数据库的切换方法、装置、设备及计算机可读存储介质