CN112667698A - 一种基于融媒体平台的MongoDB数据同步方法 - Google Patents
一种基于融媒体平台的MongoDB数据同步方法 Download PDFInfo
- Publication number
- CN112667698A CN112667698A CN202110003430.9A CN202110003430A CN112667698A CN 112667698 A CN112667698 A CN 112667698A CN 202110003430 A CN202110003430 A CN 202110003430A CN 112667698 A CN112667698 A CN 112667698A
- Authority
- CN
- China
- Prior art keywords
- data
- synchronization
- queue
- mongodb
- database
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及MongoDB数据库技术,特别涉及一种基于融媒体平台的MongoDB数据同步方法。所述方法包括数据采集、数据处理和数据入库三个功能组件,支持仅全量同步、仅增量同步和先全量后增量同步三种同步模式,支持的源数据库为MongoDB副本集集群部署、主从模式集群部署、分片模式部署,支持数据同步效率和部署主机资源使用情况的权衡配置;能够满足数据库迁移,数据灾备,多活多中心数据库等多种业务场景。
Description
技术领域
本发明涉及MongoDB数据库技术,特别涉及一种基于融媒体平台的MongoDB数据同步方法。
背景技术
山西媒体智慧云平台是山西省县级融媒体中心建设的省级技术平台,助力县级融媒体中心实现“策、采、编、审、发”一体化,承担着推动媒体融合向纵深发展的重任。山西媒体智慧云平台作为县级融媒体省级技术支撑平台,并发量大、业务操作复杂,媒资数据量需以亿计;同时,传统的关系型数据库难以提供超大规模的数据存储以及高并发的读写访问能力;随着媒体融合的进一步推进,媒资数据量会同步上升。鉴于此,山西媒体智慧云平台选择了非关系数据库当中功能最丰富,最像关系数据库的MongoDB数据库存储媒资以及业务流转数据,来提升海量数据大并发场景下的读写效率。
为防止系统运行过程中的数据损坏、丢失等问题,MongoDB数据库集群需要定期和/或不定期的维护、备份等工作。另外,为保障系统的稳定,MongoDB数据库集群采用了异地容灾的数据高可用方案,主数据库集群A与备数据库集群B分别部署在不同城市的机房,在正常工作状态下,主数据库集群A和备数据库集群B之间进行实时数据同步操作,主数据库集群A与备数据库集群B存储的数据保持一致,一旦主数据库集群A因为某种意外而损坏,可立即采用备数据库集群B替代主数据库,保证系统的正常运行;因此,多数据中心之间数据同步的高效性、可靠性是各种灾备、高可用方案的基础和技术要点。
多数据中心之间数据同步技术中多是用一些同步工具直接连接MongoDB,查询获取待同步数据时往往会对数据库产生大量的数据查询堆积,使得数据同步速率缓慢,并且令MongoDB的数据库性能急剧下降,严重时会影响业务系统的正常功能,甚至需要重启数据库才能恢复。鉴于此,提供一种解决上述技术问题的方案,已经是本领域技术人员所亟需关注的。
发明内容
本发明一种基于融媒体平台的MongoDB数据同步方法的目的是克服现有技术的不足,提出一种支持源MongoDB数据库为副本集集群、主从模式集群和分片集群多种部署方式的同步技术方案,通过获取数据库集群数据节点local库操作日志数据并进行数据回放达到同步目的。
为了达到上述目的,本发明采用了下列技术方案:
一种基于融媒体平台的MongoDB数据同步方法,包括数据采集、数据处理和数据入库三个功能组件;
所述数据采集包括采集器、追加队列、解序列化、日志队列和数据整理器;
所述数据处理包括待处理队列和工作线程;
所述数据入库包括入库队列和入库线程;
所述数据采集负责从源数据库拉取数据,具体为:首先数据采集中的采集器从源数据库中抓取oplog日志数据,然后打包压缩后放入追加队列,解序列化从追加队列中抓取数据进行解序列化处理,存入日志队列,数据整理器将日志队列中的数据进行重新组织,把将发送到同一个数据处理的数据聚集在一起,然后按照hash算法分发到对应数据处理中的待处理队列进行数据清理;
所述数据处理从待处理队列中抓取数据,然后发送到工作线程,采用Ack机制,待处理队列内部会维持两类队列,分别为未发送队列和已发送队列,前者存储未发送的数据,后者存储发送但没有收到Ack确认的数据;发送后,未发送队列的数据会转移到已发送队列,收到对端的Ack回复,已发送队列中seq小于Ack的数据将会被删除,从而保证了可靠性;
所述数据入库对接数据处理中的工作线程,进行直接写入目标数据库的操作,数据处理与数据入库一一对应,首先,数据入库将收到的数据根据冲突检测规则分发到不同的入库队列,然后入库线程从入库队列中抓取数据进行并发写入目标数据库。
进一步,所述数据同步方法支持仅全量同步、仅增量同步和先全量后增量同步三种数据同步模式;所述仅全量同步模式,利用全量迁移功能会在迁移前记录源数据库的oplog位点,然后将源数据库的数据全部复制到目标数据库,复制原理跟MongoDB源生的节点间数据同步是一样的,它会并发将每个数据库每个表的数据先全量同步到目标数据库,再从之前记录的oplog位点同步剩余的oplog数据,达到数据的同步;所述仅增量同步模式,会同步当前源数据库的增删改查操作,并记录ckpoint位点,支持断点续传;所述先全量后增量同步模式,会自动识别全量同步是否已经执行过,如果执行过,它会跳过全量同步,直接进行增量同步。
所述源数据库为MongoDB副本集集群部署、主从模式集群部署、分片模式部署中的一种;当源数据库为MongoDB副本集集群部署、主从模式集群部署时,数据采集只需启用一个进程;当源数据库为分片模式部署时,需要启动多个数据采集进程与各个分片一一对应。
本发明MongoDB集群数据同步方法与现有技术相比,本发明具有的有益效果是:
1.本发明支持全量、增量和全量+增量三种模式的数据同步,能够满足数据库迁移,数据灾备,多活多中心数据库等多种业务场景。
2.公开号为CN110502490A的中国专利公开了一种MongoDB数据库数据同步系统及实现方法,在专利中提到的源MongoDB库的部署方式分别为副本集和主从模式;而本发明中的数据源除上述两者之外,还支持数据源为分片集群部署,分片集群部署是MongoDB大数据存储的公认解决方案,所以满足此类数据源的同步很有必要。
3.本发明通过读取MongoDB集群的oplog操作日志,对MongoDB的数据进行同步,对源库的性能影响极小;采用分层多线程、多队列的模式实现,线程数可配置,可灵活的根据主机资源的使用情况调整数据同步速率。
4.本发明的数据传输采用了Ack机制,严格保证了数据传输的流量控制和可靠性。
附图说明
图1是MongoDB数据同步方法的业务流程图;
图2是MongoDB数据库异地多机房灾备实施方案图;
图1中:1-源数据库、2-MongoDB集群数据同步方法、3-数据采集组件、4-采集器、5-追加队列、6-解序列化、7-日志队列、8-数据整理器、9-数据处理组件、10-待处理队列、11-工作线程、12-数据入库组件、13-入库队列、14-入库线、15-目标数据库。
具体实施方式
下面结合附图介绍本发明的具体实施方法,对本发明实施例中的技术方案进行清楚、完整地描述,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。
本申请的实施例是基于一套异地容灾系统来展开描述本发明MongoDB集群数据同步方法的。参见图2,用户在两个机房分别部署了两套应用,正常情况下,用户流量通过DNS/SLB只访问主应用,然后再访问到主MongoDB数据库分片集群,数据通过本发明描述的MongoDB集群数据同步方法在两个机房的数据库之间进行同步,一旦机房A不可用,DNS/SLB将用户流量切换到机房B的备应用和备库上,然后继续对外提供读写服务。
在机房B部署MongoDB集群数据同步系统,配置源MongoDB分片集群的所有shard节点的访问地址和鉴权信息,具备oplog读权限;配置同步方式为全量+增量模式。
所述数据采集负责从机房A部署的源数据库拉取数据,如果源数据源库是MongoDB副本集集群、主从模式集群部署,那么数据采集只需启动一个进程,如果源数据库是分片模式部署,那么需要启动多个数据采集进程与各个分片一一对应。
如果选择全量同步数据,全量迁移功能会在迁移前记录源数据库的oplog位点,然后将源数据库的数据全部复制到目标数据库,复制原理跟MongoDB源生的节点间数据同步是一样的,它会并发将每个数据库每个表的数据先全量同步到目标数据库,最好再从之前记录的oplog位点同步剩余的oplog数据,达到数据的同步;如果选择增量同步,会同步当前源库的增删改查操作,并记录ckpoint位点,支持断点续传;如果选择全量+增量同步,会自动识别全量迁移是否已经执行过,如果执行过,它会跳过全量迁移,直接进行增量迁移。
在数据采集内部,首先采集器从源数据库中抓取oplog日志数据,然后打包压缩后放入追加队列,解序列化线程从追加队列中抓取数据进行解序列化处理,存入日志队列。数据整理将从日志队列中抓取的数据进行重新组织,把将发送到同一个数据处理的数据聚集在一起,然后按照hash算法分发到对应数据处理进行数据清洗。
所述数据处理主要功能是从待处理队列中抓取数据,然后进行发送,采用Ack机制,所以会内部维持几个队列,分别为未发送队列和已发送队列,前者存储未发送的数据,后者存储发送但是没有收到Ack确认的数据。发送后,未发送队列的数据会转移到已发送队列;收到了对端的Ack回复,已发送队列中seq小于Ack的数据将会被删除,从而保证了可靠性。
所述数据处理对接所述数据入库进行直接写入机房B目标数据库操作,数据处理与数据入库一一对应。首先,数据入库将收到的数据根据冲突检测规则分发到不同的入库队列,然后入库线程从队列中抓取进行并发写入。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (3)
1.一种基于融媒体平台的MongoDB数据同步方法,其特征在于,包括数据采集、数据处理和数据入库三个功能组件;
所述数据采集包括采集器、追加队列、解序列化、日志队列和数据整理器;
所述数据处理包括待处理队列和工作线程;
所述数据入库包括入库队列和入库线程;
所述数据采集负责从源数据库拉取数据,具体为:首先数据采集中的采集器从源数据库中抓取oplog日志数据,然后打包压缩后放入追加队列,解序列化从追加队列中抓取数据进行解序列化处理,存入日志队列,数据整理器将日志队列中的数据进行重新组织,把将发送到同一个数据处理的数据聚集在一起,然后按照hash算法分发到对应数据处理中的待处理队列进行数据清理;
所述数据处理从待处理队列中抓取数据,然后发送到工作线程,采用Ack机制,待处理队列内部会维持两类队列,分别为未发送队列和已发送队列,前者存储未发送的数据,后者存储发送但没有收到Ack确认的数据;发送后,未发送队列的数据会转移到已发送队列,收到对端的Ack回复,已发送队列中seq小于Ack的数据将会被删除;
所述数据入库对接数据处理中的工作线程,进行直接写入目标数据库的操作,数据处理与数据入库一一对应,首先,数据入库将收到的数据根据冲突检测规则分发到不同的入库队列,然后入库线程从入库队列中抓取数据进行并发写入目标数据库。
2.根据权利要求1所述的一种基于融媒体平台的MongoDB数据同步方法,其特征在于,所述数据同步方法支持仅全量同步、仅增量同步和先全量后增量同步三种数据同步模式;所述仅全量同步模式,利用全量迁移功能会在迁移前记录源数据库的oplog位点,然后将源数据库的数据全部复制到目标数据库,复制原理跟MongoDB源生的节点间数据同步是一样的,它会并发将每个数据库每个表的数据先全量同步到目标数据库,再从之前记录的oplog位点同步剩余的oplog数据,达到数据的同步;所述仅增量同步模式,会同步当前源数据库的增删改查操作,并记录ckpoint位点,支持断点续传;所述先全量后增量同步模式,会自动识别全量同步是否已经执行过,如果执行过,它会跳过全量同步,直接进行增量同步。
3.根据权利要求1所述的一种基于融媒体平台的MongoDB数据同步方法,其特征在于,所述源数据库为MongoDB副本集集群部署、主从模式集群部署、分片模式部署中的一种;当源数据库为MongoDB副本集集群部署、主从模式集群部署时,数据采集只需启用一个进程;当源数据库为分片模式部署时,需要启动多个数据采集进程与各个分片一一对应。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110003430.9A CN112667698B (zh) | 2021-01-04 | 2021-01-04 | 一种基于融媒体平台的MongoDB数据同步方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110003430.9A CN112667698B (zh) | 2021-01-04 | 2021-01-04 | 一种基于融媒体平台的MongoDB数据同步方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112667698A true CN112667698A (zh) | 2021-04-16 |
CN112667698B CN112667698B (zh) | 2023-02-28 |
Family
ID=75412646
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110003430.9A Active CN112667698B (zh) | 2021-01-04 | 2021-01-04 | 一种基于融媒体平台的MongoDB数据同步方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112667698B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113505173A (zh) * | 2021-07-08 | 2021-10-15 | 上海卓钢链科技有限公司 | 一种数据采集同步系统与同步方法 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060123069A1 (en) * | 2004-12-08 | 2006-06-08 | International Business Machines Corporation | Method and system for deferred synchronisation of data |
US20140279871A1 (en) * | 2013-03-13 | 2014-09-18 | Marcelo Ochoa | System and method for providing near real time data synchronization |
CN104462483A (zh) * | 2014-12-18 | 2015-03-25 | 北京奇虎科技有限公司 | 数据同步方法、装置及系统 |
CN104809202A (zh) * | 2015-04-24 | 2015-07-29 | 联动优势科技有限公司 | 一种数据库同步的方法和装置 |
CN108920489A (zh) * | 2018-05-14 | 2018-11-30 | 北京辰森世纪科技股份有限公司 | 数据库的部署方法、装置及设备 |
CN109284322A (zh) * | 2018-09-06 | 2019-01-29 | 杭州途记科技有限公司 | 一种数据中心 |
CN110287251A (zh) * | 2019-06-26 | 2019-09-27 | 上海德拓信息技术股份有限公司 | MongoDB到HBase的分布式高容错数据实时同步方法 |
CN110502490A (zh) * | 2019-08-30 | 2019-11-26 | 浪潮软件集团有限公司 | 一种MongoDB数据库数据同步系统及实现方法 |
CN110737720A (zh) * | 2019-09-06 | 2020-01-31 | 苏宁云计算有限公司 | 一种db2数据库数据同步方法、装置、系统 |
CN111008244A (zh) * | 2019-11-22 | 2020-04-14 | 厦门安胜网络科技有限公司 | 一种用于数据库的同步和分析方法及系统 |
CN111339103A (zh) * | 2020-03-13 | 2020-06-26 | 河南安冉云网络科技有限公司 | 一种基于全量分片和增量日志解析的数据交换方法及系统 |
-
2021
- 2021-01-04 CN CN202110003430.9A patent/CN112667698B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060123069A1 (en) * | 2004-12-08 | 2006-06-08 | International Business Machines Corporation | Method and system for deferred synchronisation of data |
US20140279871A1 (en) * | 2013-03-13 | 2014-09-18 | Marcelo Ochoa | System and method for providing near real time data synchronization |
CN104462483A (zh) * | 2014-12-18 | 2015-03-25 | 北京奇虎科技有限公司 | 数据同步方法、装置及系统 |
CN104809202A (zh) * | 2015-04-24 | 2015-07-29 | 联动优势科技有限公司 | 一种数据库同步的方法和装置 |
CN108920489A (zh) * | 2018-05-14 | 2018-11-30 | 北京辰森世纪科技股份有限公司 | 数据库的部署方法、装置及设备 |
CN109284322A (zh) * | 2018-09-06 | 2019-01-29 | 杭州途记科技有限公司 | 一种数据中心 |
CN110287251A (zh) * | 2019-06-26 | 2019-09-27 | 上海德拓信息技术股份有限公司 | MongoDB到HBase的分布式高容错数据实时同步方法 |
CN110502490A (zh) * | 2019-08-30 | 2019-11-26 | 浪潮软件集团有限公司 | 一种MongoDB数据库数据同步系统及实现方法 |
CN110737720A (zh) * | 2019-09-06 | 2020-01-31 | 苏宁云计算有限公司 | 一种db2数据库数据同步方法、装置、系统 |
CN111008244A (zh) * | 2019-11-22 | 2020-04-14 | 厦门安胜网络科技有限公司 | 一种用于数据库的同步和分析方法及系统 |
CN111339103A (zh) * | 2020-03-13 | 2020-06-26 | 河南安冉云网络科技有限公司 | 一种基于全量分片和增量日志解析的数据交换方法及系统 |
Non-Patent Citations (1)
Title |
---|
曾海峰等: "传统RDBMS向非关系型MongoDB数据模型转换与数据迁移方法研究", 《计算机应用研究》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113505173A (zh) * | 2021-07-08 | 2021-10-15 | 上海卓钢链科技有限公司 | 一种数据采集同步系统与同步方法 |
CN113505173B (zh) * | 2021-07-08 | 2024-03-19 | 上海卓钢链科技有限公司 | 一种数据采集同步系统与同步方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112667698B (zh) | 2023-02-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101904786B1 (ko) | 소스 데이터베이스 관리시스템에서 변경되는 데이터를 실시간으로 목표 데이터베이스 관리시스템에 복제하는 장치 및 그 방법 | |
US8521691B1 (en) | Seamless migration between replication technologies | |
CN103268318B (zh) | 一种强一致性的分布式键值数据库系统及其读写方法 | |
CN110209726A (zh) | 分布式数据库集群系统、数据同步方法及存储介质 | |
CN103138912B (zh) | 数据同步方法及系统 | |
US9547706B2 (en) | Using colocation hints to facilitate accessing a distributed data storage system | |
CN106156359A (zh) | 一种云计算平台下的数据同步更新方法 | |
CN111400312B (zh) | 一种基于改进lsm树的边缘存储数据库 | |
CN106250270A (zh) | 一种云计算平台下的数据备份方法 | |
CN103838646A (zh) | 一种用于地面应用大数据异地容灾备份的系统和方法 | |
JP5686034B2 (ja) | クラスタシステム、同期制御方法、サーバ装置および同期制御プログラム | |
CN105824846B (zh) | 数据迁移方法及装置 | |
CN103488546A (zh) | 一种支持多级别数据和数据库在线并发备份与恢复方法 | |
CN108762984B (zh) | 一种连续性数据备份的方法及装置 | |
CN107623703B (zh) | 全局事务标识gtid的同步方法、装置及系统 | |
CN101594256A (zh) | 容灾方法、装置和系统 | |
CN105376277A (zh) | 一种数据同步方法及装置 | |
US8527454B2 (en) | Data replication using a shared resource | |
CN104486387B (zh) | 一种数据同步处理方法及系统 | |
CN103902405A (zh) | 一种准连续性数据复制方法及装置 | |
CN102508740A (zh) | 文件系统远程复制方法 | |
CN104583966A (zh) | 用于去重复文件系统的备份和恢复系统以及对应的服务器和方法 | |
CN112667698B (zh) | 一种基于融媒体平台的MongoDB数据同步方法 | |
CN103544081B (zh) | 双元数据服务器的管理方法和装置 | |
CN102385624B (zh) | 一种面向分布式文件系统的日志数据组织的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |