首页 / 专利库 / 资料储存系统 / 数据库管理系统 / 关系型数据库双主数据增量同步方法和系统

关系型数据库双主数据增量同步方法和系统

阅读:593发布:2020-05-13

专利汇可以提供关系型数据库双主数据增量同步方法和系统专利检索,专利查询,专利分析的服务。并且本 发明 提供了一种关系型 数据库 双主数据增量同步方法和系统,应用于双主模式下的关系型 数据库管理系统 ,关系型数据库管理系统包括第一数据库和第二数据库,当第一数据库向第二数据库同步数据时,方法包括:获取第一数据库发送的待同步数据;待同步数据包括第一数据主键;在第二数据库的来源主键列表中查找与第一数据主键相匹配的目标来源主键;若未在来源主键列表中找到目标来源主键,则在来源主键列表中创建目标来源主键字段,并将第二数据库中的第一数据主键对应字段的值初始化,将待同步数据同步到第二数据库中。本发明缓解了 现有技术 中存在的对于主键冲突在横向扩容时会受到限制的技术问题。,下面是关系型数据库双主数据增量同步方法和系统专利的具体信息内容。

1.一种关系型数据库双主数据增量同步方法,其特征在于,应用于双主模式下的关系型数据库管理系统,所述关系型数据库管理系统包括第一数据库和第二数据库,当第一数据库向第二数据库同步数据时,所述方法包括:
获取所述第一数据库发送的待同步数据;所述待同步数据包括第一数据主键;
在所述第二数据库的来源主键列表中查找与所述第一数据主键相匹配的目标来源主键;其中,所述来源主键列表为所述第一数据库向所述第二数据库的历史同步数据的主键列表;
若未在所述来源主键列表中找到所述目标来源主键,则在所述来源主键列表中创建目标来源主键字段,并将所述第二数据库中的第一数据主键对应字段的值初始化,将所述待同步数据同步到所述第二数据库中;其中,所述目标来源主键的值为所述第一数据主键。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若在所述来源主键列表中找到了所述目标来源主键,则直接将所述待同步数据同步到所述第二数据库中。
3.根据权利要求1所述的方法,其特征在于,在获取所述第一数据库发送的待同步数据之后,所述方法还包括:
对所述待同步数据进行安全性验证,其中,所述安全性验证包括:IP白名单验证和Token验证。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:将所述待同步数据中的外键转换成所述第二数据库中对应数据的外键。
5.一种关系型数据库双主数据增量同步系统,其特征在于,应用于双主模式下的关系型数据库管理系统,所述同步系统包括:获取模,匹配模块和主键转换模块,其中,所述获取模块,用于获取第一数据库发送的待同步数据;所述待同步数据包括第一数据主键;
所述匹配模块,用于在第二数据库的来源主键列表中查找与所述第一数据主键相匹配的目标来源主键;其中,所述来源主键列表为所述第一数据库向所述第二数据库的历史同步数据的主键列表;
所述主键转换模块,用于若未在所述来源主键列表中找到所述目标来源主键,则在所述来源主键列表中创建目标来源主键字段,并将所述第二数据库中的第一数据主键对应字段的值初始化,将所述待同步数据同步到所述第二数据库中;其中,所述目标来源主键的值为所述第一数据主键。
6.根据权利要求5所述的同步系统,其特征在于,所述主键转换模块还用于:
若在所述来源主键列表中找到了所述目标来源主键,则直接将所述待同步数据同步到所述第二数据库中。
7.根据权利要求5所述的同步系统,其特征在于,所述同步系统还包括:验证模块,用于对所述待同步数据进行安全性验证,其中,所述安全性验证包括:IP白名单验证和Token验证。
8.根据权利要求5所述的同步系统,其特征在于,所述同步系统还包括:外键转换模块,用于将所述待同步数据中的外键转换成所述第二数据库中对应数据的外键。
9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述权利要求1至4任一项所述的方法的步骤。
10.一种具有处理器可执行的非易失的程序代码的计算机可读介质,其特征在于,所述程序代码使所述处理器执行所述权利要求1-4任一所述方法。

说明书全文

关系型数据库双主数据增量同步方法和系统

技术领域

[0001] 本发明涉及关系型数据库管理系统技术领域,尤其是涉及一种关系型数据库双主数据增量同步方法和系统。

背景技术

