CN110287251B - MongoDB到HBase的分布式高容错数据实时同步方法 - Google Patents

MongoDB到HBase的分布式高容错数据实时同步方法 Download PDF

Info

Publication number
CN110287251B
CN110287251B CN201910561319.4A CN201910561319A CN110287251B CN 110287251 B CN110287251 B CN 110287251B CN 201910561319 A CN201910561319 A CN 201910561319A CN 110287251 B CN110287251 B CN 110287251B
Authority
CN
China
Prior art keywords
oplog
key
data
mongodb
value
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.)
Active
Application number
CN201910561319.4A
Other languages
English (en)
Other versions
CN110287251A (zh
Inventor
任旭波
谢赟
陈大伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Datatom Information Technology Co ltd
Original Assignee
Shanghai Datatom Information Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Datatom Information Technology Co ltd filed Critical Shanghai Datatom Information Technology Co ltd
Priority to CN201910561319.4A priority Critical patent/CN110287251B/zh
Publication of CN110287251A publication Critical patent/CN110287251A/zh
Application granted granted Critical
Publication of CN110287251B publication Critical patent/CN110287251B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种MongoDB到HBase的分布式高容错数据实时同步方法,包括:开启MongoDB的oplog操作日志记录功能;生产者将MongoDB中oplog的检查点之后的记录读取出来,将各条oplog推送到Kafka的预定主题,同时写入Redis;oplog进入Storm后,判断该条oplog的操作类型,针对涉及数据同步的操作类型,获取适合HBase存储的键‑值以及数据定位信息,或者仅获取数据定位信息;HBase writer接受传来的键‑值及数据定位信息,进行相应处理。本发明高效地进行从MongoDB到HBase数据实时同步,保证数据同步的准确性,能够满足业务系统复杂的数据实时同步要求。

Description

MongoDB到HBase的分布式高容错数据实时同步方法
技术领域
本发明涉及数据库技术领域,尤其涉及MongoDB到HBase的分布式高容错数据实时同步方法。
背景技术
MongoDB是一种常用的非关系型数据库,作为一个适用于敏捷开发的数据库,MongoDB的数据模式可以随着应用程序的发展而灵活地更新,MongoDB能够使企业更加具有敏捷性和可扩展性,各种规模的企业都可以通过使用MongoDB来创建新的应用,提高工作效率,降低企业成本。HBase是建立在Hadoop(分布式计算)文件系统之上的分布式面向列的数据库,可以提供快速随机访问海量结构化数据。尽管目前已经有很多各种数据库之间的同步方法,但对于MongoDB到HBase之间的数据同步,仍未有较为通用的方法。
发明内容
本发明的目的在于提供一种MongoDB到HBase的分布式高容错数据实时同步方法,高效地进行从MongoDB到HBase数据实时同步,达到异构数据库备份的目的,同时支持oplog的消费确认机制,保证数据同步的准确性,能够满足业务系统复杂的数据实时同步要求。
实现上述目的的技术方案是:
一种MongoDB到HBase的分布式高容错数据实时同步方法,包括:
步骤S1,开启MongoDB的oplog(操作日志)操作日志记录功能;
步骤S2,生产者将MongoDB中oplog的检查点之后的记录读取出来,将各条oplog推送到Kafka(一个消息队列工具)的预定主题,同时写入Redis(一个内存数据库);
步骤S3,Storm(一个开源分布式计算系统)作为消费者订阅Kafka的预定主题,oplog进入Storm后,判断该条oplog的操作类型,针对涉及数据同步的操作类型,获取适合HBase存储的键-值以及数据定位信息,或者仅获取数据定位信息;
步骤S4,HBase writer(Hbase写入器)接受步骤S3传来的键-值及数据定位信息,若传入的键-值信息为空,HBase writer会将指定位置的一行数据删除,若不为空,则将传入的键-值写入指定位置;在数据写入成功后,HBase writer根据传入的信息重新拼接出第一时间戳+名称空间+oid(Mongodb表唯一id,Mongodb中表字段中的不重复字段)作为键,并删除Redis中对应的记录;若数据写入失败,则不做任何处理;
步骤S5,一条oplog处理完成后,返回步骤S3,直至所有oplog处理完成后。
优选的,所述的步骤S2中,生产者读取定位时间戳作为检查点,以键=名称空间,值=第一时间戳+oplog的形式将oplog推送到Kafka的预定主题Storm,同时以键=第一时间戳+名称空间+oid,值=0的形式将键-值存到Redis中,每将一条oplog写入Kafka和Redis后,将其第一时间戳写入到定位时间戳中。
优选的,所述的步骤S2中,
名称空间由当前oplog中ns字段(Oplog是json格式的,json由若干个键和值组成,ns是其中的一个键的名称)的值组成,表示对应数据所在的库和集合;
第一时间戳指的是当前oplog中ts字段(Oplog是json格式的,json由若干个键和值组成,ts是其中的一个键的名称)的值;
在生产者读取的一批oplog全部推向Kafka及Redis后,重复步骤S2。
优选的,在Kafka的同一消费者组中,有多个消费者来共同消费生产者发送到该消费者组中的数据。
优选的,所述的oplog的操作类型分为插入、修改、删除和其他四类,其他类别包括建表、数据库声明和系统的空操作;
针对插入和修改操作:获取oplog中关于插入和修改描述所在的子json(一种轻量级数据交换格式,由若干个键值对组成),及产生该条oplog数据所在的库、表和主键id这些定位信息及第一时间戳;然后,对于接收到的子json,对子json进行递归转换,将子json转换成适合HBase存储的键-值格式,对于嵌套多层子json,转换到最后一层为止;之后对键-值进行时间日期等格式转换;
针对删除操作:获取产生该条oplog数据所在的库、表和主键id这些定位信息及第一时间戳;
针对其他操作:重新拼接出第一时间戳+名称空间+oid作为键,并删除Redis中对应的记录。
优选的,每隔15秒,Redis遍历器(Redis Scanner)遍历一遍Redis,寻找键中第一时间戳小于当前时间-30s的键,并将这些键所对应的值加1,在给值加1之前,如果值>5,在Redis中将该条数据删除;
Redis遍历器获取到符合条件的键后,利用键中的名称空间和oid这些定位信息,在MongoDB数据库中查找对应的键-值信息,若键-值信息不为空,将对应的oplog的子json进行递归转换,将子json转换成适合HBase存储的键-值格式,对于嵌套多层子json,转换到最后一层为止;之后对键-值进行时间日期等格式转换,再次转入步骤S4;若查到的键-值信息为空,转到步骤S4。
本发明的有益效果是:
1)本发明基于解析MongoDB内部的oplog实现数据同步,对源端的侵入性低,避免了数据同步对源端产生过多压力,且在同步过程中表的粒度上严格按照日志产生顺序,避免了因同步顺序的颠倒造成数据不一致的现象。
2)本发明基于Kafka、Storm等分布式工具,并行实现数据的同步,同步效率高,且避免了单点故障,提高了服务的健壮性。
3)本发明基于Redis在内存中实现了oplog从生产者端到写入HBase之间的同步日志消费确认,并在标记到未完成同步的数据后,会进行多次补数据操作,确保了数据的一致性,同时,因Redis中只存记录数据的定位信息和时间戳,且会在完成同步或者同步超时后删除,因此不会出现过多占用系统内存的现象。
4)本发明方法扩展性强,在已经部署好的MongoDB实时同步到HBase的单对单模式下,可轻易的部署新的生产者将另外一个MongoDB的数据推到Kafka的对应主题中,达到多个MongoDB源端同步到一个HBase的效果。
5)本发明方法对目的端几乎无依赖,只需要对HBase writer稍作修改,实现相应的方法即可将目的端替换为其他的非关系型数据库,如果实际业务场景中源端MongoDB的集合中json格式固定统一,还可将目的端替换为关系型数据库。
附图说明
图1是本发明的MongoDB到HBase的分布式高容错数据实时同步方法的流程图;
图2是本发明中HBase writer处理传来数据的流程图;
图3是本发明中Redis遍历器获取同步超时及补数据的流程图。
具体实施方式
下面将结合附图对本发明作进一步说明。
请参阅图1,本发明的MongoDB到HBase的分布式高容错数据实时同步方法,包括下列步骤:
步骤S1,开启MongoDB的oplog操作日志记录功能(复制集和分片式两种部署方式默认开启,单节点部署需手动配置开启),并确保MongoDB和HBase两个数据库处在数据相同的初始状态。
Oplog是MongoDB中用于实现数据备份的集合,MongoDB中的集合都以json格式存储,oplog的主要功能是用来存储MongoDB中的写操作,分为增删改、建表、数据库声明和系统空操作等类型。
步骤S2,生产者读取定位时间戳作为检查点,将MongoDB中oplog的检查点之后的记录读取出来,以键(key)=名称空间(名称空间由该条oplog中ns字段的值组成,表示对应数据所在的库和集合),值(value)=第一时间戳+oplog的形式将oplog推送到Kafka的预定主题(此处的第一时间戳指的是oplog中ts字段的值),同时以键=第一时间戳+名称空间+oid,值=0的形式将键-值存到Redis中,Redis中的数据是由生产者把oplog推入Kafka前写入的,每将一条oplog写入Kafka和Redis后,将该条oplog的ts值(第一时间戳)写入到定位时间戳中。在生产者读取的一批oplog全部推向Kafka及Redis后,重复步骤S2。
在Kafka的同一消费者组中,有多个消费者来共同消费生产者发送到该消费者组中的数据,起到负载均衡的作用。在步骤S2中推送到Kafka中数据的键=名称空间,是为了确保同一MongoDB集合中的oplog进入Kafka的同一分区,保证同一集合中的oplog消费顺序与oplog的产生顺序一致,避免因在目的端执行顺序的不同,造成数据不一致。
步骤S3,Storm作为消费者订阅Kafka相应的主题,oplog进入Storm后,判断该条oplog的操作类型,针对涉及数据同步的操作类型,获取适合HBase存储的键-值以及数据定位信息,或者仅获取数据定位信息。具体地:
oplog的操作类型分为插入、修改、删除和其他四类,其他类别包括建表、数据库声明和系统的空操作,其中,
针对插入和修改操作:获取oplog中关于插入和修改描述所在的子json,及产生该条oplog数据所在的库、表和主键id这些定位信息及第一时间戳;然后,对于接收到的子json,对子json进行递归转换,将子json转换成适合HBase存储的键-值(k-v,key-values)格式,对于嵌套多层子json,转换到最后一层为止;之后对键-值进行时间日期等格式转换,确保源端、目的端的格式正确。
针对删除操作:获取产生该条oplog数据所在的库、表和主键id这些定位信息及第一时间戳。
针对其他操作:建表、数据库声明和系统的空操作相关日志,这些日志在oplog中占的比重较小且不涉及到数据同步。重新拼接出第一时间戳+名称空间+oid作为键,并删除Redis中对应的记录。
步骤S4,HBase writer接受步骤S3传来的键-值及数据定位信息,若传入的键-值信息为空,HBase writer会将指定位置的一行数据删除,若不为空,则将传入的键-值写入指定位置;在数据写入成功后,HBase writer根据传入的信息重新拼接出第一时间戳+名称空间+oid作为键,并删除Redis中对应的记录。若数据写入失败,则不做任何处理。如图2所示。
步骤S5,一条oplog处理完成后,返回步骤S3,直至所有oplog处理完成。
在步骤S2-S5的过程中,如图3所示,每隔15秒,Redis遍历器遍历一遍Redis,寻找键中第一时间戳小于当前时间-30s的键,并将这些键所对应的值(value)加1,在给值加1之前,如果值>5,表示该条数据在重复多次后仍未同步成功,在Redis中将该条数据删除。Redis遍历器获取到符合条件的键后,利用键中的名称空间和oid这些定位信息,在MongoDB数据库中查找对应的键-值信息,若键-值信息不为空,将对应的oplog的子json进行递归转换,将子json转换成适合HBase存储的键-值格式,对于嵌套多层子json,转换到最后一层为止;之后对键-值进行时间日期等格式转换,再次转入步骤S4;若查到的键-值信息为空,表明该键所对应的为删除操作,转到步骤S4。
以上实施例仅供说明本发明之用,而非对本发明的限制,有关技术领域的技术人员,在不脱离本发明的精神和范围的情况下,还可以作出各种变换或变型,因此所有等同的技术方案也应该属于本发明的范畴,应由各权利要求所限定。

