CN107783975B - 分布式数据库同步处理的方法和装置 - Google Patents
分布式数据库同步处理的方法和装置 Download PDFInfo
- Publication number
- CN107783975B CN107783975B CN201610716743.8A CN201610716743A CN107783975B CN 107783975 B CN107783975 B CN 107783975B CN 201610716743 A CN201610716743 A CN 201610716743A CN 107783975 B CN107783975 B CN 107783975B
- Authority
- CN
- China
- Prior art keywords
- data
- message
- synchronization
- database
- service system
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, 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)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种分布式数据库同步处理的方法和装置,能够将新增的业务代码与现有的业务代码解耦,实现高性能的数据同步处理以及聚合查询。本发明的分布式数据库同步处理的方法,多个业务系统独立地操作所述数据库,每个业务系统对应一个监听机构、一个数据变更日志、一个同步消息队列和一个消息消费者,所述方法包括:每个监听机构监听对应的业务系统的数据变更日志,并且当监听到数据变更日志发生变更时,根据该变更生成数据同步消息,并且把该数据同步消息置于对应的业务系统的同步消息队列;每个消息消费者从对应的业务系统的同步消息队列中获取数据同步消息,根据数据同步消息获得待同步数据,并且把待同步数据加载到搜索引擎。
Description
技术领域
本发明涉及计算机和计算机软件技术领域,特别地涉及一种分布式数据库同步处理的方法和装置。
背景技术
随着虚拟业务的快速发展,虚拟业务线已经深入到各行各业,每条业务线的数据量也出现了迅猛增长。目前各业务系统的压力都非常大,部分业务线的订单数据的存储架构都从MySQL单库单表的存储开始向分库分表、分布式存储的方向改造升级。在进行分布式存储改造的过程中基本都面临历史订单的迁移、生产订单的聚合查询等难题。在解决数据同步聚合查询方面一般通过搜索引擎创建索引来完成,创建索引的过程通过业务代码埋点来解决,但是,这种实现方式对现有业务系统代码的耦合性高、侵入性强。
常用的数据同步处理的实现方式依赖业务代码,在业务代码实现流程上加入数据同步搜索引擎的处理,或者是通过插入数据同步任务,通过异步任务驱动的方式实现;或者,以分库分表中间件取代搜索引擎,例如Cobar、京东云平台推出的Jproxy等,目前这种分库分表中间件在解决数据同步聚合查询方面都是通过从每个分库里面查询记录,然后再进行聚合返回,而且在数据存储上其实只做到了数据分库存储,并不支持分表存储,每个库的数据量会随着时间的推移逐渐增大。
在使用过程中,会发现现有常用的数据同步处理的方法具有以下的缺点:
1、数据同步耦合性高
传统的通过业务代码流程添加数据库同步的功能,对现有的业务代码耦合性高、侵入性强,同时也降低了现有业务的处理效率;
2、开发、维护成本高
由于同步数据功能强耦合现有业务流程,故而造成代码可读性差,而且需要在数据变更的每一个节点上去进行数据同步的处理,因此容易出现遗漏,一旦遗漏就会出现数据不一致,这点将给开发团队带来很大的麻烦;
3、分库分表中间件性能受限
分库分表中间件在解决数据同步的聚合查询时,需要通过分库分表中间件代理服务查询每个库的记录,然后在内存中进行数据结果的聚合返回,在涉及数据量比较大并且需要进行排序分页的时候,性能堪忧;
4、历史数据迁移风险高
利用现有技术对数据库架构进行升级改造,基本都涉及到对历史数据的迁移,但是这种迁移的风险高,难度大。
发明内容
有鉴于此,本发明提供一种分布式数据库同步处理的方法和装置,能够实现将新增的业务代码与现有的业务代码解耦,从而实现高性能的数据同步处理以及聚合查询。
为实现上述目的,根据本发明的一个方面,提供了一种分布式数据库同步处理的方法。
一种分布式数据库同步处理的方法,多个业务系统独立地操作所述数据库,每个业务系统对应一个监听机构、一个数据变更日志、一个同步消息队列和一个消息消费者,所述方法包括:每个所述监听机构监听对应的业务系统的数据变更日志,并且当监听到所述数据变更日志发生变更时,根据该变更生成数据同步消息,并且把该数据同步消息置于对应的业务系统的同步消息队列;每个所述消息消费者从对应的业务系统的同步消息队列中获取数据同步消息,根据所述数据同步消息获得待同步数据,并且把所述待同步数据加载到搜索引擎。
可选地,所述搜索引擎是ElasticSearch。
可选地,每个所述监听机构监听对应的业务系统的数据变更日志之前,还包括:在数据库安装的时候开启日志写入功能;以及设置所述监听机构对所述数据库的访问权限。
可选地,所述数据同步消息包括:发生变更的数据表名、数据表主键、分库分表的字段信息及字段值。
可选地,根据所述数据同步消息获得待同步数据的步骤包括:判定所述数据同步消息的消息体报文是否有效;并且当有效时,根据所述消息体的数据表名获取数据同步处理逻辑,并且根据所述数据同步消息的消息体中的数据表主键查询所述待同步数据。
可选地,如果所述搜索引擎出现同步异常的情况,则通过插入数据库同步任务的方式,使得通过Java定时任务来异步执行所述数据信息的同步。
可选地,所述监听机构是基于Zookeeper实现的集群服务。
根据本发明的另一方面,提供了一种分布式数据库同步处理的装置。
一种分布式数据库同步处理的装置,多个业务系统独立地操作所述数据库,每个业务系统对应一个监听机构、一个数据变更日志、一个同步消息队列和一个消息消费者,所述装置包括:业务解耦模块,用于每个所述监听机构监听对应的业务系统的数据变更日志,并且当监听到所述数据变更日志发生变更时,根据该变更生成数据同步消息,并且把该数据同步消息置于对应的业务系统的同步消息队列;数据同步模块,用于每个消息消费者从对应的所述业务系统的同步消息队列中获取数据同步消息,根据所述数据同步消息获得待同步数据,并且把所述待同步数据加载到搜索引擎。
可选地,所述搜索引擎是ElasticSearch。
可选地,所述业务解耦模块在每个所述监听机构监听对应的业务系统的数据变更日志之前,还用于:在数据库安装的时候开启日志写入功能;以及设置所述监听机构对所述数据库的访问权限。
可选地,所述数据同步消息包括:发生变更的数据表名、数据表主键、分库分表的字段信息及字段值。
可选地,所述数据同步模块还用于:判定所述数据同步消息的消息体报文是否有效;并且当有效时,根据所述消息体的数据表名获取数据同步处理逻辑,并且根据所述数据同步消息的消息体中的数据表主键查询所述待同步数据。
可选地,如果所述搜索引擎出现同步异常的情况,则通过插入数据库同步任务的方式,使得通过Java定时任务来异步执行所述数据信息的同步。
可选地,所述监听机构是基于Zookeeper实现的集群服务。
根据本发明的又一方面,提供了一种分布式数据库同步处理的装置。
一种分布式数据库同步处理的装置,多个业务系统独立地操作所述数据库,每个业务系统对应一个监听机构、一个数据变更日志、一个同步消息队列和一个消息消费者,所述装置包括存储器和处理器,其中,所述存储器存储指令;所述处理器执行所述指令用于:每个所述监听机构监听对应的业务系统的数据变更日志,并且当监听到所述数据变更日志发生变更时,根据该变更生成数据同步消息,并且把该数据同步消息置于对应的业务系统的同步消息队列;每个所述消息消费者从对应的业务系统的同步消息队列中获取数据同步消息,根据所述数据同步消息获得待同步数据,并且把所述待同步数据加载到搜索引擎。
根据本发明的又一方面,提供了一种分布式数据库同步处理的电子设备。
一种分布式数据库同步处理的电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明所提供的分布式数据库同步处理的方法。
根据本发明的再一方面,提供了一种计算机可读介质。
一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明所提供的分布式数据库同步处理的方法。
根据本发明的技术方案,通过基于监听机构—日志解析中间件及消息队列实现支持多条业务线MySQL业务数据分布式存储和查询,可以支持多条业务线分库分表数据的聚合查询;降低了各项目团队数据同步开发工作量;数据迁移多机并发执行效率高,基于数据同步任务补漏,数据一致性高、风险可控。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的分布式数据库同步处理的方法的主要步骤示意图;
图2是根据本发明一个实施例的数据同步处理的系统的整体架构示意图;
图3是根据本发明一个实施例的监听机构处理流程示意图;
图4是根据本发明一个实施例的数据同步处理的过程示意图;
图5是根据本发明另一实施例的历史数据迁移的实现过程示意图;
图6是根据本发明一个实施例的分布式数据库同步处理的装置的主要模块示意图;
图7是根据本发明另一实施例的分布式数据库同步处理的装置的主要模块示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
为了实现本发明的目的,根据本发明的实施例,通过如下技术手段来解决有关的技术问题:
1、数据同步解耦,
根据MySQL的主从同步特性,通过订阅MySQL的binLog日志(二进制日志)完成数据同步,将数据同步功能完全从业务代码中解耦;
2、数据同步服务化,降低开发、运维成本,
基于监听MySQL的binLog日志变更,为每个业务系统提供可配置的独立监听服务,监听服务筛选需要进行数据同步的binLog日志,通过消息机制通知业务系统数据变更消息,由各业务系统订阅变更消息,即各业务系统从对应的消息队列中获取数据变更消息,并根据获取的数据变更消息完成数据同步;
3、解决分库分表中间件性能受限问题,
业务系统分库分表之后,对数据同步后的聚合查询可以依赖数据同步消息,把需要聚合查询的数据同步至如Elasticsearch(以下简称ES)、Solr等搜索引擎,生产上需要聚合查询的地方可以直接通过查询搜索引擎获取数据,通过搜索引擎可以摆脱数据库中间件的聚合查询性能受限问题;
4、历史数据迁移风险低
通过Java线程扫描待迁移的历史数据并发送数据同步消息,基于消息队列实现历史数据迁移,基于消息机制的数据库迁移可以为以后的数据库扩容提供便利,数据迁移可以多机并发执行,效率高、风险可控。
图1是根据本发明实施例的分布式数据库同步处理的方法的主要步骤示意图。本发明中,多个业务系统独立地操作所述数据库,每个业务系统对应一个监听机构、一个数据变更日志、一个同步消息队列和一个消息消费者。如图1所示,本发明的分布式数据库同步处理的方法主要包括如下的步骤S11和步骤S12。
步骤S11:每个监听机构监听对应的业务系统的数据变更日志,并且当监听到数据变更日志发生变更时,根据该变更生成数据同步消息,并且把该数据同步消息置于对应的业务系统的同步消息队列;
步骤S12:每个消息消费者从对应的业务系统的同步消息队列中获取数据同步消息,根据所述数据同步消息获得待同步数据,并且把所述待同步数据加载到搜索引擎。
其中,本发明的搜索引擎例如是ElasticSearch。
其中,每个所述监听机构监听对应的业务系统的数据变更日志之前,还可以:在数据库安装的时候开启日志写入功能;以及设置所述监听机构对所述数据库的访问权限。
本发明中,所述数据同步消息包括:发生变更的数据表名、数据表主键、分库分表的字段信息及字段值。
根据所述数据同步消息获得待同步数据的步骤具体可以包括:判定所述数据同步消息的消息体报文是否有效;并且当有效时,根据所述消息体的数据表名获取数据同步处理逻辑,并且根据所述数据同步消息的消息体中的数据表主键查询所述待同步数据。
本发明通过搜索引擎实现所述数据信息的同步处理,如果所述搜索引擎出现同步异常的情况,则通过插入数据库同步任务的方式,使得通过Java定时任务来异步执行所述数据信息的同步。
所述监听机构是基于Zookeeper实现的集群服务,从而可以解决日志解析中间件应用服务器的灾备问题。
图2是根据本发明一个实施例的数据同步处理的系统的整体架构示意图。如图2所示,每个应用程序app对应一个业务系统,其在运行过程中产生的数据保存在对应的多个主从数据库中。
根据本发明的实施例,通过日志解析中间件应用服务器实现监听机构来监听数据变更日志,并将对应业务系统的数据变更日志进行解析后生成消息队列。每个业务系统对应消费该业务系统的消息队列,从而完成该业务系统的数据同步。数据同步处理的操作可以包括:查询、修改、更新、删除等。最后,数据同步消息队列的消息消费者通过调用搜索引擎的应用程序编程接口API完成数据同步处理。另外,在数据同步到搜索引擎之后,还可以通过搜索引擎实现数据的聚合查询。其中,本发明中的消息队列可以为任意开源的消息中间件,例如ApacheActiveMQ、Apachekafka等。
下面将结合图3至图5详细介绍本发明的实施过程。
根据本发明的技术方案,将通过监听机构(日志解析中间件)监听对应的业务系统的数据库的数据变更日志。在进行日志监听前,需要完成以下配置:
1、MySQL服务binLog日志配置
基于数据库binLog日志解析中间件监听binLog数据变更日志。binLog日志解析中间件的原理是基于Mysql binLog技术,数据库服务器对数据的每一次变更都会记录详细的操作日志,这个日志文件被称作binlog。因此,为了监听数据变更日志,在数据库安装的时候要开启mysql的binLog写入功能。Mysql binlog日志有三种格式statement、mixed以及row,由于目前binLog日志解析中间件例如Otter、Canal等组件,它们对row模式的binLog日志支持比较好,因此,可设置各业务系统的MySQL的日志模式为row模式。另外,本领域技术人员可根据实际使用中的需要设置为其他的模式;
2、设置监听机构对数据库的访问权限
基于数据库安全性方面考虑,一般生产上的数据库只有应用服务器本身是可以访问的,其他非应用服务器的机器是没有权限访问对应的数据库的。因此,在搭建数据库binLog日志解析中间件应用服务器时,需要设置binLog日志解析中间件应用服务器对业务系统数据库的访问权限。可通过各应用系统为binLog日志解析中间件应用服务器申请独立的用户名、并授只读权限,将日志解析中间件应用服务器的Ip地址添加到数据库服务器的白名单中的方式来实现。
通过前述的配置,监听机构(binLog日志解析中间件)即可监听数据变更日志。由于监听机构与业务系统是一一对应的关系,监听机构只监听对应业务系统的数据变更日志。监听机构binLog日志解析中间件应用服务器用于维护各业务系统的生产库需要同步的数据库表信息,主要包括数据表名、数据表主键、以及分库分表的字段信息。binLog日志解析中间件在启动的时候将这些配置信息加载到Zookeeper集群,并在本地内存中缓存下来。
在本发明中监听机构binLog日志解析中间件应用服务器是最为关键的点。本发明中的监听机构是基于Zookeeper实现的集群服务,服务本身无单点故障问题,同时Zookeeper记录了binlog日志解析的位置点,当整个binLog日志解析中间件集群发生宕机等故障,再次重启之后binlog日志解析中间件依然可以重新开始解析,从而使binLog日志解析中间件具备良好的灾备机制。
其中,binLog日志解析中间件将监听到的数据变更日志以如下表1所示的形式进行保存。
表1
当binLog日志解析中间件监听到业务线数据变更之后,将通过消息机制,通知业务系统同步相应的数据,考虑到消息队列的数据量、业务线的解耦性,binLog日志解析中间件按应用拆分消息队列,不同的业务系统订阅不同的消息队列,为了让业务系统能够根据消息内容找到对应的同步数据,消息体中需要包含每个业务系统的数据表名、数据表主键、分库分表的拆分字段及字段值。通用消息体的设计如:{数据库名:"A_order",数据表名:"t_order",数据表主键:100000000,拆分字段1:值,拆分字段2:值}。其中,报文体中每个业务系统的数据表主键和拆分字段是通过如上的表1来进行维护的,具体的字段值是通过Mysql binLog日志解析到的,数据库名也是通过binLog解析到的,业务系统可以根据数据库名进行监控、排查某个数据库是否出现解析异常。其中,拆分字段可以包括多个,根据不同的拆分规则制定。例如:对于一个商品业务系统,可设置拆分字段1为颜色、拆分字段2为形状、拆分字段3为生产日期,等等。
下面将结合图3介绍本发明的监听机构处理流程示意图。图3是根据本发明一个实施例的监听机构处理流程示意图。如图3所示,监听机构binLog日志解析中间件在监听到数据变更日志后,分别抓取对应业务系统的binLog日志,并解析binLog日志,路由binLog日志来源,然后提取生成消息体需要的报文参数信息,组装成消息报文体并根据binLog日志来源分发给对应的业务系统应用程序。
通过以上对binlog日志的抓取→解析→提取信息→分发消息队列,对业务系统来说这些操作都是完全解耦的,业务系统只需要订阅数据同步消息队列开发的一个消息消费者即可,当业务系统拿到消息后,根据消息体的设计解析报文,业务系统即可根据报文信息路由到需要同步的数据信息。
在进行数据同步处理时,每个业务系统对应的消息队列的消息消费者通过调用例如ES的API完成数据同步搜索引擎。但是,在进行数据同步处理的过程中可能存在ES同步异常的情况,为了保证数据库同步查询的最终完成,在出现以上异常情况下,业务系统可通过插入数据库同步任务来异步完成数据同步处理。数据库同步任务是由Java定时任务负责异步执行的,该任务也是数据同步搜索引擎的补漏机制。
下面结合图4介绍本发明的数据同步处理过程,图4是根据本发明一个实施例的数据同步处理的过程示意图。如图4,业务系统数据同步消费者通过数据同步消息队列获取数据同步消息,然后解析获取的数据同步消息的消息体以获得数据同步信息。首先,判定数据同步消息的消息体报文是否有效,并且当有效时,根据消息体的数据表名获取数据同步处理逻辑,并且根据消息体的数据表主键路由字段查询需要同步的数据内容以执行数据的同步处理,最后将数据同步到搜索引擎上。如果数据同步搜索引擎执行任务失败,则通过插入数据同步任务的方式来异步完成数据同步处理。另外,在将业务系统的数据同步到搜索引擎后,还可以通过搜索引擎执行数据的聚合查询。
根据图2、图3、图4及相关介绍,即可实现通过数据库日志解析中间件和消息队列完成数据的同步处理。
图5是根据本发明另一实施例的历史数据迁移的实现过程示意图。对于需要升级改造的系统,对历史数据的迁移依然可以基于消息队列,利用任务扫描机制,扫描待迁移的历史数据表,组装消息体报文发送至消息队列。通过消息机制迁移历史数据可以多台机器并发执行,消费者执行迁移如果失败则插入数据迁移任务,该任务由Java定时任务负责异步执行,该任务是数据迁移的补漏机制,其保证了历史数据迁移的完整性。
如图5,生产数据库中的数据,通过数据迁移处理线程扫描订单表,并发送订单数据迁移搜索引擎消息,当消息发送成功后,即生成数据同步消息队列,订单数据同步消息消费者通过从该消息队列中获取同步消息,并通过订单数据同步消息消费者同步搜索引擎公共处理模块来执行数据同步,当同步搜索引擎执行成功时,即完成了数据迁移;当同步搜索引擎执行未成功时,将通过插入订单同步搜索引擎消息任务的方式实现异步处理数据迁移。
同样,在数据迁移处理线程扫描订单表,并发送订单数据迁移搜索引擎消息失败时,也将通过插入订单同步搜索引擎消息任务的方式实现异步处理数据迁移。
订单同步搜索引擎消息任务被创建后,Java定时任务将启动处理线程应用扫描任务来自动扫描订单同步搜索引擎消息任务,并由处理线程来执行,当数据同步处理线程处理成功后,任务结束,然后调用订单数据同步消息消费者同步搜索引擎公共处理模块执行数据迁移。
图6是根据本发明一个实施例的分布式数据库同步处理的装置的主要模块示意图。其中,多个业务系统独立地操作所述数据库,每个业务系统对应一个监听机构、一个数据变更日志、一个同步消息队列和一个消息消费者。如图6所示,本发明的分布式数据库同步处理的装置60主要包括业务解耦模块61和数据同步模块62。
业务解耦模块61用于每个所述监听机构监听对应的业务系统的数据变更日志,并且当监听到所述数据变更日志发生变更时,根据该变更生成数据同步消息,并且把该数据同步消息置于对应的业务系统的同步消息队列;数据同步模块62用于每个消息消费者从对应的所述业务系统的同步消息队列中获取数据同步消息,根据所述数据同步消息获得待同步数据,并且把所述待同步数据加载到搜索引擎。
其中,所述搜索引擎例如可以是ElasticSearch。
其中,业务解耦模块61在每个所述监听机构监听对应的业务系统的数据变更日志之前,还可以用于:在数据库安装的时候开启日志写入功能;以及设置所述监听机构对所述数据库的访问权限。
另外,所述数据同步消息包括:发生变更的数据表名、数据表主键、分库分表的字段信息及字段值。
数据同步模块62还可以用于:判定所述数据同步消息的消息体报文是否有效;并且当有效时,根据所述消息体的数据表名获取数据同步处理逻辑,并且根据所述数据同步消息的消息体中的数据表主键查询所述待同步数据。
根据本发明的技术方案,如果所述搜索引擎出现同步异常的情况,则通过插入数据库同步任务的方式,使得通过Java定时任务来异步执行所述数据信息的同步。
其中,为了达到灾备的效果,所述监听机构可以是基于Zookeeper实现的集群服务。
图7是根据本发明另一实施例的分布式数据库同步处理的装置的主要模块示意图。其中,多个业务系统独立地操作所述数据库,每个业务系统对应一个监听机构、一个数据变更日志、一个同步消息队列和一个消息消费者。如图7所示,本发明的分布式数据库同步处理的装置70主要包括存储器71和处理器72。
其中,存储器71存储指令;处理器72执行所述指令用于:每个所述监听机构监听对应的业务系统的数据变更日志,并且当监听到所述数据变更日志发生变更时,根据该变更生成数据同步消息,并且把该数据同步消息置于对应的业务系统的同步消息队列;每个所述消息消费者从对应的业务系统的同步消息队列中获取数据同步消息,根据所述数据同步消息获得待同步数据,并且把所述待同步数据加载到搜索引擎。
根据本发明实施例的技术方案,通过基于监听机构—日志解析中间件及消息队列实现支持多条业务线MySQL业务数据分布式存储和查询,可以支持多条业务线分库分表数据的聚合查询;降低了各项目团队数据同步开发工作量;数据迁移多机并发执行效率高,基于数据同步任务补漏,数据一致性高、风险可控。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (15)
1.一种分布式数据库同步处理的方法,其特征在于,多个业务系统独立地操作所述数据库,每个业务系统对应一个监听机构、一个数据变更日志、一个同步消息队列和一个消息消费者,所述方法包括:
每个所述监听机构监听对应的业务系统的数据变更日志,并且当监听到所述数据变更日志发生变更时,抓取对应的业务系统的数据变更日志并解析,路由数据变更日志的来源,并提取生成消息体需要的报文参数信息以根据该变更生成数据同步消息,并且根据所述数据变更日志的来源把该数据同步消息置于对应的业务系统的同步消息队列;
每个所述消息消费者从对应的业务系统的同步消息队列中获取数据同步消息,根据所述数据同步消息获得待同步数据,并且把所述待同步数据加载到搜索引擎;如果所述搜索引擎出现同步异常的情况,则通过插入数据库同步任务的方式,使得通过Java定时任务来异步执行数据信息的同步。
2.根据权利要求1所述的方法,其特征在于,所述搜索引擎是ElasticSearch。
3.根据权利要求1所述的方法,其特征在于,每个所述监听机构监听对应的业务系统的数据变更日志之前,还包括:
在数据库安装的时候开启日志写入功能;以及
设置所述监听机构对所述数据库的访问权限。
4.根据权利要求1所述的方法,其特征在于,所述数据同步消息包括:发生变更的数据表名、数据表主键、分库分表的字段信息及字段值。
5.根据权利要求1所述的方法,其特征在于,根据所述数据同步消息获得待同步数据的步骤包括:
判定所述数据同步消息的消息体报文是否有效;并且
当有效时,根据所述消息体的数据表名获取数据同步处理逻辑,并且根据所述数据同步消息的消息体中的数据表主键查询所述待同步数据。
6.根据权利要求1所述的方法,其特征在于,所述监听机构是基于Zookeeper实现的集群服务。
7.一种分布式数据库同步处理的装置,其特征在于,多个业务系统独立地操作所述数据库,每个业务系统对应一个监听机构、一个数据变更日志、一个同步消息队列和一个消息消费者,所述装置包括:
业务解耦模块,用于每个所述监听机构监听对应的业务系统的数据变更日志,并且当监听到所述数据变更日志发生变更时,抓取对应的业务系统的数据变更日志并解析,路由数据变更日志的来源,并提取生成消息体需要的报文参数信息以根据该变更生成数据同步消息,并且根据所述数据变更日志的来源把该数据同步消息置于对应的业务系统的同步消息队列;
数据同步模块,用于每个消息消费者从对应的所述业务系统的同步消息队列中获取数据同步消息,根据所述数据同步消息获得待同步数据,并且把所述待同步数据加载到搜索引擎;如果所述搜索引擎出现同步异常的情况,则通过插入数据库同步任务的方式,使得通过Java定时任务来异步执行数据信息的同步。
8.根据权利要求7所述的装置,其特征在于,所述搜索引擎是ElasticSearch。
9.根据权利要求7所述的装置,其特征在于,所述业务解耦模块在每个所述监听机构监听对应的业务系统的数据变更日志之前,还用于:
在数据库安装的时候开启日志写入功能;以及
设置所述监听机构对所述数据库的访问权限。
10.根据权利要求7所述的装置,其特征在于,所述数据同步消息包括:
发生变更的数据表名、数据表主键、分库分表的字段信息及字段值。
11.根据权利要求7所述的装置,其特征在于,所述数据同步模块还用于:
判定所述数据同步消息的消息体报文是否有效;并且
当有效时,根据所述消息体的数据表名获取数据同步处理逻辑,并且根据所述数据同步消息的消息体中的数据表主键查询所述待同步数据。
12.根据权利要求7所述的装置,其特征在于,所述监听机构是基于Zookeeper实现的集群服务。
13.一种分布式数据库同步处理的装置,其特征在于,多个业务系统独立地操作所述数据库,每个业务系统对应一个监听机构、一个数据变更日志、一个同步消息队列和一个消息消费者,所述装置包括存储器和处理器,其中,
所述存储器存储指令;
所述处理器执行所述指令用于:
每个所述监听机构监听对应的业务系统的数据变更日志,并且当监听到所述数据变更日志发生变更时,抓取对应的业务系统的数据变更日志并解析,路由数据变更日志的来源,并提取生成消息体需要的报文参数信息以根据该变更生成数据同步消息,并且根据所述数据变更日志的来源把该数据同步消息置于对应的业务系统的同步消息队列;
每个所述消息消费者从对应的业务系统的同步消息队列中获取数据同步消息,根据所述数据同步消息获得待同步数据,并且把所述待同步数据加载到搜索引擎;如果所述搜索引擎出现同步异常的情况,则通过插入数据库同步任务的方式,使得通过Java定时任务来异步执行数据信息的同步。
14.一种分布式数据库同步处理的电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6中任一所述的方法。
15.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-6中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610716743.8A CN107783975B (zh) | 2016-08-24 | 2016-08-24 | 分布式数据库同步处理的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610716743.8A CN107783975B (zh) | 2016-08-24 | 2016-08-24 | 分布式数据库同步处理的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107783975A CN107783975A (zh) | 2018-03-09 |
CN107783975B true CN107783975B (zh) | 2021-02-26 |
Family
ID=61388464
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610716743.8A Active CN107783975B (zh) | 2016-08-24 | 2016-08-24 | 分布式数据库同步处理的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107783975B (zh) |
Families Citing this family (78)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108491332A (zh) * | 2018-04-04 | 2018-09-04 | 浙江小泰科技有限公司 | 一种基于Redis的实时缓存更新方法和系统 |
CN108984583A (zh) * | 2018-05-17 | 2018-12-11 | 北京国电通网络技术有限公司 | 一种基于日志文件的搜索方法 |
CN110543512B (zh) * | 2018-05-29 | 2022-10-04 | 优信拍(北京)信息科技有限公司 | 一种信息同步方法,装置及系统 |
CN110543513B (zh) * | 2018-05-29 | 2024-03-15 | 金篆信科有限责任公司 | 分布式数据库增量数据同步方法、设备及存储介质 |
CN108763578B (zh) * | 2018-06-07 | 2023-03-10 | 腾讯科技(深圳)有限公司 | 一种索引文件更新的方法以及服务器 |
CN110597891B (zh) * | 2018-06-12 | 2022-06-21 | 武汉斗鱼网络科技有限公司 | MySQL聚合为PostgreSQL数据库的设备、系统、方法、存储介质 |
CN109241174B (zh) * | 2018-06-26 | 2021-04-16 | 东软集团股份有限公司 | 数据同步方法、装置、可读存储介质和电子设备 |
CN108920659B (zh) * | 2018-07-03 | 2022-06-07 | 广州唯品会信息科技有限公司 | 数据处理系统及其数据处理方法、计算机可读存储介质 |
CN110691112A (zh) * | 2018-07-06 | 2020-01-14 | 优信拍(北京)信息科技有限公司 | 一种数据同步方法,装置及系统 |
CN109086390B (zh) * | 2018-07-27 | 2022-03-25 | 北京中关村科金技术有限公司 | 一种实现数据一致性实时监控方法 |
CN110209526B (zh) * | 2018-08-14 | 2023-06-06 | 腾讯科技(深圳)有限公司 | 一种存储层同步系统、及存储介质 |
CN110895534B (zh) * | 2018-08-24 | 2024-09-20 | 北京京东尚科信息技术有限公司 | 一种数据拼接方法、装置、介质及电子设备 |
CN109446246A (zh) * | 2018-08-29 | 2019-03-08 | 星云海数字科技股份有限公司 | 一种实时数据化报表系统及生成方法 |
CN110928885B (zh) * | 2018-09-04 | 2023-05-16 | 三六零科技集团有限公司 | Mysql数据库的数据更新到Es数据库的方法及装置 |
CN109522361A (zh) * | 2018-09-27 | 2019-03-26 | 中国经济信息社有限公司 | 一种利用消息总线进行数据库实时同步的方法及系统 |
CN109582731A (zh) * | 2018-10-18 | 2019-04-05 | 恒峰信息技术有限公司 | 一种数据实时同步方法及系统 |
CN109739929B (zh) * | 2018-12-18 | 2021-03-16 | 中国人民财产保险股份有限公司 | 数据同步方法、装置及系统 |
CN109450936A (zh) * | 2018-12-21 | 2019-03-08 | 武汉长江通信智联技术有限公司 | 一种基于Kafka的异构通信协议的适配方法及装置 |
CN109829003A (zh) * | 2018-12-25 | 2019-05-31 | 北京市天元网络技术股份有限公司 | 数据库备份方法及装置 |
CN109815028B (zh) * | 2018-12-27 | 2022-02-08 | 汉海信息技术(上海)有限公司 | 数据同步的系统、方法、装置和计算机存储介质 |
CN109885617A (zh) * | 2019-01-29 | 2019-06-14 | 中国工商银行股份有限公司 | 分布式异构数据库系统的数据同步方法及装置 |
CN111552487B (zh) * | 2019-02-11 | 2022-07-05 | 福建省天奕网络科技有限公司 | H5跨引擎客户端本地数据代理方法、存储介质 |
CN111752939A (zh) * | 2019-03-28 | 2020-10-09 | 北京京东尚科信息技术有限公司 | 用于多个系统的数据处理方法、装置、计算机系统、介质 |
CN110069670A (zh) * | 2019-04-30 | 2019-07-30 | 深圳前海微众银行股份有限公司 | 数据归集方法、装置、设备及计算机可读存储介质 |
CN110209650B (zh) * | 2019-05-05 | 2021-06-29 | 苏宁易购集团股份有限公司 | 数据规整迁移方法、装置、计算机设备和存储介质 |
CN110134648A (zh) * | 2019-05-22 | 2019-08-16 | 中国联合网络通信集团有限公司 | 日志处理方法、装置、设备、系统及计算机可读存储介质 |
CN112115163A (zh) * | 2019-06-19 | 2020-12-22 | 北京京东尚科信息技术有限公司 | 一种数据聚合方法、装置、存储介质及电子设备 |
CN110502572A (zh) * | 2019-06-26 | 2019-11-26 | 中电万维信息技术有限责任公司 | 一种数据同步的方法及服务器 |
CN112307037B (zh) * | 2019-07-26 | 2023-09-22 | 北京京东振世信息技术有限公司 | 一种数据同步方法和装置 |
CN110413677A (zh) * | 2019-07-30 | 2019-11-05 | 无锡柠檬科技服务有限公司 | 一种支持并发应用的分布式数据同步方法和系统 |
CN110427426A (zh) * | 2019-08-02 | 2019-11-08 | 中国工商银行股份有限公司 | 一种数据同步处理方法及装置 |
CN110489490B (zh) * | 2019-08-23 | 2022-11-29 | 上海新炬网络信息技术股份有限公司 | 基于分布式数据库的数据存储和查询方法 |
CN110737720A (zh) * | 2019-09-06 | 2020-01-31 | 苏宁云计算有限公司 | 一种db2数据库数据同步方法、装置、系统 |
CN110647544A (zh) * | 2019-09-10 | 2020-01-03 | 四川新网银行股份有限公司 | 基于流数据的账务检核方法 |
CN110597914A (zh) * | 2019-09-18 | 2019-12-20 | 北京思维造物信息科技股份有限公司 | 数据传输系统、方法、装置及设备 |
CN112541718B (zh) * | 2019-09-20 | 2023-09-01 | 百度在线网络技术(北京)有限公司 | 物料处理方法和装置 |
CN110674220B (zh) * | 2019-09-25 | 2022-09-09 | 恩亿科(北京)数据科技有限公司 | 一种数据异构的方法、装置及设备 |
CN110852778B (zh) * | 2019-09-30 | 2021-03-26 | 口口相传(北京)网络技术有限公司 | 一种针对业务对象的数据处理方法及装置 |
CN111026727A (zh) * | 2019-10-24 | 2020-04-17 | 贝壳技术有限公司 | 基于日志文件的表维度检索数据同步方法、系统及装置 |
CN110971686B (zh) * | 2019-11-29 | 2022-03-08 | 湖南御家科技有限公司 | 一种支持高并发、高可用的电子商城客服系统 |
CN112419018B (zh) * | 2020-01-03 | 2022-11-18 | 上海哔哩哔哩科技有限公司 | 分布式环境下的通用数据对账方法、服务器及存储介质 |
CN113129162B (zh) * | 2020-01-16 | 2024-07-02 | 北京科东电力控制系统有限责任公司 | 一种智慧能源服务平台信息交互方法与装置 |
CN111339186B (zh) * | 2020-02-19 | 2022-09-30 | 平安科技(深圳)有限公司 | 工作流引擎数据同步方法、装置、介质及电子设备 |
CN111367692B (zh) * | 2020-03-09 | 2023-08-22 | 政采云有限公司 | 一种搜索引擎数据处理方法、装置、电子设备及介质 |
CN111414363B (zh) * | 2020-03-13 | 2023-04-14 | 上海银赛计算机科技有限公司 | 适用于MySQL中客户数据的并行异构方法、系统、介质及设备 |
CN111506587A (zh) * | 2020-03-31 | 2020-08-07 | 紫光云技术有限公司 | 一种基于Redis的异地双活方法 |
CN111597160A (zh) * | 2020-04-21 | 2020-08-28 | 中国人民财产保险股份有限公司 | 分布式数据库系统、分布式数据处理方法和装置 |
CN111522805B (zh) * | 2020-04-23 | 2023-05-02 | 中国银行股份有限公司 | 分布式批量数据清理方法及系统 |
CN111611227B (zh) * | 2020-05-21 | 2023-07-28 | 浩云科技股份有限公司 | 一种自定义监听数据库变化产生自定义消息结构的方法及控制装置 |
CN111858747A (zh) * | 2020-05-29 | 2020-10-30 | 大数金科网络技术有限公司 | 将MySQL数据库同步到Elasticsearch的方法 |
CN111770145A (zh) * | 2020-06-17 | 2020-10-13 | 浙江申跃信息科技有限公司 | 一种基于日志解析的单向网络双边数据同步系统及方法 |
CN111737355B (zh) * | 2020-06-29 | 2023-06-23 | 广东粤财金融云科技股份有限公司 | 基于MongoDB元数据管理的异构数据源同步的方法及系统 |
CN111913853A (zh) * | 2020-08-14 | 2020-11-10 | 中消云(北京)物联网科技研究院有限公司 | 基于Canal的数据处理方法及装置 |
CN113760845A (zh) * | 2020-08-17 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 一种日志处理方法、系统、装置、客户端及存储介质 |
CN113743697B (zh) * | 2020-08-21 | 2024-08-20 | 西安京迅递供应链科技有限公司 | 一种风险告警方法和装置 |
CN112052227A (zh) * | 2020-09-25 | 2020-12-08 | 郑州阿帕斯数云信息科技有限公司 | 数据变更日志的处理方法、装置和电子设备 |
CN112162904B (zh) * | 2020-09-25 | 2024-06-18 | 同程网络科技股份有限公司 | 订单变更过程整合方法、提取方法、整合装置和提取装置 |
CN112182001A (zh) * | 2020-09-27 | 2021-01-05 | 浪潮云信息技术股份公司 | 数据库增量同步至动态es索引库的方法、装置和介质 |
CN112328615A (zh) * | 2020-11-16 | 2021-02-05 | 广州新居网家居科技有限公司 | 数据更新方法、装置、系统、服务器及存储介质 |
CN112527844A (zh) * | 2020-12-22 | 2021-03-19 | 北京明朝万达科技股份有限公司 | 数据处理方法及装置、数据库架构 |
CN113765984A (zh) * | 2021-01-04 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 一种数据推送方法和装置 |
CN113055484A (zh) * | 2021-03-19 | 2021-06-29 | 北京星汉博纳医药科技有限公司 | 一套通用的医药数据智能同步系统 |
CN112905707A (zh) * | 2021-03-31 | 2021-06-04 | 浙江太美医疗科技股份有限公司 | 关系数据库与搜索引擎的同步方法、装置和计算机存储介质 |
CN113095874B (zh) * | 2021-03-31 | 2024-06-21 | 北京沃东天骏信息技术有限公司 | 一种物料增量处理方法、装置、设备和存储介质 |
CN113111129B (zh) * | 2021-04-16 | 2023-05-23 | 挂号网(杭州)科技有限公司 | 数据同步方法、装置、设备及存储介质 |
CN113220707A (zh) * | 2021-04-26 | 2021-08-06 | 深圳市云网万店科技有限公司 | 实时合并多种业务指标数据的方法、装置和计算机设备 |
CN113157701A (zh) * | 2021-04-27 | 2021-07-23 | 中国工商银行股份有限公司 | 一种oracle数据库的双活机制部署方法及装置 |
CN113487340B (zh) * | 2021-05-24 | 2024-07-12 | 康键信息技术(深圳)有限公司 | 业务解耦处理方法、装置、设备及存储介质 |
CN113220791B (zh) * | 2021-06-03 | 2023-07-28 | 西安热工研究院有限公司 | 一种数据级联同步系统及方法 |
CN113364864B (zh) * | 2021-06-03 | 2022-09-30 | 上海微盟企业发展有限公司 | 一种服务器数据同步方法、系统及存储介质 |
CN113377791A (zh) * | 2021-06-10 | 2021-09-10 | 北京齐尔布莱特科技有限公司 | 一种数据处理方法、系统及计算设备 |
CN113505175B (zh) * | 2021-07-08 | 2024-09-13 | 浪潮云信息技术股份公司 | 一种基于消息队列实现MySQL增量数据同步的方法 |
CN113742356A (zh) * | 2021-08-17 | 2021-12-03 | 深圳Tcl新技术有限公司 | 数据同步方法、装置、存储介质及电子设备 |
CN113742043B (zh) * | 2021-08-31 | 2024-04-26 | 中企云链股份有限公司 | 一种服务器后端任务异步拆分方法 |
CN114860399B (zh) * | 2022-04-24 | 2024-08-06 | 北京合思信息技术有限公司 | 任务处理方法及装置 |
CN114860721A (zh) * | 2022-04-26 | 2022-08-05 | 北京沃东天骏信息技术有限公司 | 一种索引数据的构建方法和装置 |
CN115510101A (zh) * | 2022-09-13 | 2022-12-23 | 中电金信软件有限公司 | 数据处理方法及装置、电子设备及可读存储介质 |
CN116821245A (zh) * | 2023-07-05 | 2023-09-29 | 贝壳找房(北京)科技有限公司 | 分布式场景下数据聚合同步方法及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012018424A2 (en) * | 2010-07-27 | 2012-02-09 | Oracle International Corporation | Mysql database heterogeneous log based replication |
CN103780638A (zh) * | 2012-10-18 | 2014-05-07 | 腾讯科技(深圳)有限公司 | 数据同步方法及系统 |
CN103885986A (zh) * | 2012-12-21 | 2014-06-25 | 阿里巴巴集团控股有限公司 | 主备数据库同步的方法和装置 |
CN104346373A (zh) * | 2013-07-31 | 2015-02-11 | 华为技术有限公司 | 分区日志队列同步管理方法及设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104734946A (zh) * | 2015-04-09 | 2015-06-24 | 北京易掌云峰科技有限公司 | 一种多租户高并发的即时通讯云平台 |
-
2016
- 2016-08-24 CN CN201610716743.8A patent/CN107783975B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012018424A2 (en) * | 2010-07-27 | 2012-02-09 | Oracle International Corporation | Mysql database heterogeneous log based replication |
CN103780638A (zh) * | 2012-10-18 | 2014-05-07 | 腾讯科技(深圳)有限公司 | 数据同步方法及系统 |
CN103885986A (zh) * | 2012-12-21 | 2014-06-25 | 阿里巴巴集团控股有限公司 | 主备数据库同步的方法和装置 |
CN104346373A (zh) * | 2013-07-31 | 2015-02-11 | 华为技术有限公司 | 分区日志队列同步管理方法及设备 |
Non-Patent Citations (1)
Title |
---|
Elasticsearch环境搭建和river数据导入(四);Cao ChunHui;《http://xargin.com/es-river-4/》;20160309;第1-4页 * |
Also Published As
Publication number | Publication date |
---|---|
CN107783975A (zh) | 2018-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107783975B (zh) | 分布式数据库同步处理的方法和装置 | |
CN107958010B (zh) | 用于在线数据迁移的方法及系统 | |
CN108234170B (zh) | 一种服务器集群的监控方法和装置 | |
CN108874558B (zh) | 分布式事务的消息订阅方法、电子装置及可读存储介质 | |
US8190562B2 (en) | Linking framework for information technology management | |
CN111143382B (zh) | 数据处理方法、系统和计算机可读存储介质 | |
CN110795503A (zh) | 分布式存储系统的多集群数据同步方法及相关装置 | |
CN103019874B (zh) | 基于数据同步实现异常处理的方法及装置 | |
CN111324610A (zh) | 一种数据同步的方法及装置 | |
CN110750592B (zh) | 数据同步的方法、装置和终端设备 | |
US20170060561A1 (en) | Managing Software Version Upgrades in a Multiple Computer System Environment | |
CN112527310A (zh) | 多租户数据隔离方法、装置、计算机设备及存储介质 | |
CN110895488B (zh) | 任务调度方法及装置 | |
CN111538573A (zh) | 异步任务处理方法、装置及计算机可读存储介质 | |
EP2696297B1 (en) | System and method for generating information file based on parallel processing | |
CN115934855A (zh) | 一种全链路字段级血缘解析方法、系统、设备及存储介质 | |
CN113934792B (zh) | 分布式数据库的处理方法、装置、网络设备和存储介质 | |
CN105183591A (zh) | 一种高可用集群的实现方法及系统 | |
CN112015815A (zh) | 数据同步方法、装置及计算机可读存储介质 | |
CN114077518B (zh) | 数据快照方法、装置、设备及存储介质 | |
CN105373563B (zh) | 数据库切换方法及装置 | |
CN111651302A (zh) | 分布式数据库备份方法,装置及系统 | |
CN113468143A (zh) | 数据迁移方法、系统、计算设备及存储介质 | |
CN116842244A (zh) | 搜索引擎数据同步方法、系统、设备和存储介质 | |
CN117194147A (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 |