[0002] 关系型数据库管理系统(MySQL)双主模式:
[0003] 两台MySQL都可读写,互为主备,默认只使用一台(masterA)负责数据的写入,另一台(masterB)备用;masterA是masterB的主库,masterB又是masterA的主库,它们互为主从;MySQL数据同步使用数据库操作日志(binlog)进行数据同步,两个台数据库相互发送各自的binlog进行同步。
[0004] 而现有技术中,对于关系型数据库双主数据增量的同步方式中,对于出现的主键冲突:为了防止自增id(Identity document)冲突,解决办法是一个服务器使用奇数id,另一个服务器使用偶数id,合并的时候一般不会产生冲突,但横向扩容时会受到限制。如果一开始没有设置好自增策略,则数据进行同步时会出现异常。

发明内容

[0005] 有鉴于此,本发明的目的在于提供一种关系型数据库双主数据增量同步方法和系统,以缓解现有技术中存在的对于主键冲突在横向扩容时会受到限制的技术问题。
[0006] 第一方面,本发明实施例提供了一种关系型数据库双主数据增量同步方法,应用于双主模式下的关系型数据库管理系统,所述关系型数据库管理系统包括第一数据库和第二数据库,当第一数据库向第二数据库同步数据时,所述方法包括:获取所述第一数据库发送的待同步数据;所述待同步数据包括第一数据主键;在所述第二数据库的来源主键列表中查找与所述第一数据主键相匹配的目标来源主键;其中,所述来源主键列表为所述第一数据库向所述第二数据库的历史同步数据的主键列表;若未在所述来源主键列表中找到所述目标来源主键,则在所述来源主键列表中创建目标来源主键字段,并将所述第二数据库中的第一数据主键对应字段的值初始化,将所述待同步数据同步到所述第二数据库中;其中,所述目标来源主键的值为所述第一数据主键。
[0007] 进一步地,所述方法还包括:若在所述来源主键列表中找到了所述目标来源主键,则直接将所述待同步数据同步到所述第二数据库中。
[0008] 进一步地,在获取所述第一数据库发送的待同步数据之后,所述方法还包括:对所述待同步数据进行安全性验证,其中,所述安全性验证包括:IP白名单验证和Token验证。
[0009] 进一步地,所述方法还包括:将所述待同步数据中的外键转换成所述第二数据库中对应数据的外键。
[0010] 第二方面,本发明实施例还提供了一种关系型数据库双主数据增量同步系统,应用于双主模式下的关系型数据库管理系统,所述同步系统包括:获取模,匹配模块和主键转换模块,其中,所述获取模块,用于获取第一数据库发送的待同步数据;所述待同步数据包括第一数据主键;所述匹配模块,用于在第二数据库的来源主键列表中查找与所述第一数据主键相匹配的目标来源主键;其中,所述来源主键列表为所述第一数据库向所述第二数据库的历史同步数据的主键列表;所述主键转换模块,用于若未在所述来源主键列表中找到所述目标来源主键,则在所述来源主键列表中创建目标来源主键字段,并将所述第二数据库中的第一数据主键对应字段的值初始化,将所述待同步数据同步到所述第二数据库中;其中,所述目标来源主键的值为所述第一数据主键。
[0011] 进一步地,所述主键转换模块还用于:若在所述来源主键列表中找到了所述目标来源主键,则直接将所述待同步数据同步到所述第二数据库中。
[0012] 进一步地,所述同步系统还包括:验证模块,用于对所述待同步数据进行安全性验证,其中,所述安全性验证包括:IP白名单验证和Token验证。
[0013] 进一步地,所述同步系统还包括:外键转换模块,用于将所述待同步数据中的外键转换成所述第二数据库中对应数据的外键。
[0014] 第三方面,本发明实施例还提供了一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面所述的方法的步骤。
[0015] 第四方面,本发明实施例还提供了一种具有处理器可执行的非易失的程序代码的计算机可读介质,所述程序代码使所述处理器执行上述第一方面所述方法。
[0016] 本发明提供了一种关系型数据库双主数据增量同步方法和系统,应用于双主模式下的关系型数据库管理系统,包括:获取第一数据库发送的待同步数据;待同步数据包括第一数据主键;在第二数据库的来源主键列表中查找与第一数据主键相匹配的目标来源主键;若未在来源主键列表中找到目标来源主键,则在来源主键列表中创建目标来源主键字段,并将第二数据库中的第一数据主键对应字段的值初始化,将待同步数据同步到第二数据库中。本发明通过在被同步数据库中创建来源主键列表的方式,缓解了现有技术中存在的对于主键冲突在横向扩容时会受到限制的技术问题。附图说明
[0017] 为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0018] 图1为本发明实施例提供的一种关系型数据库双主数据增量同步方法的流程图
[0019] 图2为本发明实施例提供的一种数据入库同步方法的流程图;
[0020] 图3为本发明实施例提供的一种关系型数据库双主数据增量同步系统的示意图;
[0021] 图4为本发明实施例提供的另一种关系型数据库双主数据增量同步系统的示意图。

具体实施方式

[0022] 下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0023] 实施例一:
[0024] 图1是根据本发明实施例提供的一种关系型数据库双主数据增量同步方法的流程图,该方法应用于双主模式下的关系型数据库管理系统,其中,关系型数据库管理系统包括第一数据库和第二数据库。如图1所示,当第一数据库向第二数据库同步数据时,该方法具体包括如下步骤:
[0025] 步骤S102,获取第一数据库发送的待同步数据;待同步数据包括第一数据主键。
[0026] 例如,第一数据库新增一条t_user数据后触发同步,待同步数据被发送到第二数据库的同步接收程序。
[0027] 步骤S104,在第二数据库的来源主键列表中查找与第一数据主键相匹配的目标来源主键;其中,来源主键列表为第一数据库向第二数据库的历史同步数据的主键列表。
[0028] 例如,第二数据库根据接收到的t_user数据的第一数据主键id在第二数据库的来源主键列表source_id列中查询,是否有匹配。
[0029] 步骤S106,若未在来源主键列表中找到目标来源主键,则在来源主键列表中创建目标来源主键字段,并将第二数据库中的第一数据主键对应字段的值初始化,将待同步数据同步到第二数据库中;其中,目标来源主键的值为第一数据主键。
[0030] 其中,若未找到目标来源主键,则说明该条数据未被同步过,将该数据新增source_id字段,值为该数据的id,再将id置空(自增id数据库时使用)或者重新设置,防止跟第二数据库现有数据主键冲突,即可写入数据库。
[0031] 本发明实施例提供了一种关系型数据库双主数据增量同步方法,包括:获取第一数据库发送的待同步数据;待同步数据包括第一数据主键;在第二数据库的来源主键列表中查找与第一数据主键相匹配的目标来源主键;若未在来源主键列表中找到目标来源主键,则在来源主键列表中创建目标来源主键字段,并将第二数据库中的第一数据主键对应字段的值初始化,将待同步数据同步到第二数据库中。本发明实施例提供的方法通过在被同步数据库中创建来源主键列表的方式,避免主键冲突无法写入的问题,缓解了现有技术中存在的对于主键冲突在横向扩容时会受到限制的技术问题。
[0032] 可选地,本发明实施例提供的同步方法还包括:
[0033] 若在来源主键列表中找到了目标来源主键,则直接将待同步数据同步到第二数据库中。
[0034] 其中,若在来源主键列表中找到了目标来源主键,则表示第二数据库接收到的这条数据曾经被同步过,根据预设策略(以更新时间最新一条为准,即比较第二数据库匹配的这条数据和接收到第一数据库的这条数据的更新时间,以更新时间最晚的一条为更新基准)进行更新或丢弃操作。
[0035] 可选地,在本发明实施例中,在步骤102获取第一数据库发送的待同步数据之后,该方法还包括:
[0036] 对待同步数据进行安全性验证,其中,安全性验证包括:IP(Internet Protocol)白名单验证和Token验证。
[0037] 具体地,IP白名单验证包括:同步程序中配置白名单列表,接收到数据后根据请求获取发送方的IP,匹配IP白名单,如能匹配上则往下游走,若不匹配直接抛弃。
[0038] Token验证包括:发送方和接收方都有配置相同的Token,发送方将Token携带在消息头里,接收方接收到数据后会取出消息头内的Token校验是否和本地匹配,匹配则往下游走,若不匹配直接抛弃。具体地,Token使用对称加密。
[0039] 可选地,本发明实施提供的方法还包括:将待同步数据中的外键转换成第二数据库中对应数据的外键。
[0040] 例如,以t_user用户,t_rule色,t_user有rule_id字段表示外键t_rule.id,主键都用id表示,第一数据库向第二数据库同步数据为例,第一数据库中新增一条t_user数据后触发同步,数据被发送到第二数据库端同步接收程序。
[0041] t_user有一个rule_id字段为t_rule的主键id,意思就是t_user有t_rule的外键rule_id;第一数据库的一条t_user记录向第二数据库同步;第二数据库在接收到这条数据先进行之前主键转换操作。
[0042] 因为t_user有外键rule_id,而之前同步的t_rule在第二数据库中必定和第一数据库中的id不相同(主键转换的结果);那么t_user.rule_id需要设置第二数据库中t_rule新的id。则,使用t_user.rule_id字段去查询第二数据库中t_rule.source_id字段,找到匹配的t_rule取id字段赋值给t_user.rule_id,完成外键转换过程。
[0043] 需要说明的是,本发明实施例提供的一种关系型数据库双主数据增量同步方法中,当第二数据库向第一数据库中同步数据时,所用方法和上述方法相同。
[0044] 实施例二:
[0045] 下面通过举例说明本发明实施例提供的一种关系型数据库双主数据增量同步方法的实施过程。例如:
[0046] 步骤1、本发明实施例提供的一种关系型数据库双主数据增量同步方法的实施过程依赖同步程序,该同步程序依赖一份配置文件,配置文件来配置需要同步的表、表的外键依赖关系以及除主键外的唯一键(可组合)。使用JSON文件配置关系,配置样例如下:
[0047]
[0048]
[0049] 其中,“tableRelations”:配置文件已tableRelations开始,所有表关系配置在tableRelation数组里面。
[0050] 每个表配置都是tableRelation数组的一个元素由“{”开始由“}”结束。
[0051] “name”:声明需要同步的表。
[0052] “suffixAttrs”:是一个数组,里面声明该表的唯一键(MySQL的unique字段),除主键以外的键。如上述“suffixAttrs“:[“name”]表示t_rols表的name字段不允许重复。
[0053] “relations”:是一个数组,声明一组依赖关系,其中每一个元素表示一对依赖关系。每个元素包含keyAttr和foreignTableName两个字段分别表示此表的依赖外键的字段和此字段对应的表的主键。如上文中“relations”:[{“keyAttr”:“role”,”foreignTableName”:”t_role”}]表示t_user表的role字段的值是t_role的主键。
[0054] 步骤2、程序将步骤1中的配置读取变成需要同步的表的列表,以及对应的依赖关系和唯一键配置等之后,初始化一个全局进度,由起始时间和结束时间组成,刚生成的起始时间为空,结束时间为当前系统时间。由于本发明的设计需要数据同步是有序的,因为被配置在较后的数据可能依赖配置在较前表的数据也就是步骤1中说明的foreignTbaleName外键依赖。表的必须根据配置自上而下同步,而全局进度作用是使所需同步表的数据在一个时间切面上,从而保证顺序较后的表产生的较晚(比全局进度时间更晚)的数据不会被同步。
[0055] 步骤3、程序会启动一个线程,对配置的表进行遍历。根据步骤2中生成的全局进度来进行切割时间段的取数据,若当前查询到的数据过多,如超过1000条以上,会进分批发送处理。包装成数据包,由发送部分发送到另一套正在运行的同步程序。在网络可访直接访问的情况下一般使用http协议进行数据传输。若在两个不同的网络环境下如两个内网之间,不能通过网络直接访问,同步程序也可借助代理进行异步传输。
[0056] 步骤4、接收程序接收到数据之后进行安全性校验,来源IP是否可信、携带的Token是否正确。
[0057] 步骤5、通过校验之后对数据进行解析和入库处理,入库需要用到步骤1中描述的配置。主要操作有两点:(1)进行主键转换;(2)进行外键转换。若是本地没有的数据则进行新增操作,如果是本地已有的数据根据最后更新时间来决定是否要更新本地数据。具体地,图2是根据本发明实施例提供的一种数据入库同步方法的流程图。其中,发送方数据库名为A,接收方数据库名为B。以步骤1的配置中描述的t_user和t_role来说明。如下描述t_user数据入库的流程。如图2所示:
[0058] 步骤5.1、外键转换,根据步骤1中配置文件的描述进行外键转换,转换的目的是将本对应A库中t_role表的id转换成B库中对应的t_role的id,根据表名和值在数据库中查询。注意此处的值对应的是数据库中该表的来标记非当前记录的主键。
[0059] 步骤5.2、主键转换,跟外键转换类似,但转换的是这条数据A库中的主键为B库中的主键,若转换失败则表示本地没有该条数据则需要新增。
[0060] 步骤5.3、返回失败队列给数据发送方,外键转换失败的数据即是异常数据根据需要已表名主键列表的形式返回给发送方,由发送发进行处理。
[0061] 步骤5.4、虚线框内描述了一个对于配置了唯一键即上文中的suffixAttrs字段的数据处理逻辑,根据唯一键的配置使用传入数据的唯一键值在数据库中查询是否有对应的数据,若有结果则需要合并,将发送过来的数据转换成本地已有数据,并在source_id字段打上发送方的标记。
[0062] 步骤6、入库处理完成后,返回给发送方一个处理结果。如成功即返回一个success,若失败将之前的失败队列发返回给发送方。
[0063] 由以上描述可知,本发明实施例提供的一种关系型数据库双主数据增量同步方法可以达到以下技术效果:
[0064] (1)缓解现有技术中的主键冲突的技术问题:当同步数据需要写入时,不设置id由数据库自动生成,但同时用来源标记记录下源主键。避免主键冲突导致无法写入的技术问题。
[0065] (2)缓解现有技术中的双主数据库不能同时进行写操作的技术问题:本发明的策略就是支持两库同时写入,并相互不影响。
[0066] (3)缓解现有技术中的不能再不同机房(不同网络环境)中工作的技术问题:本发明在使用场景上就有别与MySQL的同步,可在非直通网络(不可建立tcp长链接)场景下使用,只需通过代理使两边能异步通信即可。
[0067] (4)缓解现有技术中的数据同步范围不可控的技术问题:使用配置文件指定需要同步的表。
[0068] 实施例三:
[0069] 图3是根据本发明实施例提供的一种关系型数据库双主数据增量同步系统的示意图,该系统应用于双主模式下的关系型数据库管理系统,其中,关系型数据库管理系统包括两个主数据库。如图3所示,该同步系统具体包括:获取模块10,匹配模块20和主键转换模块30。
[0070] 具体地,获取模块10,用于获取第一数据库发送的待同步数据;待同步数据包括第一数据主键。
[0071] 匹配模块20,用于在第二数据库的来源主键列表中查找与第一数据主键相匹配的目标来源主键;其中,来源主键列表为第一数据库向第二数据库的历史同步数据的主键列表。
[0072] 主键转换模块30,用于若未在来源主键列表中找到目标来源主键,则在来源主键列表中创建目标来源主键字段,并将第二数据库中的第一数据主键对应字段的值初始化,将待同步数据同步到第二数据库中;其中,目标来源主键的值为第一数据主键。
[0073] 本发明实施例提供的一种关系型数据库双主数据增量同步系统,通过获取模块获取第一数据库发送的待同步数据;通过匹配模块在第二数据库的来源主键列表中查找与第一数据主键相匹配的目标来源主键;若未在来源主键列表中找到目标来源主键,则通过主键转换模块在来源主键列表中创建目标来源主键字段,并将第二数据库中的第一数据主键对应字段的值初始化,将待同步数据同步到第二数据库中。本发明通过在被同步数据库中创建来源主键列表的方式,缓解了现有技术中存在的对于主键冲突在横向扩容时会受到限制的技术问题。
[0074] 可选地,主键转换模块30还用于:若在来源主键列表中找到了目标来源主键,则直接将待同步数据同步到第二数据库中。
[0075] 可选地,图4是根据本发明实施例提供的另一种关系型数据库双主数据增量同步系统的示意图。如图4所示,该同步系统还包括:验证模块40,用于对待同步数据进行安全性验证,其中,安全性验证包括:IP白名单验证和Token验证。
[0076] 可选地,如图4所示,本发明实施例提供的同步系统还包括:外键转换模块50,用于将待同步数据中的外键转换成第二数据库中对应数据的外键。
[0077] 本发明实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述实施例一中的方法的步骤。
[0078] 本发明实施例还提供了一种具有处理器可执行的非易失的程序代码的计算机可读介质,程序代码使处理器执行上述实施例一中的方法。
[0079] 最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