Claims (6)

1.一种MongoDB到HBase的分布式高容错数据实时同步方法,其特征在于,包括:
步骤S1,开启MongoDB的oplog操作日志记录功能;
步骤S2,生产者读取出MongoDB中预设检查点之后的多条oplog,将各条oplog推送到Kafka的预定主题,同时写入Redis;
步骤S3,Storm作为消费者订阅Kafka的预定主题,oplog进入Storm后,判断该条oplog的操作类型,针对涉及数据同步的操作类型,获取适合HBase存储的键-值以及数据定位信息,或者仅获取数据定位信息;
步骤S4,HBase writer接受根据步骤S3获取的键-值及数据定位信息,若传入的键-值信息为空,则HBase writer将指定位置的一行数据删除,若不为空,则将传入的键-值写入指定位置;在数据写入成功后,HBase writer根据传入的信息重新拼接出第一时间戳+名称空间+oid作为键,并删除Redis中对应的记录;若数据写入失败,则不做任何处理;
步骤S5,一条oplog处理完成后,返回步骤S3,直至所有oplog处理完成后。
2.根据权利要求1所述的MongoDB到HBase的分布式高容错数据实时同步方法,其特征在于,所述的步骤S2中,生产者读取定位时间戳作为检查点,以键=名称空间,值=第一时间戳+oplog的形式将oplog推送到Kafka的预定主题Storm,同时以键=第一时间戳+名称空间+oid,值=0的形式将键-值存到Redis中,每将一条oplog写入Kafka和Redis后,将其第一时间戳写入到定位时间戳中。
3.根据权利要求2所述的MongoDB到HBase的分布式高容错数据实时同步方法,其特征在于,所述的步骤S2中,
名称空间由当前oplog中ns字段的值组成,表示对应数据所在的库和集合;
第一时间戳指的是当前oplog中ts字段的值;
在生产者读取的一批oplog全部推向Kafka及Redis后,重复步骤S2。
4.根据权利要求1所述的MongoDB到HBase的分布式高容错数据实时同步方法,其特征在于,在Kafka的同一消费者组中,有多个消费者来共同消费生产者发送到该消费者组中的数据。
5.根据权利要求1所述的MongoDB到HBase的分布式高容错数据实时同步方法,其特征在于,所述的oplog的操作类型分为插入、修改、删除和其他四类,其他类别包括建表、数据库声明和系统的空操作;
针对插入和修改操作:获取oplog中关于插入和修改描述所在的子json,及产生该条oplog数据所在的库、表和主键id这些定位信息及第一时间戳;然后,对于接收到的子json,对子json进行递归转换,将子json转换成适合HBase存储的键-值格式,对于嵌套多层子json,转换到最后一层为止;之后对键-值进行时间日期等格式转换;
针对删除操作:获取产生该条oplog数据所在的库、表和主键id这些定位信息及第一时间戳;
针对其他操作:重新拼接出第一时间戳+名称空间+oid作为键,并删除Redis中对应的记录。
6.根据权利要求5所述的MongoDB到HBase的分布式高容错数据实时同步方法,其特征在于,每隔15秒,Redis遍历器遍历一遍Redis,寻找键中第一时间戳小于当前时间-30s的键,并将这些键所对应的值加1,在给值加1之前,如果值>5,在Redis中将该条数据删除;
Redis遍历器获取到符合条件的键后,利用键中的名称空间和oid这些定位信息,在MongoDB数据库中查找对应的键-值信息,若键-值信息不为空,将对应的oplog的子json进行递归转换,将子json转换成适合HBase存储的键-值格式,对于嵌套多层子json,转换到最后一层为止;之后对键-值进行时间日期等格式转换,再次转入步骤S4;若查到的键-值信息为空,转到步骤S4。
CN201910561319.4A 2019-06-26 2019-06-26 MongoDB到HBase的分布式高容错数据实时同步方法 Active CN110287251B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910561319.4A CN110287251B (zh) 2019-06-26 2019-06-26 MongoDB到HBase的分布式高容错数据实时同步方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910561319.4A CN110287251B (zh) 2019-06-26 2019-06-26 MongoDB到HBase的分布式高容错数据实时同步方法

Publications (2)

Publication Number Publication Date
CN110287251A CN110287251A (zh) 2019-09-27
CN110287251B true CN110287251B (zh) 2022-09-16

Family

ID=68006132

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910561319.4A Active CN110287251B (zh) 2019-06-26 2019-06-26 MongoDB到HBase的分布式高容错数据实时同步方法

Country Status (1)

Country Link
CN (1) CN110287251B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113495894B (zh) * 2020-04-01 2024-07-16 北京京东振世信息技术有限公司 数据同步方法、装置、设备及存储介质
CN112487087B (zh) * 2020-11-17 2024-08-06 中国人寿保险股份有限公司 一种增量数据实时同步的方法及相关设备
CN112286941B (zh) * 2020-12-23 2021-03-23 武汉物易云通网络科技有限公司 一种基于Binlog+HBase+Hive的大数据同步方法和装置
CN112667698B (zh) * 2021-01-04 2023-02-28 山西云媒体发展有限公司 一种基于融媒体平台的MongoDB数据同步方法
CN114035982B (zh) * 2021-11-08 2024-07-02 中电福富信息科技有限公司 一种基于事件驱动的apm指标切片计算方法及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108920698A (zh) * 2018-07-16 2018-11-30 北京京东金融科技控股有限公司 一种数据同步方法、装置、系统、介质及电子设备
CN109800128A (zh) * 2019-01-15 2019-05-24 苏州工品汇软件技术有限公司 基于微服务的操作日志记录收集方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170255663A1 (en) * 2016-03-07 2017-09-07 Researchgate Gmbh Propagation of data changes in a distributed system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108920698A (zh) * 2018-07-16 2018-11-30 北京京东金融科技控股有限公司 一种数据同步方法、装置、系统、介质及电子设备
CN109800128A (zh) * 2019-01-15 2019-05-24 苏州工品汇软件技术有限公司 基于微服务的操作日志记录收集方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于存储形态及特征的HBase数据库灾难恢复机制研究;罗文华等;《信息网络安全》;20180910(第09期);全文 *

