两数据库主从同步与切换方法、系统、计算机和存储介质与流程

文档序号:29122864发布日期:2022-03-04 22:53阅读:119来源:国知局
两数据库主从同步与切换方法、系统、计算机和存储介质与流程

1.本技术涉及数据处理的技术领域,特别是涉及一种两数据库主从同步与切换方法、系统、计算机和存储介质。


背景技术:

2.mongodb的设计目标是高性能、可扩展、易部署、易使用,存储数据非常方便。其主要功能特性如下:1、面向集合存储,容易存储对象类型的数据;在mongodb中数据被分组存储在集合中,集合类似rdbms中的表,一个集合中可以存储无限多的文档。2、模式自由,采用无模式结构存储;在mongodb中集合中存储的数据是无模式的文档,采用无模式存储数据是集合区别于rdbms中的表的一个重要特征。3、支持完全索引,可以在任意属性上建立索引,包含内部对象;mongodb的索引和rdbms的索引基本一样,可以在指定属性、内部对象上创建索引以提高查询的速度;除此之外,mongodb还提供创建基于地理空间的索引的能力。4、支持查询,mongodb支持丰富的查询操作,mongodb几乎支持sql中的大部分查询。5、强大的聚合工具,如count、group等,支持使用mapreduce完成复杂的聚合任务。6、使用高效的二进制数据存储,包括大型对象(如视频),使用二进制格式存储,可以保存任何类型的数据对象。7、支持perl、php、java、c#、javascript、ruby、c和c++语言的驱动程序,mongodb提供了当前所有主流开发语言的数据库驱动包,开发人员使用任何一种主流开发语言都可以轻松编程,实现访问mongodb数据库。8、文件存储格式为bson(json的一种扩展),bson是对二进制格式的json的简称,bson支持文档和数组的嵌套。9、可以通过网络访问,可以通过网络远程访问mongodb数据库。
3.目前,mongodb集群的集群搭建方式主要有三种:主从模式、副本集群模式、sharding模式,三种模式各有优劣,适用于不同的场合;属副本集群模式应用最为广泛,主从模式现在用的较少,sharding模式最为完备,但配置维护较为复杂。然而在mongodb-4.0版本之后已不再支持主从模式,而是副本集群模式,要求至少部署三个及其以上的数据库实例;当副本集群模式中有一半数据库实例出现问题时,则整个集群变为只读无法写入。所以用户要实现高可用的功能只能通过增加数据库实例实现,这势必导致增加用户使用成本和维护难度。
4.因此,针对现有相关技术中的mongodb-4.0版本之后已不支持主从同步,仅支持组建mongodb集群内三个及其以上mongodb数据库实例之间数据同步条件下,而无法实现两个数据库之间的主从数据同步,且无法手动切换同步角色的技术问题,尚未提出有效的解决方案。


技术实现要素:

5.本技术实施例提供了一种两数据库主从同步与切换方法、系统、计算机和存储介质,以至少解决现有相关技术中的mongodb-4.0版本之后已不支持主从同步,仅支持组建mongodb集群内三个及其以上mongodb数据库实例之间数据同步条件下,而无法实现两个数
据库之间的主从数据同步,且无法手动切换同步角色的技术问题。
6.第一方面,本技术实施例提供了一种两数据库主从同步与切换方法,包括:
7.根据配置的数据库角色启动主数据库以及备数据库上的同步程序;
8.获取所述主数据库写入数据的指令,以使所述备数据库上的同步程序从变更流中收到变动内容,同步到所述备数据库;
9.在所述备数据库上的同步程序同步解析数据时,对所述解析数据进行配置;
10.获取所述两数据库的角色切换指令,以使所述两数据库上的同步程序根据切换后的角色状态重新工作。
11.在其中一些实施例中,所述根据配置的数据库角色启动主数据库以及备数据库上的同步程序的步骤包括:
12.获取给予所述两数据库上分别安装同步程序的指令;
13.配置所述两数据库的主数据库以及备数据库的角色,以使所述主数据库写入,所述备数据库只读;
14.控制所述主数据库上的同步程序阻塞休眠,以及所述备数据库上的同步程序开始同步与开始监听所述主数据库的变更流。
15.在其中一些实施例中,所述获取所述主数据库写入数据的指令,以使所述备数据库上的同步程序从变更流中收到变动内容,同步到所述备数据库的步骤之后,还包括:
16.若所述备数据库上的同步程序无法增量同步,则停止同步并发送用户需要重新全量同步的提示指令;
17.获取全量同步的强制操作指令,控制所述备数据库上的同步程序将全量同步所述主数据库所有数据,保证同步正常进行。
18.在其中一些实施例中,所述获取所述主数据库写入数据的指令,以使所述备数据库上的同步程序从变更流中收到变动内容,同步到所述备数据库的步骤之后,还包括:
19.若所述备数据库上的同步程序发现所述主数据库出现问题,则自动切换当下两数据库的角色。
20.在其中一些实施例中,所述在所述备数据库上的同步程序同步解析数据时,对所述解析数据进行配置,其中,所述配置包括对所述解析数据进行下述中的至少一种操作:过滤、转化。
21.第二方面,本技术实施例提供了一种两数据库主从同步与切换系统,包括:
22.启动模块:用于根据配置的数据库角色启动主数据库以及备数据库上的同步程序;
23.同步模块:用于获取所述主数据库写入数据的指令,以使所述备数据库上的同步程序从变更流中收到变动内容,同步到所述备数据库;
24.处理模块:用于在所述备数据库上的同步程序同步解析数据时,对所述解析数据进行配置;
25.第一切换模块:用于获取所述两数据库的角色切换指令,以使所述两数据库上的同步程序根据切换后的角色状态重新工作。
26.在其中一些实施例中,所述启动模块包括:
27.获取单元:用于获取给予所述两数据库上分别安装同步程序的指令;
28.配置单元:用于配置所述两数据库的主数据库以及备数据库的角色,以使所述主数据库写入,所述备数据库只读;
29.控制单元:控制所述主数据库上的同步程序阻塞休眠,以及所述备数据库上的同步程序开始同步与开始监听所述主数据库的变更流。
30.在其中一些实施例中,所述系统还包括:
31.停止模块:用于若所述备数据库上的同步程序无法增量同步,则停止同步并发送用户需要重新全量同步的提示指令;
32.强制模块:用于获取全量同步的强制操作指令,控制所述备数据库上的同步程序将全量同步所述主数据库所有数据,保证同步正常进行。
33.在其中一些实施例中,所述系统还包括:
34.第二切换模块:用于若所述备数据库上的同步程序发现所述主数据库出现问题,则自动切换当下两数据库的角色。
35.第三方面,本技术实施例提供了一种计算机,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面所述的两数据库主从同步与切换方法。
36.第四方面,本技术实施例提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述第一方面所述的两数据库主从同步与切换方法。
37.相比于现有技术,本技术实施例提供的两数据库主从同步与切换方法、系统、计算机和存储介质,利用mongodb-4.0版本中数据库原生特性的变更流来实现主数据库及备数据库之间的数据同步,并实现可以手动控制角色的功能;解决现有相关技术中的mongodb-4.0版本之后已不支持主从同步,仅支持组建mongodb集群内三个及其以上mongodb数据库实例之间数据同步条件下,而无法实现两个数据库之间的主从数据同步,且无法手动切换同步角色的技术问题;能够保障mongodb-4.0版本中数据库的高可用,以及减低运维成本。
38.本技术的一个或多个实施例的细节在以下附图和描述中提出,以使本技术的其他特征、目的和优点更加简明易懂。
附图说明
39.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
40.图1是本发明的两数据库主从同步与切换原理图;
41.图2是本发明实施例一提供的两数据库主从同步与切换方法的流程图;
42.图3是本发明实施例一提供的步骤s110的具体流程图;
43.图4是本发明实施例二提供的与实施例一方法对应的两数据库主从同步与切换系统结构框图;
44.图5是本发明实施例三提供的两数据库主从同步与切换方法的流程图;
45.图6是本发明实施例四提供的与实施例三方法对应的两数据库主从同步与切换系统结构框图;
46.图7是本发明实施例五提供的两数据库主从同步与切换方法的流程图;
47.图8是本发明实施例六提供的与实施例五方法对应的两数据库主从同步与切换系
统结构框图;
48.图9是本发明实施例七提供的两数据库主从同步与切换方法的流程图;
49.图10是本发明实施例八提供的计算机的硬件结构示意图。
50.附图标记说明:
51.10-启动模块、11-获取单元、12-配置单元、13-控制单元;
52.20-同步模块;
53.30-处理模块;
54.40-第一切换模块;
55.50-停止模块;
56.60-强制模块;
57.70-第二切换模块;
58.80-总线、81-处理器、82-存储器、83-通信接口。
具体实施方式
59.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。基于本技术提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。
60.显而易见地,下面描述中的附图仅仅是本技术的一些示例或实施例,对于本领域的普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图将本技术应用于其他类似情景。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本技术公开的内容相关的本领域的普通技术人员而言,在本技术揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本技术公开的内容不充分。
61.在本技术中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本技术的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本技术所描述的实施例在不冲突的情况下,可以与其它实施例相结合。
62.除非另作定义,本技术所涉及的技术术语或者科学术语应当为本技术所属技术领域内具有一般技能的人士所理解的通常意义。本技术所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本技术所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本技术所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本技术所涉及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对
象是一种“或”的关系。本技术所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。
63.本技术中描述的各种技术可用于各种无线通信系统,例如2g、3g、4g、5g通信系统以及下一代通信系统,又例如全球移动通信系统(global system for mobile communications,简称为gsm),码分多址(code division multiple access,简称为cdma)系统,时分多址(time division multiple access,简称为tdma)系统,宽带码分多址(wideband code division multiple access wireless,简称为wcdma),频分多址(frequency division multiple addressing,简称为fdma)系统,正交频分多址(orthogonal frequency-division multiple access,简称为ofdma)系统,单载波fdma(sc-fdma)系统,通用分组无线业务(general packet radio service,简称为gprs)系统,长期演进(long term evolution,简称为lte)系统,5g新空口(new radio,简称为nr)系统以及其他此类通信系统。
64.本实施例提供的两数据库主从同步与切换系统可集成在基站、射频拉远单元(radio remote unit,简称为rru)或者其他任意需要进行射频收发的网元设备中。本文中的基站可以是接入网中在空中接口上通过一个或多个扇区与无线终端通信的设备。基站可用于将收到的空中帧与网际协议(internet protocol,简称为ip)分组进行相互转换存储,作为无线终端与接入网的其余部分之间的路由器,其中接入网的其余部分可包括ip网络。基站还可协调对空中接口的属性管理。例如,基站可以是gsm或cdma中的基站(base transceiver station,简称为bts),也可以是wcdma中的基站(node b),还可以是lte中的演进型基站(evolutional node b,简称为enb或e-node b),还可以是5g nr中的(generation node b,简称为gnb),本技术并不限定。
65.如图1所示的本发明的两数据库主从同步与切换原理图,本发明利用mongodb数据库原生的特性变更流(change streams)实现mongodb数据库主从同步,解决两个mongodb数据库或两个mongodb数据库集群之间的数据同步问题;此外,在主数据库出现问题时自动切换角色,备库升级为主库,保证高可用性。
66.实施例一
67.本实施例提供了一种两数据库主从同步与切换方法。图2是根据本技术实施例的两数据库主从同步与切换方法的流程图,如图2所示,该流程包括如下步骤:
68.步骤s110,根据配置的数据库角色启动主数据库以及备数据库上的同步程序;
69.本技术实施例中,本步骤中所涉及的数据库是指mongodb-4.0版本之后的数据库存在的所述两数据库;mongodb是一个基于分布式文件存储的数据库。由c++语言编写。旨在为web应用提供可扩展的高性能数据存储解决方案。mongodb是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。mongodb最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
70.进一步地,如图3所示,所述步骤s110的具体步骤包括:
71.步骤s111,获取给予所述两数据库上分别安装同步程序的指令;
72.步骤s112,配置所述两数据库的主数据库以及备数据库的角色,以使所述主数据
库写入,所述备数据库只读;
73.步骤s113,控制所述主数据库上的同步程序阻塞休眠,以及所述备数据库上的同步程序开始同步与开始监听所述主数据库的变更流。
74.本技术实施例中,所涉及的变更流(change streams),是mongodb向应用发布数据变更的一种方式。即当数据库中有任何数据发生变化,应用端都可以得到通知。我们可以将其理解为在应用中执行的触发器。至于应用想得到什么数据,以什么形式得到数据,则可以通过聚合框架加以过滤和转换。
75.步骤s120,获取所述主数据库写入数据的指令,以使所述备数据库上的同步程序从变更流中收到变动内容,同步到所述备数据库。
76.本技术实施例中,当所述主数据库通过其同步程序写入数据,使得所述备数据库上的同步程序从所述主数据库的变更流中收到相关数据发生变化,并且该相关数据变化通过所述备数据库上的同步程序同步到所述备数据库,保障了数据库的高可用,减低了运维成本。
77.步骤s130,在所述备数据库上的同步程序同步解析数据时,对所述解析数据进行配置,其中,所述配置包括对所述解析数据进行过滤。
78.本技术实施例中,所述配置指过滤处理,所述过滤可以包括在可配置ip表中的ip只存在主数据库中,备数据库不同步的情况下,所述备数据库上的同步程序可以过滤可配置ip表中的数据。
79.步骤s140,获取所述两数据库的角色切换指令,以使所述两数据库上的同步程序根据切换后的角色状态重新工作。
80.本技术实施例中,实践中通过手动或自动的切换主备数据库的角色,改变数据同步的方向,以使当所述备数据库上的同步程序发现所述主数据库出现问题后将切换自动切换角色为主库。
81.通过上述步骤,mongodb数据库中的两数据库在配置主数据库以及备数据库的角色后,使得所述主数据库上的同步程序阻塞休眠,及所述备数据库上的同步程序开始同步及开始监听所述主数据库的变更流;通过监听所述主数据库的变更流同步数据到所述备数据库,保证数据一致性,并通过手动或自动的切换主备数据库的角色,改变数据同步的方向。且在所述备数据库上的同步程序同步解析数据时,配置对所述解析数据进行过滤,以适应对应角色下的数据场景。解决现有相关技术中的mongodb-4.0版本之后已不支持主从同步,仅支持组建mongodb集群内三个及其以上mongodb数据库实例之间数据同步条件下,而无法实现两个数据库之间的主从数据同步,且无法手动切换同步角色的技术问题;能够保障mongodb-4.0版本中数据库的高可用,以及减低运维成本。
82.实施例二
83.本实施例提供了与实施例一所述方法相对应的系统的结构框图。图4是根据本技术实施例的两数据库主从同步与切换系统的结构框图,如图4所示,该系统包括:
84.启动模块10:用于根据配置的数据库角色启动主数据库以及备数据库上的同步程序;
85.同步模块20:用于获取所述主数据库写入数据的指令,以使所述备数据库上的同步程序从变更流中收到变动内容,同步到所述备数据库;
86.处理模块30:用于在所述备数据库上的同步程序同步解析数据时,对所述解析数据进行配置;
87.第一切换模块40:用于获取所述两数据库的角色切换指令,以使所述两数据库上的同步程序根据切换后的角色状态重新工作。
88.进一步地,所述启动模块10包括:
89.获取单元11:用于获取给予所述两数据库上分别安装同步程序的指令;
90.配置单元12:用于配置所述两数据库的主数据库以及备数据库的角色,以使所述主数据库写入,所述备数据库只读;
91.控制单元13:控制所述主数据库上的同步程序阻塞休眠,以及所述备数据库上的同步程序开始同步与开始监听所述主数据库的变更流。
92.通过上述步骤,mongodb数据库中的两数据库通过启动模块10配置主数据库以及备数据库的角色后,使得所述主数据库上的同步程序阻塞休眠,及所述备数据库上的同步程序开始同步及开始监听所述主数据库的变更流;通过同步模块20监听所述主数据库的变更流同步数据到所述备数据库,保证数据一致性,并通过第一切换模块40手动或自动的切换主备数据库的角色,改变数据同步的方向。且通过处理模块30在所述备数据库上的同步程序同步解析数据时,配置对所述解析数据进行过滤,以适应对应角色下的数据场景。解决现有相关技术中的mongodb-4.0版本之后已不支持主从同步,仅支持组建mongodb集群内三个及其以上mongodb数据库实例之间数据同步条件下,而无法实现两个数据库之间的主从数据同步,且无法手动切换同步角色的技术问题;能够保障mongodb-4.0版本中数据库的高可用,以及减低运维成本。
93.需要说明的是,上述各个模块可以是功能模块也可以是程序模块,既可以通过软件来实现,也可以通过硬件来实现。对于通过硬件来实现的模块而言,上述各个模块可以位于同一处理器中;或者上述各个模块还可以按照任意组合的形式分别位于不同的处理器中。
94.实施例三
95.本实施例提供了一种两数据库主从同步与切换方法。图5是根据本技术实施例的两数据库主从同步与切换方法的流程图,如图5所示,该流程包括如下步骤:
96.步骤s210,根据配置的数据库角色启动主数据库以及备数据库上的同步程序;
97.步骤s220,获取所述主数据库写入数据的指令,以使所述备数据库上的同步程序从变更流中收到变动内容,同步到所述备数据库;
98.步骤s230,若所述备数据库上的同步程序无法增量同步,则停止同步并发送用户需要重新全量同步的提示指令;
99.步骤s240,获取全量同步的强制操作指令,控制所述备数据库上的同步程序将全量同步所述主数据库所有数据,保证同步正常进行。
100.实施例四
101.本实施例提供了与实施例三所述方法相对应的系统的结构框图。图6是根据本技术实施例的用户私有网络内网互通系统的结构框图,如图6所示,该系统包括:
102.启动模块10:用于根据配置的数据库角色启动主数据库以及备数据库上的同步程序。
103.需要说明的是,本实施例的所述启动模块10中的各功能单元与实施例二中的启动模块相同,故此就不一一赘述。
104.同步模块20:用于获取所述主数据库写入数据的指令,以使所述备数据库上的同步程序从变更流中收到变动内容,同步到所述备数据库。
105.停止模块50:用于若所述备数据库上的同步程序无法增量同步,则停止同步并发送用户需要重新全量同步的提示指令。
106.强制模块60:用于获取全量同步的强制操作指令,控制所述备数据库上的同步程序将全量同步所述主数据库所有数据,保证同步正常进行。
107.实施例五
108.本实施例提供了一种两数据库主从同步与切换方法。图7是根据本技术实施例的两数据库主从同步与切换方法的流程图,如图7所示,该流程包括如下步骤:
109.步骤s310:根据配置的数据库角色启动主数据库以及备数据库上的同步程序;
110.步骤s320:获取所述主数据库写入数据的指令,以使所述备数据库上的同步程序从变更流中收到变动内容,同步到所述备数据库;
111.步骤s330:若所述备数据库上的同步程序发现所述主数据库出现问题,则自动切换当下两数据库的角色。
112.实施例六
113.本实施例提供了与实施例五所述方法相对应的系统的结构框图。图8是根据本技术实施例的两数据库主从同步与切换系统的结构框图,如图8所示,该系统包括:
114.启动模块10:用于根据配置的数据库角色启动主数据库以及备数据库上的同步程序;
115.需要说明的是,本实施例中的所述启动模块10中的各功能单元与实施例二中的启动模块相同,故此就不一一赘述。
116.同步模块20:用于获取所述主数据库写入数据的指令,以使所述备数据库上的同步程序从变更流中收到变动内容,同步到所述备数据库;
117.第二切换模块70:用于若所述备数据库上的同步程序发现所述主数据库出现问题,则自动切换当下两数据库的角色。
118.实施例七
119.本实施例与实施例一唯一不同之处在于,如图9所示,实施例一中的步骤s130被本实施例的步骤s430替代,本实施例的步骤s430具体为:在所述备数据库上的同步程序同步解析数据时,对所述解析数据进行配置,其中,所述配置包括对所述解析数据进行转化。
120.本技术实施例中,所述转化可以包括在可配置状态表中的状态在主库为true,备库为false的情况下,同步程序过滤数据时将转化指定状态表数据。
121.实施例八
122.结合图2、5、7、9所描述的本发明的两数据库主从同步与切换方法可以由计算机来实现。图10为根据本技术实施例的计算机的硬件结构示意图。
123.计算机设备可以包括处理器81以及存储有计算机程序指令的存储器82。
124.具体地,上述处理器81可以包括中央处理器(cpu),或者特定集成电路(application specific integrated circuit,简称为asic),或者可以被配置成实施本申
standards association local bus,简称为vlb)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线80可包括一个或多个总线。尽管本技术实施例描述和示出了特定的总线,但本技术考虑任何合适的总线或互连。
131.该计算机可以基于获取到持续集成自动化测试数据趋势分析系统,执行本技术实施例一、三、五、七的两数据库主从同步与切换方法,从而实现结合图1中描述的两数据库主从同步与切换原理图。
132.另外,结合上述实施例一、三、五、七中的两数据库主从同步与切换方法,本技术实施例可提供一种存储介质来实现。该存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现上述实施例一、三、五、七的两数据库主从同步与切换方法。
133.以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
134.以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1