一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种数据同步方法、装置、电子设备及存储介质与流程

2021-12-04 01:47:00 来源:中国专利 TAG:
1.本发明涉及数据处理
技术领域
:,更具体的说,涉及一种数据同步方法、装置、电子设备及存储介质。
背景技术
::2.目前,业务系统一般用mysql数据库存储业务数据,在对业务数据(比如交易数据)进行查询时,一般使用redis内存数据库,在对业务数据进行检索时,一般使用elasticsearch等nosql数据库。由于存储业务数据的数据库与执行查询或检索等操作的数据库为不同的数据库,因此,面临着业务数据的来源端和使用端存在多种异构数据库及同构数据库间数据不同步的问题。3.因此,如何实现多种异构数据库及同构数据库间数据同步成为本领域技术人员亟需解决的技术问题。技术实现要素:4.有鉴于此,本发明公开一种数据同步方法、装置、电子设备及存储介质,以实现多种异构数据库及同构数据库间数据同步。5.一种数据同步方法,包括:6.伪造一个mysql从库,由所述mysql从库从mysql主库获取mysqlbinlog日志;7.对所述mysqlbinlog日志进行解析得到json增量日志数据;8.对所述json增量日志数据按照预设来源数据抽取规则进行过滤和归并得到json日志数据;9.将所述json日志数据写入对应的kafkatopic队列;10.按照预设目标数据同步规则订阅待同步kafkatopic队列;11.获取所述待同步kafkatopic队列存放的json日志数据作为目标json日志数据;12.将所述目标json日志数据写入mysql数据库或异构数据库中,实现数据同步。13.可选的,所述伪造一个mysql从库,由所述mysql从库从mysql主库获取mysqlbinlog日志,具体包括:14.伪造一个所述mysql从库;15.根据待解析的mysqlbinlog位置确定与所述mysql从库待建立连接的所述mysql主库;16.将所述mysql从库和所述mysql主库建立连接;17.通过所述mysql从库向所述mysql主库发送binlogdump指令;18.获取所述mysql主库响应所述binlogdump指令返回的所述mysqlbinlog日志。19.可选的,所述对所述mysqlbinlog日志进行解析得到json增量日志数据,具体包括:20.对所述mysqlbinlog日志采用mysqlbinlog协议进行解析,得到所述json增量日志数据。21.可选的,所述预设来源数据抽取规则至少包含来源表名和字段列表定义。22.可选的,所述对所述json增量日志数据按照预设来源数据抽取规则进行过滤和归并得到json日志数据,具体包括:23.对所述json增量日志数据按照所述预设来源数据抽取规则进行过滤,得到初始json日志数据;24.对各个所述初始json日志数据按照来源表名进行归并,得到所述json日志数据。25.可选的,所述kafkatopic队列中的topic以{来源数据库_表名}命名。26.一种数据同步装置,包括:27.第一获取单元,用于伪造一个mysql从库,由所述mysql从库从mysql主库获取mysqlbinlog日志;28.解析单元,用于对所述mysqlbinlog日志进行解析得到json增量日志数据;29.数据处理单元,用于对所述json增量日志数据按照预设来源数据抽取规则进行过滤和归并得到json日志数据;30.第一数据写入单元,用于将所述json日志数据写入对应的kafkatopic队列;31.订阅单元,用于按照预设目标数据同步规则订阅待同步kafkatopic队列;32.第二获取单元,用于获取所述待同步kafkatopic队列存放的json日志数据作为目标json日志数据;33.第二数据写入单元,用于将所述目标json日志数据写入mysql数据库或异构数据库中,实现数据同步。34.可选的,所述第一获取单元具体包括:35.伪造子单元,用于伪造一个所述mysql从库;36.确定子单元,用于根据待解析的mysqlbinlog位置确定与所述mysql从库待建立连接的所述mysql主库;37.连接建立子单元,用于将所述mysql从库和所述mysql主库建立连接;38.发送子单元,用于通过所述mysql从库向所述mysql主库发送binlogdump指令;39.获取子单元,用于获取所述mysql主库响应所述binlogdump指令返回的所述mysqlbinlog日志。40.可选的,所述解析单元具体用于:41.对所述mysqlbinlog日志采用mysqlbinlog协议进行解析,得到所述json增量日志数据。42.可选的,所述数据处理单元具体用于:43.对所述json增量日志数据按照所述预设来源数据抽取规则进行过滤,得到初始json日志数据;44.对各个所述初始json日志数据按照来源表名进行归并,得到所述json日志数据。45.一种电子设备,所述电子设备包括存储器和处理器;46.所述存储器用于存储至少一个指令;47.所述处理器用于执行所述至少一个指令以实现上述所述的数据同步方法。48.一种计算机可读存储介质,所述计算机可读存储介质存储至少一个指令,所述至少一个指令被处理器执行时实现上述所述的数据同步方法。49.从上述的技术方案可知,本发明公开了一种数据同步方法、装置、电子设备及存储介质,利用伪造的mysql从库从mysql主库获取mysqlbinlog日志,对mysqlbinlog日志进行解析得到json增量日志数据,对json增量日志数据按照预设来源数据抽取规则进行过滤和归并得到json日志数据,并写入对应的kafkatopic队列,按照预设目标数据同步规则订阅待同步kafkatopic队列,获取待同步kafkatopic队列存放的json日志数据并写入mysql数据库(即同构数据库)或mysql数据库的异构数据库中,实现数据同步。由此可见,本发明能够对mysqlbinlog日志进行完整解析,支持多个导出数据源,可以实现横线扩展发送到不同数据库进行业务数据处理,整个数据同步过程,无需修改业务系统程序,通过配置化方式即可实现同构数据库及异构数据库间的数据同步,易于实施,便于广泛推广。附图说明50.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据公开的附图获得其他的附图。51.图1为本发明实施例公开的一种数据同步方法流程图;52.图2为本发明实施例公开的一种伪造一个mysql从库,由mysql从库从mysql主库获取mysqlbinlog日志的方法流程图;53.图3为本发明实施例公开的一种数据同步装置的结构示意图;54.图4为本发明实施例公开的一种第一获取单元的结构示意图。具体实施方式55.需要说明的是,本发明提供的一种数据同步方法、装置、电子设备及存储介质可用于大数据领域或金融领域。上述仅为示例,并不对本发明提供的一种数据同步方法、装置、电子设备及存储介质的应用领域进行限定。56.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。57.本发明实施例公开了一种数据同步方法、装置、电子设备及存储介质,利用伪造的mysql从库从mysql主库获取mysqlbinlog日志,对mysqlbinlog日志进行解析得到json增量日志数据,对json增量日志数据按照预设来源数据抽取规则进行过滤和归并得到json日志数据,并写入对应的kafkatopic队列,按照预设目标数据同步规则订阅待同步kafkatopic队列,获取待同步kafkatopic队列存放的json日志数据并写入mysql数据库或mysql数据库的异构数据库中,实现数据同步。由此可见,本发明能够对mysqlbinlog日志进行完整解析,支持多个导出数据源,可以实现横线扩展发送到不同数据库进行业务数据处理,整个数据同步过程,无需修改业务系统程序,通过配置化方式即可实现同构数据库及异构数据库间的数据同步,易于实施,便于广泛推广。58.参见图1,本发明实施例公开的一种数据同步方法流程图,该方法包括:59.步骤s101、伪造一个mysql从库,由所述mysql从库从mysql主库获取mysqlbinlog日志;60.在实际应用中,数据分发中心可以伪造一个mysql从库(slave),mysql从库可以模拟slave协议和mysql主库进行交互。61.数据分发中心可以在多台服务器上部署。62.步骤s102、对所述mysqlbinlog日志进行解析得到json增量日志数据;63.在实际应用中,可以对mysqlbinlog日志采用mysqlbinlog协议进行解析,得到json增量日志数据。64.其中,json内容如下:65.{66.{"database":"db1","table":"a1","type":"insert","ts":18777879,"commit":true,"data":{"id":1,"name":"zhangsan","age":18,"address":"hsf.bj"}},67.{"database":"db1","table":"a1","type":"update","ts":18777879,"commit":true,"data":{"id":1,"age":17}}68.}69.步骤s103、对所述json增量日志数据按照预设来源数据抽取规则进行过滤和归并得到json日志数据;70.其中,预设来源数据抽取规则至少包含来源表名和字段列表定义,预设来源数据抽取规则还可以包括通配符。71.针对预设来源数据抽取规则,举例如下:[0072][0073]步骤s104、将所述json日志数据写入对应的kafkatopic队列;[0074]其中,将json日志数据写入对应的kafkatopic队列的目的是供数据同步模块使用。[0075]本实施例中,kafkatopic队列中的topic以{来源数据库_表名}命名。[0076]步骤s105、按照预设目标数据同步规则订阅待同步kafkatopic队列;[0077]本实施例中,预设目标数据同步规则用于对待同步kafkatopic队列进行相关配置。[0078]预设目标数据同步规则中包含订阅topic名。[0079]针对预设目标数据同步规则,举例如下:[0080][0081]步骤s106、获取所述待同步kafkatopic队列存放的json日志数据作为目标json日志数据;[0082]步骤s107、将所述目标json日志数据写入mysql数据库或异构数据库中,实现数据同步。[0083]其中,mysql数据库的异构数据库包括但不限于redis数据库和es数据库。[0084]综上可知,本发明公开了一种数据同步方法,利用伪造的mysql从库从mysql主库获取mysqlbinlog日志,对mysqlbinlog日志进行解析得到json增量日志数据,对json增量日志数据按照预设来源数据抽取规则进行过滤和归并得到json日志数据,并写入对应的kafkatopic队列,按照预设目标数据同步规则订阅待同步kafkatopic队列,获取待同步kafkatopic队列存放的json日志数据并写入mysql数据库或异构数据库中,实现数据同步。由此可见,本发明能够对mysqlbinlog日志进行完整解析,支持多个导出数据源,可以实现横线扩展发送到不同数据库进行业务数据处理,整个数据同步过程,无需修改业务系统程序,通过配置化方式即可实现同构数据库及异构数据库间的数据同步,易于实施,便于广泛推广。[0085]为进一步优化上述实施例,参见图2,本发明实施例公开的一种伪造一个mysql从库,由mysql从库从mysql主库获取mysqlbinlog日志的方法流程图,该方法包括:[0086]步骤s201、伪造一个mysql从库;[0087]步骤s202、根据待解析的mysqlbinlog位置确定与所述mysql从库待建立连接的所述mysql主库;[0088]其中,待解析的mysqlbinlog位置在数据分发中心处于初始状态时设置。[0089]步骤s203、将mysql从库和mysql主库建立连接;[0090]mysql从库通过向mysql主库发送连接请求与mysql主库建立连接。[0091]步骤s204、通过mysql从库向mysql主库发送binlogdump指令;[0092]当mysql从库和mysql主库建立连接后,mysql从库就可以向mysql主库发送binlogdump指令,该binlogdump指令中可以携带mysql从库的相关信息,比如,mysql从库的唯一标识。[0093]步骤s205、获取mysql主库响应binlogdump指令返回的mysqlbinlog日志。[0094]当mysql主库接收到mysql从库发送的binlogdump指令后,mysql主库就会将与binlogdump指令对应的mysqlbinlog日志返回至mysql从库。[0095]为进一步优化上述实施例,步骤s103具体可以包括:[0096]对json增量日志数据按照所述预设来源数据抽取规则进行过滤,得到初始json日志数据;[0097]对各个初始json日志数据按照来源表名进行归并,得到json日志数据。[0098]与上述方法实施例相对应,本发明还公开了一种数据同步装置。[0099]参见图3,本发明实施例公开的一种数据同步装置的结构示意图,该装置包括:[0100]第一获取单元301,用于伪造一个mysql从库,由所述mysql从库从mysql主库获取mysqlbinlog日志;[0101]在实际应用中,数据分发中心可以伪造一个mysql从库(slave),mysql从库可以模拟slave协议和mysql主库进行交互。[0102]数据分发中心可以在多台服务器上部署。[0103]解析单元302,用于对所述mysqlbinlog日志进行解析得到json增量日志数据;[0104]在实际应用中,可以对mysqlbinlog日志采用mysqlbinlog协议进行解析,得到json增量日志数据。[0105]其中,json内容如下:[0106]{[0107]{"database":"db1","table":"a1","type":"insert","ts":18777879,"commit":true,"data":{"id":1,"name":"zhangsan","age":18,"address":"hsf.bj"}},[0108]{"database":"db1","table":"a1","type":"update","ts":18777879,"commit":true,"data":{"id":1,"age":17}}[0109]}[0110]数据处理单元303,用于对所述json增量日志数据按照预设来源数据抽取规则进行过滤和归并得到json日志数据;[0111]其中,预设来源数据抽取规则至少包含来源表名和字段列表定义,预设来源数据抽取规则还可以包括通配符。[0112]针对预设来源数据抽取规则,举例如下:[0113][0114][0115]第一数据写入单元304,用于将所述json日志数据写入对应的kafkatopic队列;[0116]其中,将json日志数据写入对应的kafkatopic队列的目的是供数据同步模块使用。[0117]本实施例中,kafkatopic队列中的topic以{来源数据库_表名}命名。[0118]订阅单元305,用于按照预设目标数据同步规则订阅待同步kafkatopic队列;[0119]本实施例中,预设目标数据同步规则用于对待同步kafkatopic队列进行相关配置。[0120]预设目标数据同步规则中包含订阅topic名。[0121]针对预设目标数据同步规则,举例如下:[0122][0123][0124]第二获取单元306,用于获取所述待同步kafkatopic队列存放的json日志数据作为目标json日志数据;[0125]第二数据写入单元307,用于将所述目标json日志数据写入mysql数据库或异构数据库中,实现数据同步。[0126]其中,mysql数据库的异构数据库包括但不限于redis数据库和es数据库。[0127]综上可知,本发明公开了一种数据同步装置,利用伪造的mysql从库从mysql主库获取mysqlbinlog日志,对mysqlbinlog日志进行解析得到json增量日志数据,对json增量日志数据按照预设来源数据抽取规则进行过滤和归并得到json日志数据,并写入对应的kafkatopic队列,按照预设目标数据同步规则订阅待同步kafkatopic队列,获取待同步kafkatopic队列存放的json日志数据并写入mysql数据库或异构数据库中,实现数据同步。由此可见,本发明能够对mysqlbinlog日志进行完整解析,支持多个导出数据源,可以实现横线扩展发送到不同数据库进行业务数据处理,整个数据同步过程,无需修改业务系统程序,通过配置化方式即可实现同构数据库及异构数据库间的数据同步,易于实施,便于广泛推广。[0128]为进一步优化上述实施例,参见图4,本发明实施例公开的一种第一获取单元的结构示意图,第一获取单元包括:[0129]伪造子单元401,用于伪造一个所述mysql从库;[0130]确定子单元402,用于根据待解析的mysqlbinlog位置确定与所述mysql从库待建立连接的所述mysql主库;[0131]其中,待解析的mysqlbinlog位置在数据分发中心处于初始状态时设置。[0132]连接建立子单元403,用于将所述mysql从库和所述mysql主库建立连接;[0133]mysql从库通过向mysql主库发送连接请求与mysql主库建立连接。[0134]发送子单元404,用于通过所述mysql从库向所述mysql主库发送binlogdump指令;[0135]当mysql从库和mysql主库建立连接后,mysql从库就可以向mysql主库发送binlogdump指令,该binlogdump指令中可以携带mysql从库的相关信息,比如,mysql从库的唯一标识。[0136]获取子单元405,用于获取所述mysql主库响应所述binlogdump指令返回的所述mysqlbinlog日志。[0137]当mysql主库接收到mysql从库发送的binlogdump指令后,mysql主库就会将与binlogdump指令对应的mysqlbinlog日志返回至mysql从库。[0138]为进一步优化上述实施例,解析单元302具体用于:[0139]对所述mysqlbinlog日志采用mysqlbinlog协议进行解析,得到所述json增量日志数据。[0140]为进一步优化上述实施例,数据处理单元303具体用于:[0141]对所述json增量日志数据按照所述预设来源数据抽取规则进行过滤,得到初始json日志数据;[0142]对各个所述初始json日志数据按照来源表名进行归并,得到所述json日志数据。[0143]本发明还公开了一种电子设备,所述电子设备包括存储器和处理器;[0144]所述存储器用于存储至少一个指令;[0145]所述处理器用于执行所述至少一个指令以实现上述所述的数据同步方法。[0146]本发明还公开了一种计算机可读存储介质,所述计算机可读存储介质存储至少一个指令,所述至少一个指令被处理器执行时实现上述所述的数据同步方法。[0147]其中,电子设备和存储介质实现数据同步的过程可参见方法实施例对应部分,此处不再赘述。[0148]最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。[0149]本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。[0150]对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献