Also Published As

Publication number Publication date
CN110287251A (zh) 2019-09-27

Similar Documents

Publication Publication Date Title
CN110287251B (zh) MongoDB到HBase的分布式高容错数据实时同步方法
CN111367886B (zh) 数据库中数据迁移的方法及装置
CN107402963B (zh) 搜索数据的构建方法、增量数据的推送方法及装置和设备
CN110879813B (zh) 一种基于二进制日志解析的MySQL数据库增量同步实现方法
CN113297166B (zh) 数据处理系统、方法以及装置
CN109918349B (zh) 日志处理方法、装置、存储介质和电子装置
CN113535856B (zh) 数据同步方法及系统
CN110162512B (zh) 一种日志检索方法、装置及存储介质
EP3480705B1 (en) Database data modification request processing method and apparatus
CN109298978B (zh) 一种指定位置的数据库集群的恢复方法及系统
CN111414362A (zh) 数据读取方法、装置、设备及存储介质
CN114416868B (zh) 一种数据同步方法、装置、设备及存储介质
CN114595288A (zh) 一种基于sql命令级的多idc分布式系统数据同步方法
CN110019169B (zh) 一种数据处理的方法及装置
CN110866068B (zh) 一种基于hdfs的公告数据存储方法及其装置
CN116303789A (zh) 多分片多副本数据库并行同步方法、装置及可读介质
CN114564458B (zh) 集群间数据同步的方法、装置、设备和存储介质
CN116186053A (zh) 一种数据处理方法、装置及存储介质
CN111274316B (zh) 多级数据流转任务的执行方法及装置、电子设备、存储介质
CN115408200A (zh) 多存储引擎的数据备份方法、装置、电子设备及存储介质
CN116756247B (zh) 数据修复方法、装置、计算机设备和存储介质
CN115357429B (zh) 恢复数据文件的方法、装置和客户端
CN116756236A (zh) 一种数据同步方法、装置、设备及存储介质
CN114238494A (zh) 数据同步处理方法、装置、计算机设备和存储介质
CN116126620A (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