一种数据库高可用主从切换方法、系统、存储介质及设备与流程
未命名
07-14
阅读:123
评论:0
1.本发明涉及数据库技术领域,尤其涉及一种数据库高可用主从切换方法、系统、存储介质及设备。
背景技术:
2.随着业务体量的壮大,数据库服务越来越多,单个dba维护的mysql数量也随之增长,数据库维护的次数也随之增加。而在mysql的运维过程中,始终离不开主从数据库的切换,然而如何保障数据库在切换过程中主库与从库数据的一致性是至关重要的。
3.目前最优的数据库切换技术方案是通过dba人为手动停止原主库的写入,批量停止业务连接,人为确认无连接后将原主库域名或vip手动执行命令以切换到新主库中,切换后手动执行命令将原主库设置为新主库的从库并开启新主库的写入配置。为了达到主从切换后数据一致的目标,在执行过程中需要人为制定一系列严格的检测机制与规范,而这大大依赖于操作人员的能力、操作流程的规范性以及操作人对流程的熟悉及把控程度,受主观因素影响大,且维护成本高、运维效率低下,不利于数据库的实际应用。
技术实现要素:
4.基于此,有必要针对上述问题,提出了一种数据库高可用主从切换方法、系统、存储介质及设备。
5.本发明公开了一种数据库高可用主从切换方法,所述方法包括:
6.获取数据库主从切换请求;
7.识别当前时刻的原主数据库和原从数据库,并根据数据同步延迟,从原从数据库中选取新主数据库;
8.停止所述原主数据库的业务功能,并卸载虚拟ip;
9.将所述原主数据库的数据同步至所述新主数据库,并将所述原主数据库设置为所述新主数据库的从数据库;
10.在所述新主数据库上重新挂载所述虚拟ip。
11.进一步的,根据数据同步延迟,从原从数据库中选取新主数据库,具体包括:
12.比较所有原从数据库与原主数据库的数据同步延迟,选取最小数据同步延迟对应的原从数据库作为新主数据库。
13.进一步的,在停止所述原主数据库的业务功能步骤之前,还包括:
14.判断所述原主数据库与所有原从数据库的数据同步延迟是否均低于预设阈值,以及所述原主数据库的gtid是否包含所有原从数据库的gtid,若是,则继续执行停止所述原主数据库的业务功能步骤。
15.进一步的,停止所述原主数据库的业务功能,具体包括:
16.设置所述原主数据库为只读状态,停止写入功能;
17.查杀所述原主数据库中已存在的业务连接。
18.进一步的,执行masterha_master_switch命令,将所述原主数据库的数据同步至所述新主数据库,并将所述原主数据库设置为所述新主数据库的从数据库。
19.进一步的,通过ifconfig命令,实现虚拟ip的卸载和重新挂载。
20.进一步的,所述方法,还包括:
21.采集所述原主数据库和新主数据库的gtid和binlog日志位点,并将产生的日志实时采集至消息队列中间件kafka中,再实时写入至分布式查询引擎es中。
22.另一方面,本发明还公开了一种数据库高可用主从切换系统,所述系统包括:
23.请求获取模块,用于获取数据库主从切换请求;
24.新主数据库选取模块,用于识别当前时刻的原主数据库和原从数据库,并根据数据同步延迟,从原从数据库中选取新主数据库;
25.原主数据库处理模块,用于停止所述原主数据库的业务功能,并卸载虚拟ip;
26.数据同步及切换模块,用于将所述原主数据库的数据同步至所述新主数据库,并将所述原主数据库设置为所述新主数据库的从数据库;
27.虚拟ip挂载模块,用于在所述新主数据库上重新挂载所述虚拟ip。
28.另一方面,本发明还公开了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行以下步骤:
29.获取数据库主从切换请求;
30.识别当前时刻的原主数据库和原从数据库,并根据数据同步延迟,从原从数据库中选取新主数据库;
31.停止所述原主数据库的业务功能,并卸载虚拟ip;
32.将所述原主数据库的数据同步至所述新主数据库,并将所述原主数据库设置为所述新主数据库的从数据库;
33.在所述新主数据库上重新挂载所述虚拟ip。
34.另一方面,本发明还公开了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行以下步骤:
35.获取数据库主从切换请求;
36.识别当前时刻的原主数据库和原从数据库,并根据数据同步延迟,从原从数据库中选取新主数据库;
37.停止所述原主数据库的业务功能,并卸载虚拟ip;
38.将所述原主数据库的数据同步至所述新主数据库,并将所述原主数据库设置为所述新主数据库的从数据库;
39.在所述新主数据库上重新挂载所述虚拟ip。
40.采用本发明,具有如下有益效果:
41.本发明根据数据同步延迟,自动在原从数据库中选取合理的用于切换的新主数据库,再自动进行原主数据库和新主数据库之间的数据同步、切换及虚拟ip的卸挂载等工作,实现全自动、安全的数据库主从切换,有利于避免数据库切换受人为主观因素影响,且在保障数据一致性的同时有效降低维护成本,提升运维工作效率,使得dba能够将更多的精力置于其他数据库业务优化上,促进数据库的广泛应用。
附图说明
42.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
43.其中:
44.图1为一个实施例中数据库高可用主从切换方法的流程图;
45.图2为一个实施例中数据库高可用主从切换系统的结构框图;
46.图3为一个实施例中计算机设备的结构框图。
47.附图标记说明:请求获取模块100,新主数据库选取模块200,原主数据库处理模块300,数据同步及切换模块400,虚拟ip挂载模块500。
具体实施方式
48.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
49.如图1所示,在一个实施例中,提供了一种数据库高可用主从切换方法,该方法具体包括如下步骤:
50.s100、获取数据库主从切换请求;
51.s200、识别当前时刻的原主数据库和原从数据库,并根据数据同步延迟,从原从数据库中选取新主数据库;
52.s300、停止原主数据库的业务功能,并卸载虚拟ip;
53.s400、将原主数据库的数据同步至新主数据库,并将原主数据库设置为新主数据库的从数据库;
54.s500、在新主数据库上重新挂载虚拟ip。
55.本实施例中,可以通过python或java等程序语言进行代码编写,构建自动化工具,根据数据同步延迟,自动在从数据库中选取合理的用于切换的新主数据库,再自动进行原主数据库和新主数据库之间的数据同步、切换及虚拟ip的卸挂载等工作,实现全自动、安全的数据库主从切换,有利于避免数据库切换受人为主观因素影响,且在保障数据一致性的同时有效降低维护成本,提升运维工作效率,使得dba能够将更多的精力置于其他数据库业务优化上,促进数据库的广泛应用。
56.进一步的,一实施例中,步骤s200中,根据数据同步延迟,从原从数据库中选取新主数据库,具体包括:
57.比较所有原从数据库与原主数据库的数据同步延迟,选取最小数据同步延迟对应的原从数据库作为新主数据库。
58.本实施例中,为了保障数据的一致性,尽量避免主从切换后的数据丢失,则需要在原从数据库中选取与原主数据库数据同步状态最相近的一个数据库进行切换,即选取与原主数据库数据同步延迟最小的从数据库作为新主数据库,才能尽量保障切换后主从数据库
之间的同步状态更改变化最小,进而最小化数据丢失,最大化保障数据的一致性,其中,最优的选择为选取与原主数据库没有延迟的从数据库作为新主数据库。
59.进一步的,一实施例中,在步骤s300之前,还包括:
60.判断原主数据库与所有原从数据库的数据同步延迟是否均低于预设阈值,以及原主数据库的gtid是否包含所有原从数据库的gtid,若是,则继续执行停止原主数据库的业务功能步骤。
61.主从数据库的数据同步延迟过大,则可能导致主从数据库的数据写入与读取存在较大时间差,进而导致数据库之间数据不一致的情况发生。同时,gtid是数据库binlog日志中的全局事务唯一标识,正常情况下,主数据库应当包含所有从数据库的gtid事务,而当原从数据库的gtid不被包含于原主数据库的gtid中时,则代表主从数据库存在数据丢失的情况,进而在后续进行主从切换时,则无法进行完整的数据同步复制,无法保障数据的一致性与完整性。故本实施例中,在进行主从切换前,还进行了判断当前时刻的原主从数据库的数据同步延迟以及gtid的步骤,可以有效防止因数据延迟问题或gtid问题导致切换后新主数据库数据丢失或数据不一致,保障数据的一致性与完整性。
62.进一步的,一实施例中,步骤s300中,停止所述原主数据库的业务功能,具体包括:
63.设置原主数据库为只读状态,停止写入功能;
64.查杀原主数据库中已存在的业务连接。
65.本实施例中,在进行主从切换前,需要停止原主数据库所有业务功能,使其无法进行数据写入及其他业务处理功能,具体的,设置原主数据库为只读状态,停止写入功能,可以有效防止出现多个主数据库进行数据处理,出现脑裂情况,同时可以通过sql批量查杀原主数据库中已存在的业务连接,可以保证切换后的数据一致性。
66.进一步的,一实施例中,步骤s400,具体包括:
67.执行masterha_master_switch命令,将原主数据库的数据同步至新主数据库,并将原主数据库设置为新主数据库的从数据库。
68.具体的,本实施例中,可以使用mha的masterha_master_switch命令,实现数据同步及切换,其中,mha为基于perl语言二次开发实现的故障转移工具。
69.进一步的,一实施例中,步骤s300、s500中,通过ifconfig命令,实现虚拟ip的卸载和重新挂载。
70.具体的,本实施例中,可以使用基于shell语言的ifconfig命令实现对vip的挂载与卸载。
71.进一步的,一实施例中,数据库高可用主从切换方法,还包括:
72.采集原主数据库和新主数据库的gtid和binlog日志位点,并将产生的日志实时采集至消息队列中间件kafka中,再实时写入至分布式查询引擎es中。
73.本实施例中,在进行主从切换的同时,还可以实时获取原主数据库和新主数据库的gtid和binlog日志位点,并将产生的日志实时采集至消息队列中间件kafka中,再实时写入至分布式查询引擎es中,使得整个过程有迹可循,所有的操作日志都完成存档且可实时地、快速地进行日志查看,有助于后期复盘及整理。
74.此外,具体的,本实施例中,在进行完主从切换之后,还可以设置多个检测步骤,用于检测主从切换是否成功、虚拟ip是否挂载成功以及是否可以通过域名或虚拟ip进行连接
验证,当均检测成功时,可以发出工作通知告知切换成功,当检测失败,也可以发出工作通知进行失败告警并提示dba手动进行维护,可以选择通过短信、钉钉、电话等通知软件或脚本实现告警及通知功能。
75.另一方面,如图2所示,在一个实施例中,还提供了一种数据库高可用主从切换系统,该系统包括:
76.请求获取模块100,用于获取数据库主从切换请求;
77.新主数据库选取模块200,用于识别当前时刻的原主数据库和原从数据库,并根据数据同步延迟,从原从数据库中选取新主数据库;
78.原主数据库处理模块300,用于停止原主数据库的业务功能,并卸载虚拟ip;
79.数据同步及切换模块400,用于将原主数据库的数据同步至新主数据库,并将原主数据库设置为新主数据库的从数据库;
80.虚拟ip挂载模块500,用于在新主数据库上重新挂载所述虚拟ip。
81.图3示出了一个实施例中计算机设备的内部结构图。该计算机设备具体可以是终端,也可以是服务器。如图3所示,该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现数据库高可用主从切换方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行数据库高可用主从切换方法。本领域技术人员可以理解,图3中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
82.在一个实施例中,提出了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行以下步骤:
83.获取数据库主从切换请求;
84.识别当前时刻的原主数据库和原从数据库,并根据数据同步延迟,从原从数据库中选取新主数据库;
85.停止原主数据库的业务功能,并卸载虚拟ip;
86.将原主数据库的数据同步至新主数据库,并将原主数据库设置为新主数据库的从数据库;
87.在新主数据库上重新挂载虚拟ip。
88.在一个实施例中,提出了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行以下步骤:
89.获取数据库主从切换请求;
90.识别当前时刻的原主数据库和原从数据库,并根据数据同步延迟,从原从数据库中选取新主数据库;
91.停止原主数据库的业务功能,并卸载虚拟ip;
92.将原主数据库的数据同步至新主数据库,并将原主数据库设置为新主数据库的从数据库;
93.在新主数据库上重新挂载虚拟ip。
94.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
95.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
96.以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本技术专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。
技术特征:
1.一种数据库高可用主从切换方法,其特征在于,所述方法包括:获取数据库主从切换请求;识别当前时刻的原主数据库和原从数据库,并根据数据同步延迟,从原从数据库中选取新主数据库;停止所述原主数据库的业务功能,并卸载虚拟ip;将所述原主数据库的数据同步至所述新主数据库,并将所述原主数据库设置为所述新主数据库的从数据库;在所述新主数据库上重新挂载所述虚拟ip。2.根据权利要求1所述的一种数据库高可用主从切换方法,其特征在于,根据数据同步延迟,从原从数据库中选取新主数据库,具体包括:比较所有原从数据库与原主数据库的数据同步延迟,选取最小数据同步延迟对应的原从数据库作为新主数据库。3.根据权利要求1所述的一种数据库高可用主从切换方法,其特征在于,在停止所述原主数据库的业务功能步骤之前,还包括:判断所述原主数据库与所有原从数据库的数据同步延迟是否均低于预设阈值,以及所述原主数据库的gtid是否包含所有原从数据库的gtid,若是,则继续执行停止所述原主数据库的业务功能步骤。4.根据权利要求1所述的一种数据库高可用主从切换方法,其特征在于,停止所述原主数据库的业务功能,具体包括:设置所述原主数据库为只读状态,停止写入功能;查杀所述原主数据库中已存在的业务连接。5.根据权利要求1所述的一种数据库高可用主从切换方法,其特征在于,执行masterha_master_switch命令,将所述原主数据库的数据同步至所述新主数据库,并将所述原主数据库设置为所述新主数据库的从数据库。6.根据权利要求1所述的一种数据库高可用主从切换方法,其特征在于,通过ifconfig命令,实现虚拟ip的卸载和重新挂载。7.根据权利要求1所述的一种数据库高可用主从切换方法,其特征在于,所述方法,还包括:采集所述原主数据库和新主数据库的gtid和binlog日志位点,并将产生的日志实时采集至消息队列中间件kafka中,再实时写入至分布式查询引擎es中。8.一种数据库高可用主从切换系统,其特征在于,所述系统包括:请求获取模块,用于获取数据库主从切换请求;新主数据库选取模块,用于识别当前时刻的原主数据库和原从数据库,并根据数据同步延迟,从原从数据库中选取新主数据库;原主数据库处理模块,用于停止所述原主数据库的业务功能,并卸载虚拟ip;数据同步及切换模块,用于将所述原主数据库的数据同步至所述新主数据库,并将所述原主数据库设置为所述新主数据库的从数据库;虚拟ip挂载模块,用于在所述新主数据库上重新挂载所述虚拟ip。9.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理
器执行时,使得所述处理器执行如权利要求1至7中任一项所述方法的步骤。10.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1至7中任一项所述方法的步骤。
技术总结
本发明公开了一种数据库高可用主从切换方法、系统、存储介质及设备,所述方法包括:获取数据库主从切换请求;识别当前时刻的原主数据库和原从数据库,并根据数据同步延迟,从所有原从数据库中选取新主数据库;停止所述原主数据库的业务功能,并卸载虚拟IP;将所述原主数据库的数据同步至所述新主数据库,并将所述原主数据库设置为所述新主数据库的从数据库;在所述新主数据库上重新挂载所述虚拟IP。本发明实现全自动、安全的数据库主从切换,有利于避免数据库切换受人为主观因素影响,在保障数据一致性的同时有效降低维护成本,提升运维工作效率。作效率。作效率。
技术研发人员:谢麦善
受保护的技术使用者:上海中通吉网络技术有限公司
技术研发日:2023.04.03
技术公布日:2023/7/13
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
上一篇:一种灵活高效的吸附塔的制作方法 下一篇:一种文档相似度计算方法、设备及介质与流程
