CN115878721A - 一种数据同步方法、装置、终端和计算机可读存储介质 - Google Patents
一种数据同步方法、装置、终端和计算机可读存储介质 Download PDFInfo
- Publication number
- CN115878721A CN115878721A CN202110932147.4A CN202110932147A CN115878721A CN 115878721 A CN115878721 A CN 115878721A CN 202110932147 A CN202110932147 A CN 202110932147A CN 115878721 A CN115878721 A CN 115878721A
- Authority
- CN
- China
- Prior art keywords
- data
- database
- synchronization
- target
- configuration information
- 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.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请属于数据库技术领域,主要提供了一种数据同步方法、装置、终端和计算机可读存储介质,通过在获取到增量日志数据之后,对所述增量日志数据进行解析,并基于解析结果以及数据库同步配置信息,生成与所述增量日志数据对应的数据库同步指令和缓存清除指令,接着,将所述数据同步指令和所述缓存清除指令发送给目标数据库,使得目标数据库根据数据同步指令进行数据库的数据同步时,还可以根据该缓存清除指令进行数据库的缓存清理,避免了缓存中的数据由于未进行同步更新,而出现用户数据获取失败的问题。
Description
技术领域
本申请属于数据库技术领域,尤其涉及一种数据同步方法、装置、终端和计算机可读存储介质。
背景技术
随着业务的不断发展,为保证业务系统的快速响应以及高可靠运行,数据库需要分布式部署在全球多个区域。其中,系统数据需要各区域保持一致,而业务数据需要视用户的服务区域而定。因此,需要在全球多个区域之间按不同策略对不同用户的不同数据进行高效准确的实时同步。
然而,目前的数据同步方法,在进行数据同步时,考虑到数据并发等因素,一般只会对数据库中的数据进行同步,而不会对数据库缓存中的数据进行同步,造成用户读取数据时,获取到的数据有可能不是最新的数据,造成数据获取失败。
发明内容
本申请提供一种数据同步方法、装置、终端和计算机可读存储介质,可以实现对数据库的缓存进行同步清理,避免了缓存中的数据由于未进行同步更新,而出现数据获取失败的问题。
本申请实施例第一方面提供一种数据同步方法,包括:
获取数据库同步配置信息;
获取增量日志数据;
对所述增量日志数据进行解析,基于解析结果以及所述数据库同步配置信息,生成与所述增量日志数据对应的数据库同步指令和缓存清除指令,并将所述数据同步指令和所述缓存清除指令发送给目标数据库,由所述目标数据库进行数据库数据同步和缓存清理。
本申请实施例第二方面提供一种数据同步装置,包括:
第一获取单元,用于获取数据库同步配置信息;
第二获取单元,用于获取增量日志数据;
同步单元,用于对所述增量日志数据进行解析,基于解析结果以及所述数据库同步配置信息,生成与所述增量日志数据对应的数据库同步指令和缓存清除指令,并将所述数据同步指令和所述缓存清除指令发送给目标数据库,由所述目标数据库进行数据库数据同步和缓存清理。
本申请实施例第三方面提供一种终端,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述计算机程序被处理器执行时实现上述第一方面所述的数据同步方法的步骤。
本申请实施例第四方面提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面所述的数据同步方法的步骤。
本申请实施例中,通过在获取到增量日志数据之后,对所述增量日志数据进行解析,并基于解析结果以及数据库同步配置信息,生成与所述增量日志数据对应的数据库同步指令和缓存清除指令,接着,将所述数据同步指令和所述缓存清除指令发送给目标数据库,使得目标数据库根据数据同步指令进行数据库的数据同步时,还可以根据该缓存清除指令进行数据库的缓存清理,避免了缓存中的数据由于未进行同步更新,而出现数据获取失败的问题。
附图说明
图1为本申请实施例提供的数据同步方法的实现流程示意图。
图2为本申请实施例提供的对增量日志数据进行判断的第一具体实现流程示意图。
图3为本申请实施例提供的对增量日志数据进行判断的第二具体实现流程示意图。
图4为本申请实施例提供的数据库同步配置信息的生成方式的具体实现流程示意图。
图5为本申请的实施例提供的数据同步装置的第一结构示意图。
图6为本申请的实施例提供的数据同步装置的第二结构示意图。
图7为本申请的实施例提供的终端的示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
随着业务的不断发展,为保证业务系统的快速响应以及高可靠运行,数据库需要分布式部署在全球多个区域。其中,系统数据需要各区域保持一致,而业务数据需要视用户的服务区域而定。
因此,如何在全球多个区域之间按不同策略对不同用户的不同数据进行高效准确的实时同步是一个需要解决的问题。
然而,目前的数据同步方法,考虑到数据并发等因素,一般只会对数据库中的数据进行同步,而不会对数据库缓存中的数据进行同步,造成用户读取数据时,获取到的数据有可能不是最新的数据,造成数据获取失败。
例如,阿里云开源数据同步工具otter,只支持数据库之间的数据同步,无法实现数据库缓存的同步,mysql的主从同步功能也同样无法实现数据库缓存的同步。
具体的,数据库缓存是一种提升数据访问效率的手段。业界最普遍的是使用redis来作缓存。
在不使用缓存时,用户在访问数据库中的数据时,是直接查询数据库mysql,而mysql读写需要涉及到磁盘io(读写磁盘),效率非常低,当存在大量的用户访问的时候会出现性能瓶颈,甚至出现数据库宕机,系统崩溃的情况。读磁盘慢,相对的如果数据都在内存中,不需要读取磁盘,访问效率就可以得到巨大的提升。
redis是一个内存数据库,数据都是存储在内存中的,通过将mysql数据库的热点数据放到redis中,当用户访问数据库中的数据时,首先查询的是redis中是否存在需要访问的数据。这种处理方式一方面可以极大的提升性能,另一方面可以减少mysql数据库的压力,提升系统稳定性。
其中,redis的缓存可以看成是一个很大的Map数据结构,即{key:value}这种数据结构。这种结构的查询方式为使用key查询value。其中,key是与数据库中数据表的每一条记录是对应的。
例如,A区域的数据库1中存在一个数据表:table_product,则可以先确定key的一个前缀为product,其次,数据表中每条记录都需要有一个唯一id标识,将前缀和id合并起来就能唯一的标识数据库中某个表中的某条记录的key:product:{id}。value即为这条记录的完整数据。
当用户访问数据库中的数据时,例如,要访问table_product中id为100的数据时,首先基于该id拼接出缓存的key:product:100,再基于这个key值查询redis缓存数据,若发现缓存没有数据,再到数据库中查询id为100的数据,查询出来之后将这个数据写到缓存中,即,在redis中把product:100这个key写入了具体的数据,下次要再来访问id为100的数据就能拿到缓存中的数据直接返回给用户。
而当用户对id为100这条记录进行修改时,会对A区域的数据库1的表table_product中id为100的数据进行修改,并且,删除A区域的数据库缓存,此时,还会利用同步工具otter或者mysql的主从同步功能将该数据同步到B区域的数据库2,但是B区域的数据库缓存没有同步清理,进而造成缓存与数据库的数据不一致,用户从B区域读取数据时,读取到的是B区域的数据库缓存中的数据,出现数据获取失败。
基于此,本申请提供一种数据同步方法、装置、终端和计算机可读存储介质,可以实现数据库的缓存同步清理,避免缓存中的数据由于未进行同步更新,而使得用户数据获取失败的问题。
如图1所示为本申请实施例提供的一种数据同步方法,该方法可以应用于数据管理服务器等终端,由该终端的数据同步装置执行。
具体的,本申请提供的数据同步方法可以包括步骤101至步骤103,详述如下:
步骤101,获取数据库同步配置信息。
可选的,在本申请的一些实施方式中,上述数据库同步配置信息可以包括预设日志类型、需要同步的目标数据库标识、目标数据表标识、目标同步方向等配置信息。
基于上述数据库同步配置信息,可以确定各个数据库的数据发生变更时,是否需要进行数据同步,以及需要与哪些数据库进行数据同步。
步骤102,获取增量日志数据。
本申请实施例中,上述增量日志数据可以采用以下方式获取:利用增量日志获取工具,向数据库请求数据库变动日志(即,增量日志数据binlog)得到。
可选的,上述增量日志数据可以记录有数据库每个表每次新增、修改、删除等操作的完整信息,该信息可以作为过滤条件的输入。
步骤103,对增量日志数据进行解析,基于解析结果以及数据库同步配置信息,生成与增量日志数据对应的数据库同步指令和缓存清除指令,并将数据同步指令和缓存清除指令发送给目标数据库,由目标数据库进行数据库数据同步和缓存清理。
上述解析结果可以是指增量日志数据中的每个字段的值。
本申请通过基于数据库同步配置信息对该解析结果进行处理,生成与增量日志数据对应的数据库同步指令和缓存清除指令,接着,将该数据同步指令和缓存清除指令发送给目标数据库,使得目标数据库根据数据同步指令进行数据库的数据同步时,还可以根据该缓存清除指令进行数据库的缓存清理,避免了缓存中的数据由于未进行同步更新,而出现用户数据获取失败的问题。
由于目前的mysql的主从同步功能虽然能够支持数据双向的同步机制,但是,无法支持按需同步数据库数据,只能严格按照数据库增量日志binlog进行数据同步,保证数据库数据一致。
为了实现数据的按需同步,可选的,在本申请的一些实施方式中,上述步骤103之前,可以先判断增量日志数据是否为需要执行数据同步操作的日志数据,接着,在增量日志数据为需要执行数据同步操作的日志数据时,基于解析结果以及数据库同步配置信息,生成与增量日志数据对应的数据库同步指令和缓存清除指令,并将数据同步指令和缓存清除指令发送给目标数据库,由目标数据库进行数据库数据同步和缓存清理。
可选的,如图2所示,上述判断增量日志数据是否为需要执行数据同步操作的日志数据,可以包括:步骤201至步骤202。
步骤201,判断增量日志数据对应的日志类型是否为预设日志类型。
步骤202,若增量日志数据对应的日志类型为预设日志类型,则确定增量日志数据为不需要执行数据同步操作的日志数据。
具体的,上述预设日志类型可以是指不需要执行数据同步操作的日志数据的类型。
例如,在本申请的一些实施方式中,上述预设日志类型可以包括:表结构修改日志。
由于表结构修改日志不涉及数据改动,并且由于账号权限的原因,不能做表结构同步,因此,对于当上述增量日志数据为表结构修改日志数据时,则可以确定该增量日志数据为不需要执行数据同步操作的日志数据。
需要说明的是,上述仅仅是对预设日志类型进行举例说明,不表示为对本申请保护范围的限制,可以理解的是,在本申请的其他实施方式中,还可以根据用户的需求设置其他的预设日志类型。
可选的,如图3所示,上述判断增量日志数据是否为需要执行数据同步操作的日志数据,还可以包括:步骤301至步骤302。
步骤301,对增量日志数据进行解析,判断出现数据更新的数据对应的数据库标识是否包含在目标数据库标识中、数据表标识是否包含在目标数据表标识中、数据表记录标识是否包含在目标数据表记录标识中,以及数据同步方向是否包含在目标同步方向中。
步骤302,若判断结果为是,则确定增量日志数据为需要执行数据同步操作的日志数据。
本申请实施例中,上述目标数据库标识是指需要进行数据同步的数据库的标识,例如,数据库1与数据库2为需要进行数据同步的数据库时,则数据库1与数据库2可以均作为上述目标数据库标识配置在数据库同步配置信息中。
又例如,数据库1中的数据表table_product与数据库2中的数据表table_product2为需要进行数据同步的数据表时,则数据表table_product与数据表table_product2可以均作为上述目标数据表标识配置在数据库同步配置信息中。
又例如,数据库1的数据表table_product中数据表记录标识(id)为100的记录与数据库2的数据表table_product2中数据表记录标识(id)为100的记录为需要进行数据同步的记录时,则数据表table_product中数据表记录标识100与数据表table_product2中数据表记录标识100可以均作为上述目标数据表记录标识配置在数据库同步配置信息中。
即,上述目标数据库标识、上述目标数据表标识以及上述目标数据表记录标识为需要进行数据同步的数据库的标识、需要进行数据同步的数据表的标识,以及需要进行数据同步的数据表中的各个记录的标识。
另外,由于数据库的数据同步可以是有方向的,即,可以是单向同步,也可以是双向同步,因此,上述目标同步方向可以是指需要进行数据同步的各个数据库和数据表对应的同步方向。
例如,数据库3的数据发生数据变更时,需要同步到数据库4,而数据库4的数据发生数据变更时,不需要同步到数据库3,则数据库3与数据库4为需要进行单向同步的数据库,并且,同步方向为数据库3的数据同步到数据库4。
本申请实施例中,进行数据库数据的更新(即,数据新增、修改、删除等操作)时,当出现数据更新的数据对应的数据库标识未包含在目标数据库标识中,或者,出现数据更新的数据对应的数据表标识未包含在目标数据表标识中,或者,出现数据更新的数据对应的数据表记录标识未包含在目标数据表记录标识中,或者,出现数据更新的数据对应的数据库和数据表的数据同步方向不包含在目标同步方向时,表示该出现更新的数据不需要进行数据同步。
当出现数据更新的数据对应的数据库标识包含在目标数据库标识中、数据表标识包含在目标数据表标识中、数据表记录标识包含在目标数据表记录标识中,以及数据同步方向包含在目标同步方向中时,表示该出现更新的数据需要进行数据同步。
需要说明的是,在本申请实施例中,上述图2和图3所示的两种判断方式可以任选其一,进行增量日志数据是否为需要执行数据同步操作的日志数据的判断,也可以两者叠加使用,本申请对此不做限制。
还需要说明的是,上述数据库同步配置信息为根据用户需求进行配置的配置信息,因此,本申请通过在上述步骤103之前,先基于数据库同步配置信息判断增量日志数据是否为需要执行数据同步操作的日志数据,然后,在增量日志数据为需要执行数据同步操作的日志数据时,再基于解析结果以及数据库同步配置信息对目标数据库进行数据库数据同步和缓存清理,实现了数据的按需同步。
可选的,在本申请的一些实施方式中,上述数据库同步配置信息还可以包括:同步key模板表;通过根据该同步key模板表检查数据库同步配置信息中配置的目标数据库标识、目标数据表标识、目标数据表记录标识和目标同步方向是否存在遗漏。
具体的,由于key为数据表标识与数据表中每一条记录的标识组合得到,因此,通过将同步key模板表对数据库同步配置信息中配置的目标数据库标识、目标数据表标识、目标数据表记录标识和目标同步方向进行检查,可以判断出该数据库同步配置信息是否能够生成该同步key模板表中的每个key,并将无法生成的key对应的目标数据库标识、目标数据表标识、目标数据表记录标识和目标同步方向确定为存在遗漏的目标数据库标识、目标数据表标识、目标数据表记录标识和目标同步方向,对数据库同步配置信息进行更新,使得该数据库同步配置信息是否能够生成的key与该同步key模板表中的key一致,实现对数据库同步配置信息的维护。
可选的,在本申请的一些实施方式中,如图4所示,上述数据库同步配置信息可以采用以下步骤401至步骤402的方式生成。
步骤401,获取数据库维护字典表;
本申请实施例中,上述数据库维护字典表为数据维护人员人工制定的字典表,其包含了各个数据库的数据发生变更时,是否需要进行数据同步,以及需要与哪些数据库进行数据同步的信息。
步骤402,基于模板引擎和数据库维护字典表生成数据库同步配置信息。
本申请实施例中,上述模板引擎可以采用lay-ui,spring boot,FreeMarker等模板引擎实现。
本申请通过将上述数据库维护字典表中的内容导入模板引擎,实现一键生成上述数据库同步配置信息,提高了数据同步的运维效率。
例如,在一个实际应用中,线上需要同步的数据表有一百多个,需要同步的数据库有四个,一个数据库需要和另外三个数据库进行双向同步配,则线上需要正式配置12个同步通道,意味着需要单独配置一千两百次,工作量巨大,容易出错,配置完之后,后续版本迭代可能需要进行修改,修改的风险也比较大。
本申请通过将上述数据库维护字典表中的内容导入模板引擎,实现一键生成上述数据库同步配置信息,无需单独配置一千两百次,极大地提高了数据同步的运维效率,解决了数据同步配置繁琐,工作量大,维护难,易出错的问题。
可选的,在本申请的一些实施方式中,在生成数据库同步配置信息之后,还可以将数据库维护字典表与数据库同步配置信息中的目标数据库标识、目标数据表标识、目标同步方向进行比对,并根据比对结果对数据库同步配置信息进行更新,避免数据库同步配置信息出现缺漏,实现对数据库同步配置信息的维护。
在一个具体应用中,如图5所示,为本申请实施例提供的终端的数据同步装置的一种结构示意图,该数据同步装置可以用于实现上述各个数据同步方法的步骤。并且,该数据同步装置可以借助阿里云开源数据同步工具otter,实现双向同步、支持回环控制特性,支持跨平台之间进行数据同步,按需同步数据库数据、按需同步业务缓存、按需同步文件管理数据以及快速配置数据库配置信息等功能。
具体的,目前的数据同步的实现包含以下几种方式:采用mysql自带的主从同步功能、阿里云的dts功能以及canal+kafka消息投递机制。
其中,mysql的主从同步功能虽然能够支持数据双向的同步机制,但是,对于跨平台同步时,需要将数据库连接直接暴露到外网,容易出现数据安全性的问题,另外,mysql的主从同步功能无法支持按需同步数据库数据和缓存清理,只能严格按照数据库增量日志binlog进行数据同步,保证数据库数据一致。
阿里云的dts功能强大,能够满足按需同步数据库数据和缓存清理,但dts只支持阿里云的生态,难以跨平台互通。
canal+kafka消息投递机制,能够支持按需同步数据库数据和缓存清理,但是,这个方案难以解决binlog回环同步的问题,也就是说,canal+kafka消息投递机制只适合做简单的单方向同步,不适用于复杂的双向同步场景。
基于此,本申请通过借助阿里云开源数据同步工具otter能够实现双向同步、支持跨平台之间数据同步、支持回环控制的特性,在otter的基础上,拓展集成消息队列、同步服务、快速配置运维工具,进而实现双向同步、支持回环控制特性,支持跨平台之间进行数据同步,按需同步数据库数据、按需同步业务缓存以及快速配置数据库配置信息等功能。
下面对数据同步装置各个组件的功能进行描述。需要说明是,此处仅仅是对数据同步装置的结构进行举例说明,在本申请的一些实施方式中,还可以包括更多或更少的组件。
增量日志获取工具51,用于获取各个数据库的增量日志数据binlog,其配置的binlog模式可以为row模式,使得binlog可以解析出数据表中每一个有变动的记录的完整信息(每个字段的值都能获取到)。该增量日志获取工具可以采用Canal、Data Bus等组件实现,本申请对此不做限制。
控制中心52,用于提供可视化界面,支持便捷地生成上述数据库同步配置信息并推送到所有同步节点,该数据库同步配置信息可以存储与配置信息数据库57中。该控制中心,接受同步节点上报的状态信息,实时进行数据分析并显示当前同步进度、同步效率等统计数值。同时,支持同步节点异常监控,可以在界面中直观显示同步节点的异常日志,或者,配置邮件推送到指定负责人邮箱。
同步节点53,可以是一个jvm服务(java程序),可在节点协调器的调度下实现分布式多节点协同工作,同步节点之间支持rpc(Remote Procedure Call,远程过程调用)通信,支持负载均衡。其主要用于解析上述增量日志数据,并且按照控制中心配置的数据库同步配置信息进行数据加载过滤,转换,最终生成与增量日志数据对应的sql语句的形式的数据库同步指令和缓存清除指令del key发送到目标数据库中,由目标数据库进行数据库数据同步和缓存清理。其中,该目标数据库是指与增量日志数据对应的需要进行数据同步的一个或多个数据库。
例如,数据库3的数据发生数据变更时,需要同步到数据库4,则数据库4即为数据库3的增量日志数据对应的目标数据库。
节点协调器54,用于同步各个同步节点的运行状态,作为同步节点之间的服务发现组件,在同步节点阻塞时触发事件通知控制中心和其他同步节点。该节点协调器可以采用zookeeper、redis,nacos等组件实现。
消息队列55,支持简易的发布订阅模式,作为缓存同步清理的核心组件。可以采用rabbitmq、kafka、rocket-mq等组件实现,其可以集成到同步节点中,实现跨环境缓存清理,避免出现缓存与数据库不一致的问题。
具体的,otter同步节点可以是一个war包,在部署完会生成相关文件夹,如lib文件夹,直接将消息队列rabbitmq的jar包放到该lib文件夹下,让同步节点在启动时能够加载到该jar包,然后,将编写好的用于实现发消息的模板代码打包成jar包,也放到lib文件夹下面,使得同步节点在生成缓存清除指令时,能够调用到这个模板。通过这两个jar包的注入,给同步节点提供了将缓存清除指令发送给目标数据库的同步服务的能力,使得同步服务58在接收到缓存清除指令时,删除目标数据库中相应的缓存。
其中,上述发消息的模板代码即为发消息通用的代码,比如连接消息队列rabbitmq、组装消息体、发送消息等通用的代码。jar包可以是已经写好的一些java类,然后将这些类进行打包,引入至war包部署生成的相关文件夹中,就可以直接使用这些jar包中的类和属性以及方法。
快速配置运维工具56,用于获取数据库维护字典表;基于模板引擎和数据库维护字典表生成数据库同步配置信息。并且,该数据库同步配置信息可以包括同步key模板表、目标数据库标识、目标数据表标识、目标同步方向;该快速配置运维工具,还用于根据同步key模板表检查数据库同步配置信息中配置的目标数据库标识、目标数据表标识、目标数据表记录标识和目标同步方向是否存在遗漏;以及,将数据库维护字典表与数据库同步配置信息中的目标数据库标识、目标数据表标识、目标同步方向进行比对;根据比对结果对数据库同步配置信息进行更新。
本申请实施例中,上述目标数据库在进行数据库数据同步和缓存清理之后,还通过将数据同步和缓存清理结果反馈给控制中心,当数据同步和缓存清理出现异常时,将同步节点挂起,并记录异常的位点,将详细的异常相关信息都上报到控制中心进行记录,便于维护人员进行维护。
本申请通过在otter原有功能的基础上对otter进行拓展,实现了对数据库中的数据的同步以及缓存清理,同时,还实现了快速配置数据库同步配置信息,支持一键配置数据库同步配置信息,数据库同步配置信息的检查,缓存是否遗漏配置的检查功能。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为根据本发明,某些步骤可以采用其它顺序进行。
如图6所示,为本申请实施例提供的数据同步装置的另一结构示意图,该数据同步装置600可以包括:第一获取单元601、第二获取单元602和同步单元603。
第一获取单元601,用于获取数据库同步配置信息;
第二获取单元602,用于获取增量日志数据;
同步单元603,用于对增量日志数据进行解析,基于解析结果以及数据库同步配置信息,生成与增量日志数据对应的数据库同步指令和缓存清除指令,并将数据同步指令和缓存清除指令发送给目标数据库,由目标数据库进行数据库数据同步和缓存清理。
可选的,在本申请的一些实施方式中,同步单元603,还用于:
在生成与增量日志数据对应的数据库同步指令和缓存清除指令之前,判断增量日志数据是否为需要执行数据同步操作的日志数据;
在增量日志数据为需要执行数据同步操作的日志数据时,基于解析结果以及数据库同步配置信息,生成与增量日志数据对应的数据库同步指令和缓存清除指令,并将数据同步指令和缓存清除指令发送给目标数据库,由目标数据库进行数据库数据同步和缓存清理。
可选的,在本申请的一些实施方式中,数据库同步配置信息包括不需要执行数据同步操作的预设日志类型,同步单元603,还用于:
判断增量日志数据对应的日志类型是否为预设日志类型;
若增量日志数据对应的日志类型为预设日志类型,则确定增量日志数据为不需要执行数据同步操作的日志数据。
可选的,在本申请的一些实施方式中,数据库同步配置信息包括需要同步的目标数据库标识、目标数据表标识、目标数据表记录标识和目标同步方向;同步单元603,还用于:
对增量日志数据进行解析,判断出现数据更新的数据对应的数据库标识是否包含在目标数据库标识中、数据表标识是否包含在目标数据表标识中、数据表记录标识是否包含在目标数据表记录标识中,以及数据同步方向是否包含在目标同步方向中;
若判断结果为是,则确定增量日志数据为需要执行数据同步操作的日志数据。
可选的,在本申请的一些实施方式中,数据库同步配置信息还包括:同步key模板表;同步单元603,还用于:
根据同步key模板表检查数据库同步配置信息中配置的目标数据库标识、目标数据表标识、目标数据表记录标识和目标同步方向是否存在遗漏。
可选的,在本申请的一些实施方式中,数据库同步配置信息采用以下方式生成:
获取数据库维护字典表;
基于模板引擎和数据库维护字典表生成数据库同步配置信息。
可选的,在本申请的一些实施方式中,同步单元603,还用于:
在基于模板引擎和数据库维护字典表生成数据库同步配置信息之后,将数据库维护字典表与数据库同步配置信息中的目标数据库标识、目标数据表标识、目标同步方向进行比对;
根据比对结果对数据库同步配置信息进行更新。
需要说明的是,为描述的方便和简洁,上述描述的数据同步装置的具体工作过程,可以参考上述图1至图5中数据同步方法的描述,在此不再赘述。并且,还需要说明的是,上述各个实施方式可以进行相互组合,得到多种不同的实施方式,均属于本申请的保护范围。
如图7所示,本申请实施例还提供一种终端。该终端可以配置有上述各个实施方式的数据同步装置的终端;或者,上述终端还可以为用于实现上述各个数据同步方法的终端。
如图7所示,上述终端可以包括:处理器70、存储器71以及存储在存储器71中并可在处理器70上运行的计算机程序72。处理器70执行计算机程序72时实现上述各个数据同步方法实施例中的步骤,例如,图1所示的步骤101至步骤103。
所称处理器70可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器,也可以是任何常规的处理器等。
存储器71可以是终端7的内部存储单元,例如,硬盘或内存。存储器71也可以是用于终端7的外部存储设备,例如,终端7上配备的插接式硬盘,智能存储卡(Smart MediaCard,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器71还可以既包括终端7的内部存储单元也包括外部存储设备。存储器71用于存储上述计算机程序以及终端所需的其他程序和数据。
上述计算机程序可以被分割成一个或多个模块/单元,上述一个或者多个模块/单元被存储在上述存储器71中,并由上述处理器70执行,以完成本申请。上述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述上述计算机程序在上述进行接口的测试的终端中的执行过程。例如,上述计算机程序可以被分割成:第一获取单元、第二获取单元和同步单元,具体功能如下:
第一获取单元,用于获取数据库同步配置信息;
第二获取单元,用于获取增量日志数据;
同步单元,用于对增量日志数据进行解析,基于解析结果以及数据库同步配置信息,生成与增量日志数据对应的数据库同步指令和缓存清除指令,并将数据同步指令和缓存清除指令发送给目标数据库,由目标数据库进行数据库数据同步和缓存清理。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的终端和方法,可以通过其它的方式实现。例如,以上所描述的终端实施例仅仅是示意性的。例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口、装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、电载波信号、电信信号以及软件分发介质等。需要说明的是,计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (10)
1.一种数据同步方法,其特征在于,包括:
获取数据库同步配置信息;
获取增量日志数据;
对所述增量日志数据进行解析,基于解析结果以及所述数据库同步配置信息,生成与所述增量日志数据对应的数据库同步指令和缓存清除指令,并将所述数据同步指令和所述缓存清除指令发送给目标数据库,由所述目标数据库进行数据库数据同步和缓存清理。
2.如权利要求1所述的数据同步方法,其特征在于,在生成与所述增量日志数据对应的数据库同步指令和缓存清除指令之前,还包括:
判断所述增量日志数据是否为需要执行数据同步操作的日志数据;
所述基于解析结果以及所述数据库同步配置信息,生成与所述增量日志数据对应的数据库同步指令和缓存清除指令,并将所述数据同步指令和所述缓存清除指令发送给目标数据库,由所述目标数据库进行数据库数据同步和缓存清理,包括:
在所述增量日志数据为需要执行数据同步操作的日志数据时,基于解析结果以及所述数据库同步配置信息,生成与所述增量日志数据对应的数据库同步指令和缓存清除指令,并将所述数据同步指令和所述缓存清除指令发送给目标数据库,由所述目标数据库进行数据库数据同步和缓存清理。
3.如权利要求2所述的数据同步方法,其特征在于,所述数据库同步配置信息包括不需要执行数据同步操作的预设日志类型,所述判断所述增量日志数据是否为需要执行数据同步操作的日志数据,包括:
判断所述增量日志数据对应的日志类型是否为所述预设日志类型;
若所述增量日志数据对应的日志类型为所述预设日志类型,则确定所述增量日志数据为不需要执行数据同步操作的日志数据。
4.如权利要求2或3所述的数据同步方法,其特征在于,所述数据库同步配置信息包括需要同步的目标数据库标识、目标数据表标识、目标数据表记录标识和目标同步方向;所述判断所述增量日志数据是否为需要执行数据同步操作的日志数据,包括:
对所述增量日志数据进行解析,判断出现数据更新的数据对应的数据库标识是否包含在所述目标数据库标识中、数据表标识是否包含在所述目标数据表标识中、数据表记录标识是否包含在所述目标数据表记录标识中,以及数据同步方向是否包含在所述目标同步方向中;
若判断结果为是,则确定所述增量日志数据为需要执行数据同步操作的日志数据。
5.如权利要求4所述的数据同步方法,其特征在于,所述数据库同步配置信息还包括:同步key模板表;所述数据同步方法还包括:
根据所述同步key模板表检查所述数据库同步配置信息中配置的目标数据库标识、目标数据表标识、目标数据表记录标识和目标同步方向是否存在遗漏。
6.如权利要求2所述的数据同步方法,其特征在于,所述数据库同步配置信息采用以下方式生成:
获取数据库维护字典表;
基于模板引擎和所述数据库维护字典表生成所述数据库同步配置信息。
7.如权利要求6所述的数据同步方法,其特征在于,在所述基于模板引擎和所述数据库维护字典表生成所述数据库同步配置信息之后,还包括:
将所述数据库维护字典表与所述数据库同步配置信息中的目标数据库标识、目标数据表标识、目标同步方向进行比对;
根据比对结果对所述数据库同步配置信息进行更新。
8.一种数据同步装置,其特征在于,包括:
第一获取单元,用于获取数据库同步配置信息;
第二获取单元,用于获取增量日志数据;
同步单元,用于对所述增量日志数据进行解析,基于解析结果以及所述数据库同步配置信息,生成与所述增量日志数据对应的数据库同步指令和缓存清除指令,并将所述数据同步指令和所述缓存清除指令发送给目标数据库,由所述目标数据库进行数据库数据同步和缓存清理。
9.一种终端,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-7任意一项所述方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7中任意一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110932147.4A CN115878721A (zh) | 2021-08-13 | 2021-08-13 | 一种数据同步方法、装置、终端和计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110932147.4A CN115878721A (zh) | 2021-08-13 | 2021-08-13 | 一种数据同步方法、装置、终端和计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115878721A true CN115878721A (zh) | 2023-03-31 |
Family
ID=85762184
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110932147.4A Pending CN115878721A (zh) | 2021-08-13 | 2021-08-13 | 一种数据同步方法、装置、终端和计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115878721A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117527833A (zh) * | 2024-01-04 | 2024-02-06 | 深圳市度申科技有限公司 | 一种数据同步方法 |
-
2021
- 2021-08-13 CN CN202110932147.4A patent/CN115878721A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117527833A (zh) * | 2024-01-04 | 2024-02-06 | 深圳市度申科技有限公司 | 一种数据同步方法 |
CN117527833B (zh) * | 2024-01-04 | 2024-03-29 | 深圳市度申科技有限公司 | 一种数据同步方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109460349B (zh) | 一种基于日志的测试用例生成方法和装置 | |
CN109034993B (zh) | 对账方法、设备、系统及计算机可读存储介质 | |
CN112000737B (zh) | 基于多云管理的数据同步方法、系统、终端及存储介质 | |
CN110245078B (zh) | 一种软件的压力测试方法、装置、存储介质和服务器 | |
CN108667725B (zh) | 一种基于多种接入及边缘计算的工业软网关以及实现方法 | |
CN107506451B (zh) | 用于数据交互的异常信息监控方法及装置 | |
CN110147411B (zh) | 数据同步方法、装置、计算机设备及存储介质 | |
CN107220142B (zh) | 执行数据恢复操作的方法及装置 | |
EP3477914B1 (en) | Data recovery method and device, and cloud storage system | |
CN110825420A (zh) | 分布式集群的配置参数更新方法、装置、设备及存储介质 | |
US20180307735A1 (en) | Integrating relational and non-relational databases | |
CN112182104A (zh) | 一种数据同步方法、装置、设备及存储介质 | |
CN113672627B (zh) | Elasticsearch搜索引擎索引构建方法及装置 | |
CN111177161A (zh) | 数据处理方法、装置、计算设备和存储介质 | |
CN104468274A (zh) | 一种集群监控管理方法及系统 | |
CN112559525B (zh) | 数据检查系统、方法、装置和服务器 | |
CN113704790A (zh) | 一种异常日志信息汇总方法及计算机设备 | |
CN111740868A (zh) | 告警数据的处理方法和装置及存储介质 | |
CN113886485A (zh) | 数据处理方法、装置、电子设备、系统和存储介质 | |
CN109213736B (zh) | 日志的压缩方法和装置 | |
WO2022116846A1 (zh) | 虚拟网元的运行数据采集方法及装置 | |
CN113946559A (zh) | 数据处理方法、目标数据库系统及数据处理系统 | |
CN115878721A (zh) | 一种数据同步方法、装置、终端和计算机可读存储介质 | |
CN116501700B (zh) | 一种app格式化文件离线存储方法、装置、设备及存储介质 | |
CN110309206B (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 |