CN105227657A - 一种数据同步的方法和装置 - Google Patents
一种数据同步的方法和装置 Download PDFInfo
- Publication number
- CN105227657A CN105227657A CN201510632297.8A CN201510632297A CN105227657A CN 105227657 A CN105227657 A CN 105227657A CN 201510632297 A CN201510632297 A CN 201510632297A CN 105227657 A CN105227657 A CN 105227657A
- Authority
- CN
- China
- Prior art keywords
- data
- cluster
- address bus
- node
- operation log
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种数据同步的方法和装置,不仅支持多个写入源之间相互同步;而且实现了操作日志持久化;并且能够将数据同步到持久化的存储结构上,增加数据同步的可靠性。本发明的数据同步的方法包括:数据总线接收与之相连的集群主节点的操作日志;数据总线从所述操作日志中获取所述触发数据变更的命令,然后根据所述命令分别得到与该数据总线相连的从节点和/或任意集群的主节点的第一操作指令,再将所述第一操作指令发送给该操作指令对应的与该数据总线相连的从节点和/或任意集群的主节点;所述从节点和/或任意集群的主节点运行所接收到的第一操作指令,以完成从所述集群主节点到所述从节点和/或任意集群的主节点的数据同步。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种数据同步的方法和装置。
背景技术
数据同步是构建Redis集群必须解决的问题,用于把主节点上接收到的数据同步到集群中的其它所有节点上的Redis上。
目前Redis数据同步主要依靠Redis自带的同步机制来实现。通常集群内的所有Redis节点之间互相连通,构成一个树状拓扑,在整个树状拓扑里只有一个主节点用于接收数据写入请求,另外的节点用于支持读请求。写入主节点的数据通过Redis同步协议将操作日志同步到所有其它Redis节点上,目标Redis节点执行接收到的操作日志以完成数据同步。
在目前的技术方案下,存在以下几个困难点:
1)集群部署是有拓扑形状的树状结构,运维需要去关心拓扑的变化,因而增加了运维难度;
2)同一集群只能有一个主结节接收数据写入,很难支持多个写入源之间互相同步;
3)不支持异构存储,即:Redis主节点只能把数据同步到其它Redis节点上,不能同步到其它存储结构上(例如MySQL);
4)Redis自带同步机制下,操作日志被记录在内存中,不做持久化,如果主从断开时间太长,只能做全量数据同步。
发明内容
有鉴于此,本发明提供一种数据同步的方法和装置,一方面能够支持多个写入源之间相互同步,并且避免了在集群部署过程中形成的拓扑形的树状结构,降低了运维难度;另一方面实现了操作日志的持久化,在一定程度上减少了做全量数据同步的次数;再一方面本发明的技术方案支持不同存储结构对数据的同步,能够将数据同步到持久化的存储结构上,增加了数据同步的可靠性。
为实现上述目的,根据本发明的一个方面,提供了一种数据同步的方法。
本发明的数据同步的方法包括:数据总线接收与之相连的集群主节点的操作日志;所述操作日志用于保存集群主节点因数据变更而生成的触发数据变更的命令;数据总线从所述操作日志中获取所述触发数据变更的命令,然后根据所述命令分别得到与该数据总线相连的从节点和/或任意集群的主节点的第一操作指令,再将所述第一操作指令发送给该操作指令对应的与该数据总线相连的从节点和/或任意集群的主节点;所述从节点和/或任意集群的主节点运行所接收到的第一操作指令,以完成从所述集群主节点到所述从节点和/或任意集群的主节点的数据同步。
可选地,所述数据总线获取与之连接的集群主节点的操作日志的步骤之后包括:数据总线根据所述操作日志分别得出对应于多个存储结构的第二操作指令,然后将所述第二操作指令发送给该操作指令所对应的与所述数据总线相连的存储结构;所述存储结构运行所述第二操作指令以实现不同存储结构对数据的同步。
可选地,所述数据总线接收与之相连的集群主节点的操作日志的步骤之后包括:数据总线将所述操作日志存入队列中;并且数据总线从所述操作日志中获取所述触发数据变更的命令的步骤包括:数据总线从所述队列的操作日志中获取所述触发数据变更的命令。
根据本发明的另一方面,提供了一种数据同步的装置。
本发明的数据同步的装置包括:模拟Redis从节点模块,用于接收之相连的集群主节点的操作日志;所述操作日志用于保存集群主节点因数据变更而生成的触发数据变更的命令;第一命令解析器,用于从所述操作日志中获取所述触发数据变更的命令,然后根据所述命令分别得到与该数据总线相连的从节点和/或任意集群的主节点的第一操作指令,最后将所述第一操作指令发送给该操作指令对应的与该数据总线相连的从节点和/或任意集群的主节点。
可选地,还包括第二命令解析器;所述第二命令解析器,用于根据所述操作日志分别得出对应于多个存储结构的第二操作指令,然后将所述第二操作指令发送给该操作指令所对应的与所述数据总线相连的存储结构。
可选地,还包括日志存储模块,用于将所述操作日志存入队列中;并且所述第一命令解析器还用于从所述日志存储模块保存的操作日志中获取所述触发数据变更的命令。
根据本发明的技术方案,一方面由于增加了数据总线,能够支持多个写入源之间相互同步,同时由于集群主节、从节点直接与数据总线相连,因而避免了在集群部署过程中形成的拓扑形的树状结构,降低了运维难度;另一方面数据总线对所获取到的操作日志进行了持久化保存,在一定程度上减少了做全量数据同步的次数;再一方面本发明的技术方案中,由于数据能够根据获取到的操作日志得到不同存储结构的操作指令,因而能够支持不同存储结构对数据的同步,在一定程度上增加了数据同步的可靠性。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的一种数据同步的装置的示意图;
图2是根据本发明实施例的一种数据同步的方法的示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1是根据本发明实施例的一种数据同步的装置的示意图。如图1所示,数据同步的装置10即为本发明实施例技术方案中所提及的数据总线,主要包括模拟Redis从节点模块11、以及第一命令解析器12;模拟Redis从节点模块11、以及第一命令解析器12都以软件的方式实现。
模拟Redis从节点模块11,用于接收之相连的集群主节点的操作日志;所述操作日志用于保存集群主节点因数据变更而生成的触发数据变更的命令;当一个集群主节点(即:RedisMaster)上面有数据更新时,RedisMaster通过主从同步协议,将产生数据变更的命令发送到数据总线的模拟Redis从节点模块上。
第一命令解析器12,用于从所述操作日志中获取所述触发数据变更的命令,然后根据所述命令分别得到与该数据总线相连的从节点和/或任意集群的主节点的第一操作指令,最后将所述第一操作指令发送给该操作指令对应的与该数据总线相连的从节点和/或任意集群的主节点。
本发明的数据同步的装置10还可包括第二命令解析器(图中未示出),用于根据所述操作日志分别得出对应于多个存储结构的第二操作指令,然后将所述第二操作指令发送给该操作指令所对应的与所述数据总线相连的存储结构。
本发明的数据同步的装置10还可包括日志存储模块(图中未示出),用于保存数据总线的模拟Redis从节点模块11所接收到的集群主节点因数据变更所产生的Redis命令日志。当数据总线中的模拟Redis从节点模块11接收到从集群主节点RedisMaster上发来的命令日志后,数据总线中的模拟Redis从节点模块11将日志保存在日志存储队列中。
图2是根据本发明实施例的一种数据同步的方法的示意图。如图2所示,该方法的执行主体为图1中的数据同步的装置10(即数据总线),主要包括如下步骤S20至S22。
步骤S20:数据总线接收与之相连的集群主节点的操作日志。在该步骤中,集群主节点、从节点、以及其他任意集群的主节点和从节点直接与数据总线连接,由于避免了现有技术中的集群部署的复杂拓扑结构,因而降低了运维难度。当数据源(例如Mysql)将数据写入集群主节点时,集群主节点因数据变更生成操作日志,然后集群主节点RedisMaster通过主从同步协议,将产生的操作日志发送到数据总线的模拟Redis从节点模块11。操作日志用于保存集群主节点因数据变更而生成的触发数据变更的命令。
在步骤S20后,数据总线将所述操作日志存入队列中。在该步骤中,各个集群主节点的操作日志存储于日志存储队列中,并且不同集群的数据存储于不同的队列。由于数据总线对操作日志做持久化存储,因而当主从节点断开时间太长,也不用再做全量数据同步,进而减少了做全量数据同步的次数,而且也在一定程度上节约了系统资源。
同时,在步骤S20后,数据总线根据所述操作日志分别得出对应于多个存储结构(例如:Mysql、以及SSDB)的操作指令,以Mysql为例,即通过第二命令解析器将获取的操作日志中的触发数据变更命令转成对应于Mysql的操作指令,然后将所得到的Mysql的操作指令发送给与数据总线相连的Mysql,最后存储结构(即Mysql)运行所接收到的操作指令,从而实现不同存储结构对数据的存储,增加了数据同步的可靠性。
步骤S21:数据总线从所述操作日志中获取所述触发数据变更的命令,然后根据所述命令分别得到与该数据总线相连的从节点和/或任意集群的主节点的第一操作指令,再将所述第一操作指令发送给该操作指令对应的与该数据总线相连的从节点和/或任意集群的主节点。在步骤S20数据总线中的模拟Redis从节点模块11接收到集群主节点的操作日志后,获取日志中的触发数据变更的命令,然后通过第一命令解析器12将该命令转换为对应于该集群从节点以及其他集群主节点的第一操作指令,再将转换后的第一操作指令发送给对应从节点和/或其他集群主节点。
步骤S22:所述从节点和/或任意集群的主节点运行所接收到的命令,以完成从所述集群主节点到所述从节点和/或任意集群的主节点的数据同步。在该步骤中,所述集群的从节点以及任意集群的主节点运行所接收到数据总线的第一命令解析器12发送的第一操作指令,实现了本集群主从节点之间的数据同步,同时还实现了在数据源不需要重写的前提下实现了从一个集群的主节点到其他集群主节点的数据同步。
根据本发明实施例的技术方案,一方面由于增加了数据总线,能够支持多个写入源之间相互同步,同时由于集群主节、从节点直接与数据总线相连,因而避免了在集群部署过程中形成的拓扑形的树状结构,降低了运维难度;另一方面数据总线对所获取到的操作日志进行了持久化保存,在一定程度上减少了做全量数据同步的次数;再一方面本发明的技术方案中,由于数据能够根据获取到的操作日志得到不同存储结构的操作指令,因而能够支持不同存储结构对数据的同步,在一定程度上增加了数据同步的可靠性。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (6)
1.一种数据同步的方法,其特征在于,包括:
数据总线接收与之相连的集群主节点的操作日志;所述操作日志用于保存集群主节点因数据变更而生成的触发数据变更的命令;
数据总线从所述操作日志中获取所述触发数据变更的命令,然后根据所述命令分别得到与该数据总线相连的从节点和/或任意集群的主节点的第一操作指令,再将所述第一操作指令发送给该操作指令对应的与该数据总线相连的从节点和/或任意集群的主节点;
所述从节点和/或任意集群的主节点运行所接收到的第一操作指令,以完成从所述集群主节点到所述从节点和/或任意集群的主节点的数据同步。
2.根据权利要求1所述的方法,其特征在于,所述数据总线获取与之连接的集群主节点的操作日志的步骤之后包括:
数据总线根据所述操作日志分别得出对应于多个存储结构的第二操作指令,然后将所述第二操作指令发送给该操作指令所对应的与所述数据总线相连的存储结构;
所述存储结构运行所述第二操作指令以实现不同存储结构对数据的同步。
3.根据权利要求1所述的方法,其特征在于,
所述数据总线接收与之相连的集群主节点的操作日志的步骤之后包括:数据总线将所述操作日志存入队列中;
并且数据总线从所述操作日志中获取所述触发数据变更的命令的步骤包括:数据总线从所述队列的操作日志中获取所述触发数据变更的命令。
4.一种数据同步的装置,其特征在于,包括:
模拟Redis从节点模块,用于接收之相连的集群主节点的操作日志;所述操作日志用于保存集群主节点因数据变更而生成的触发数据变更的命令;
第一命令解析器,用于从所述操作日志中获取所述触发数据变更的命令,然后根据所述命令分别得到与该数据总线相连的从节点和/或任意集群的主节点的第一操作指令,最后将所述第一操作指令发送给该操作指令对应的与该数据总线相连的从节点和/或任意集群的主节点。
5.根据权利要求4所述的装置,其特征在于,还包括第二命令解析器;
所述第二命令解析器,用于根据所述操作日志分别得出对应于多个存储结构的第二操作指令,然后将所述第二操作指令发送给该操作指令所对应的与所述数据总线相连的存储结构。
6.根据权利要求4所述的装置,其特征在于,还包括日志存储模块,用于将所述操作日志存入队列中;
并且所述第一命令解析器还用于从所述日志存储模块保存的操作日志中获取所述触发数据变更的命令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510632297.8A CN105227657B (zh) | 2015-09-29 | 2015-09-29 | 一种数据同步的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510632297.8A CN105227657B (zh) | 2015-09-29 | 2015-09-29 | 一种数据同步的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105227657A true CN105227657A (zh) | 2016-01-06 |
CN105227657B CN105227657B (zh) | 2018-07-06 |
Family
ID=54996327
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510632297.8A Active CN105227657B (zh) | 2015-09-29 | 2015-09-29 | 一种数据同步的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105227657B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106060138A (zh) * | 2016-06-06 | 2016-10-26 | 北京小米移动软件有限公司 | 更新数据的方法及装置 |
CN107741963A (zh) * | 2017-09-30 | 2018-02-27 | 北京奇虎科技有限公司 | 跨集群数据合并方法及装置、电子设备、计算机存储介质 |
CN108322542A (zh) * | 2018-02-12 | 2018-07-24 | 广州市贝聊信息科技有限公司 | 数据更新方法、系统、装置以及计算机可读存储介质 |
CN109657000A (zh) * | 2018-10-19 | 2019-04-19 | 北京全路通信信号研究设计院集团有限公司 | 一种轨道交通综合监控系统的实时数据同步方法及装置 |
WO2019109953A1 (zh) * | 2017-12-05 | 2019-06-13 | 华为技术有限公司 | 日志处理方法、相关设备及系统 |
CN109885617A (zh) * | 2019-01-29 | 2019-06-14 | 中国工商银行股份有限公司 | 分布式异构数据库系统的数据同步方法及装置 |
CN110865987A (zh) * | 2019-11-18 | 2020-03-06 | 杭州安恒信息技术股份有限公司 | 一种文件同步方法、装置、设备及介质 |
CN113190620A (zh) * | 2021-04-30 | 2021-07-30 | 康键信息技术(深圳)有限公司 | Redis集群之间数据的同步方法、装置、设备及存储介质 |
WO2024114105A1 (zh) * | 2022-11-30 | 2024-06-06 | 华为云计算技术有限公司 | 一种数据库的数据更新方法、系统及计算设备集群 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060182050A1 (en) * | 2005-01-28 | 2006-08-17 | Hewlett-Packard Development Company, L.P. | Storage replication system with data tracking |
CN102025527B (zh) * | 2009-09-17 | 2014-03-19 | 中兴通讯股份有限公司 | 一种追溯操作流程信息的方法及网管系统 |
CN102880529B (zh) * | 2012-09-13 | 2015-04-15 | 新浪网技术(中国)有限公司 | 内存数据备份方法及内存数据备份系统 |
CN103220334B (zh) * | 2013-03-20 | 2015-10-14 | 深圳市理邦精密仪器股份有限公司 | 一种分布式中央监护系统及其方法 |
-
2015
- 2015-09-29 CN CN201510632297.8A patent/CN105227657B/zh active Active
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106060138A (zh) * | 2016-06-06 | 2016-10-26 | 北京小米移动软件有限公司 | 更新数据的方法及装置 |
CN107741963A (zh) * | 2017-09-30 | 2018-02-27 | 北京奇虎科技有限公司 | 跨集群数据合并方法及装置、电子设备、计算机存储介质 |
WO2019109953A1 (zh) * | 2017-12-05 | 2019-06-13 | 华为技术有限公司 | 日志处理方法、相关设备及系统 |
CN110232053B (zh) * | 2017-12-05 | 2024-02-02 | 华为技术有限公司 | 日志处理方法、相关设备及系统 |
CN110232053A (zh) * | 2017-12-05 | 2019-09-13 | 华为技术有限公司 | 日志处理方法、相关设备及系统 |
US11640261B2 (en) | 2017-12-05 | 2023-05-02 | Huawei Technologies Co., Ltd. | Log processing method to avoid log collision, and related device and system |
CN108322542B (zh) * | 2018-02-12 | 2021-10-15 | 广州市贝聊信息科技有限公司 | 数据更新方法、系统、装置以及计算机可读存储介质 |
CN108322542A (zh) * | 2018-02-12 | 2018-07-24 | 广州市贝聊信息科技有限公司 | 数据更新方法、系统、装置以及计算机可读存储介质 |
CN109657000A (zh) * | 2018-10-19 | 2019-04-19 | 北京全路通信信号研究设计院集团有限公司 | 一种轨道交通综合监控系统的实时数据同步方法及装置 |
CN109657000B (zh) * | 2018-10-19 | 2021-03-02 | 北京全路通信信号研究设计院集团有限公司 | 一种轨道交通综合监控系统的实时数据同步方法及装置 |
CN109885617A (zh) * | 2019-01-29 | 2019-06-14 | 中国工商银行股份有限公司 | 分布式异构数据库系统的数据同步方法及装置 |
CN110865987A (zh) * | 2019-11-18 | 2020-03-06 | 杭州安恒信息技术股份有限公司 | 一种文件同步方法、装置、设备及介质 |
CN113190620A (zh) * | 2021-04-30 | 2021-07-30 | 康键信息技术(深圳)有限公司 | Redis集群之间数据的同步方法、装置、设备及存储介质 |
CN113190620B (zh) * | 2021-04-30 | 2023-10-20 | 康键信息技术(深圳)有限公司 | Redis集群之间数据的同步方法、装置、设备及存储介质 |
WO2024114105A1 (zh) * | 2022-11-30 | 2024-06-06 | 华为云计算技术有限公司 | 一种数据库的数据更新方法、系统及计算设备集群 |
Also Published As
Publication number | Publication date |
---|---|
CN105227657B (zh) | 2018-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105227657A (zh) | 一种数据同步的方法和装置 | |
CN103503414B (zh) | 一种计算存储融合的集群系统 | |
CN106372221B (zh) | 一种文件同步的方法、设备及系统 | |
CN110389900A (zh) | 一种分布式数据库集群测试方法、装置及存储介质 | |
CN108121782A (zh) | 查询请求的分配方法、数据库中间件系统以及电子设备 | |
WO2015062444A1 (en) | System and method for creating a distributed transaction manager supporting repeatable read isolation level in a mpp database | |
CN105205182B (zh) | 多机房部署系统及跨机房的业务数据处理方法 | |
CN106055698A (zh) | 数据迁移方法、代理节点及数据库实例 | |
CN102760126B (zh) | 一种分布式系统中的数据同步方法和分布式系统 | |
CN105515872B (zh) | 配置信息的更新方法、装置及系统 | |
CN104572689A (zh) | 数据同步方法、装置及系统 | |
CN105205154B (zh) | 数据迁移方法以及装置 | |
TW201434300A (zh) | 跨越叢集邊界的服務遷移 | |
CN102983996A (zh) | 一种高可用集群资源管理的动态配置方法与系统 | |
CN104348913A (zh) | 一种紧耦合可扩展的大数据交互方法 | |
CN102026228B (zh) | 通信网络性能数据的统计方法和设备 | |
US20160308871A1 (en) | Network element data access method and apparatus, and network management system | |
CN106686117B (zh) | 一种分布式计算集群的数据存储处理系统及方法 | |
CN105302817B (zh) | 分布式文件系统管理方法和装置 | |
CN105357289B (zh) | 路由器的配置方法、软件镜像文件的生成方法及系统 | |
CN104636327A (zh) | 一种基于增量计算的分布式流式数据系统 | |
CN106709056A (zh) | 一种nfs挂载目录导出方法及装置 | |
CN106649141B (zh) | 一种基于ceph的存储交互装置及存储系统 | |
CN113672591A (zh) | 数据迁移方法、系统、存储介质及电子设备 | |
CN106649669B (zh) | 一种基于远程字典服务器的数据存储方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |