一种内存数据库集群的同步方法及内存数据库主机的制作方法

文档序号:9249262阅读:471来源:国知局
一种内存数据库集群的同步方法及内存数据库主机的制作方法
【技术领域】
[0001]本发明涉及数据库技术领域,尤其涉及一种内存数据库集群的同步方法及内存数据库主机。
【背景技术】
[0002]内存数据库是指将数据放在内存中直接操作的数据库,一般以集群的方式部署,这样的集群称为内存数据库集群。内存数据库集群包括内存数据库主机和内存数据库从机,两者之间需要保持数据的同步。进一步地,同步分为全量同步和增量同步,全量同步是指内存数据库从机一次性将内存数据库主机的全部数据进行同步,增量同步是指内存数据库从机只对其与内存数据库主机之间不同的部分数据进行同步,应理解地,针对大数据的同步,执行全量同步的效率要低于增量同步,因此优先尝试增量同步。
[0003]在现有技术中,内存数据库主机会在初始化时创建一个增量同步缓存区来保存临时数据,如图1所示,当内存数据库从机与内存数据库主机之间因网络问题导致闪断重连后,内存数据库从机会向内存数据库主机发送增量同步请求指令以请求对数据进行增量同步;内存数据库主机根据增量同步请求指令中的运行号和同步偏移地址判断内存数据库从机是否满足进行增量同步的条件,如当内存数据库从机的运行号等于内存数据库主机的运行号且同步偏移地址小于增量同步缓存区的缓存上限地址时判定为满足进行增量同步的条件,此时内存数据库主机将增量同步缓存区中同步偏移地址以后的数据发送给内存数据库从机以实现增量同步,又如当内存数据库从机的运行号不等于内存数据库主机的运行号或同步偏移地址大于增量同步缓存区的地址容量时判定为不满足进行增量同步的条件,此时内存数据库主机将内存中所有的数据生成内存数据库镜像文件发送给内存数据库从机以实现全量同步。
[0004]然而,上述现有技术存在以下问题:(I)在业务高峰期或大并发数据情况下极有可能在闪断期间数据量会超过增量同步缓存区的缓存大小,导致增量同步缓存区循环覆盖缓存,造成数据丢失,影响主从机之间数据的一致性;(2)在同步偏移地址超出增量同步缓存区的范围时会进行全量同步,这将影响同步效率以及内存数据库主机的处理性能。

【发明内容】

[0005]本发明实施例所要解决的技术问题在于,提供一种内存数据库集群的同步方法及内存数据库主机,可以实现保证主从机之间数据的一致性、提高数据同步的效率以及改善主机的处理性能。
[0006]为了解决上述技术问题,本发明实施例提供一种内存数据库集群的同步方法,包括:
[0007]获取内存数据库从机发送的同步请求指令,所述同步请求指令包括同步偏移地址;
[0008]判断当前需要同步到的数据的存储地址与所述同步偏移地址的差值是否大于增量同步缓存区的地址容量;
[0009]若否,则将所述增量同步缓存区中在所述同步偏移地址以后的数据发送给所述内存数据库从机以实现增量同步;
[0010]若是,则将持久化数据保存文件中在所述同步偏移地址以后的数据发送给所述内存数据库从机以实现增量同步。
[0011]相应地,本发明实施例还提供了一种内存数据库主机,包括:
[0012]指令获取模块,用于获取内存数据库从机发送的同步请求指令,所述同步请求指令包括同步偏移地址;
[0013]容量判断模块,用于判断当前需要同步到的数据的存储地址与所述同步偏移地址的差值是否大于增量同步缓存区的地址容量;
[0014]第一发送模块,用于若否,则将所述增量同步缓存区中在所述同步偏移地址以后的数据发送给所述内存数据库从机以实现增量同步;
[0015]第二发送模块,用于若是,则将持久化数据保存文件中在所述同步偏移地址以后的数据发送给所述内存数据库从机以实现增量同步。
[0016]实施本发明实施例,具有如下有益效果:本发明实施例中的内存数据库主机,在获取内存数据库从机发送的同步请求指令(其中同步请求指令包括同步偏移地址)后,若判定当前需要同步到的数据的存储地址与同步偏移地址的差值大于增量同步缓存区的地址容量,则将持久化数据保存文件中在同步偏移地址以后的数据发送给内存数据库从机以进行增量同步,从而避免在此情况下会进行全量同步,可以实现保证主从机之间数据的一致性、提高数据同步的效率以及改善主机的处理性能。
【附图说明】
[0017]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0018]图1是本发明实施例中的一种现有内存数据库集群的同步方法的示意图;
[0019]图2是本发明实施例中的一种内存数据库集群的示意图;
[0020]图3是本发明实施例中的一种内存数据库集群的同步方法的流程示意图;
[0021]图4是本发明实施例中的另一种内存数据库集群的同步方法的流程示意图;
[0022]图5是本发明实施例提供的一种内存数据库主机的结构示意图;
[0023]图6是本发明实施例提供的一种增量同步缓存区的示意图;
[0024]图7是本发明实施例提供的一种持久化数据保存文件的示意图。
【具体实施方式】
[0025]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0026]为了便于理解本发明实施例,下面先结合图2介绍下本发明实施例的应用场景,如图所示的内存数据库集群至少包括一个内存数据库主机和多个内存数据库从机,内存数据库主机不断写入数据,内存数据库从机与内存数据库主机保持数据同步,同步的方式包括上文提及的全量同步和增量同步,这里不再赘述。需要说明的是,本发明实施例的内存数据库可以包括任意类型的内存数据库,例如Redis内存数据库等,其中,Redis是一种开源的、支持网络、基于内存的Key-Value数据库。
[0027]图3是本发明实施例中的一种内存数据库集群的同步方法的流程示意图。该方法实现于内存数据库主机,如图所示可以包括:
[0028]S101,获取内存数据库从机发送的同步请求指令,所述同步请求指令包括同步偏移地址。
[0029]在本发明实施例中,所述同步请求指令为增量同步请求指令;所述同步偏移地址本质上是一个存储地址,用于记录上一次数据同步的结束位置。
[0030]具体地,内存数据库主机接收内存数据库从机发送来的增量同步请求指令,该增量同步请求指令中携带有同步偏移地址。
[0031]应理解地,内存数据库主机在初始化时会创建一个增量同步缓存区。其中,内存数据库主机在向内存写入数据的时候,同时会把数据写入增量同步缓存区。需要指出的是,增量同步缓存区是以环形存储的方式写入数据,即写入的数据超过增量同步缓存区的缓存大小时,会循环覆盖之前的数据,从而达到节省存储空间的目的,因而增量同步缓存区主要用于保存临时数据。
[0032]还应理解地,内存数据库主机在每次向内存写入数据时,会将该数据记录到持久化数据保存文件中,例如Aof文件。具体实现过程中,内存数据库主机可以通过勾选配置文件中的appendonly选项实现上述功能。需要指出的是,不同于增量同步缓存区中写入的数据,持久化数据保存文件中记录的数据是文本格式(.txt),而不是二进制数据格式。内存数据库主机在向内存写入数据时,同时会将这些数据一行一行地记录在持久化数据保存文件中,因而持久化数据保存文件中记录的数据基本与内存中写入的数据一致。
[0033]S102,判断当前需要同步到的数据的存储地址与所述同步偏移地址的差值是否大于增量同步缓存区的地址容量。
[0034]其中,所述当前需要同步到的数据可以是内存数据库主机的内存中最新写入的一个数据,该数据的存储地址与同步偏移地址的差值为一段地址,该段地址对应的数据就是本次需同步到内存数据库从机的数据。
[0035]具体地,内存数据库主机判断当前需要同步到的数据的存储地址与同步偏移地址的差值是否大于增量同步缓存区的地址容量。应理解地,若该差值小于增量同步缓存区的地址容量,则说明计划同步到内存数据库从机的数据都可以在增量同步缓存区缓存的临时数据中找到;若该差值大于增量同步缓存区的地址容量,则说明本次需同步到内存数据库从机的数据超出了增量同步缓存区缓存的临时数据,其中一部分数据已经被覆盖保存,无法在增量同步缓存区中找到,因而在现有技术中,为了保证数据同步的一致性,内存数据库主机不会再执行增量同步,转而执行全量同步,从而对同步效率以及内存数据库主机的处理性能造成影响。
[0036]进一步地,
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1