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

文档序号:9249262阅读:来源:国知局
送给所述内存数据库从机以实现增量同步。
[0061]具体地,内存数据库主机先向内存数据库从机发送增量同步允许消息以指示内存数据库从机做好增量同步的准备,再在增量同步缓存区中找到同步偏移地址对应的位置,接着将增量同步缓存区中在同步偏移地址以后的数据发送给内存数据库从机,最后内存数据库将接收的数据写入内存,实现增量同步。其中,请参阅图6,图中最大地址表示增量同步缓存区中最新写入的数据的地址,增量同步缓存区中在同步偏移地址以后的数据即为同步偏移地址和最大地址之间的数据。
[0062]S208,将持久化数据保存文件中在所述同步偏移地址以后的数据发送给所述内存数据库从机以实现增量同步。
[0063]具体地,内存数据库主机先向内存数据库从机发送增量同步允许消息以指示内存数据库从机做好增量同步的准备,再在持久化数据保存文件中找到同步偏移地址对应的位置,接着将持久化数据保存文件中在同步偏移地址以后的数据发送给内存数据库从机,最后内存数据库将接收的数据写入内存,实现增量同步。其中,请参阅图7,图中最大地址表示持久化数据保存文件中最新记录的数据的地址,持久化数据保存文件中在同步偏移地址以后的数据即为同步偏移地址和最大地址之间的数据。可见,本发明实施例不同于现有技术的是,针对上述情况,可以通过持久化数据保存文件增量同步的方式代替增量同步缓存区增量同步的方式,进而保证了主从机数据的一致性,同时也避免了进行全量同步,从而提高了同步效率以及改善了内存数据库主机的处理性能。
[0064]需要指出的是,正常情况下,同步偏移地址是不会超出持久化数据保存文件的范围的,只有在主从机通讯异常或数据错乱时,同步偏移地址才会超出持久化数据保存文件的范围,进一步地,在此情况下,内存数据库主机会选择执行内存数据库镜像文件全量同步。
[0065]由上可知,本发明实施例中的内存数据库主机,在获取内存数据库从机发送的同步请求指令(其中同步请求指令包括同步偏移地址)后,若判定当前需要同步到的数据的存储地址与同步偏移地址的差值大于增量同步缓存区的地址容量,则将持久化数据保存文件中在同步偏移地址以后的数据发送给内存数据库从机以进行增量同步,从而避免在此情况下会进行全量同步,可以实现保证主从机之间数据的一致性、提高数据同步的效率以及改善主机的处理性能。
[0066]图5是本发明实施例中一种内存数据库主机的结构示意图。如图所示本发明实施例中的内存数据库主机至少可以包括指令获取模块310、容量判断模块320、第一发送模块330以及第二发送模块340,其中:
[0067]指令获取模块310,用于获取内存数据库从机发送的同步请求指令,所述同步请求指令包括同步偏移地址。
[0068]在本发明实施例中,所述同步请求指令为增量同步请求指令;所述同步偏移地址本质上是一个存储地址,用于记录上一次数据同步的结束位置。
[0069]具体地,指令获取模块310接收内存数据库从机发送来的增量同步请求指令,该增量同步请求指令中携带有同步偏移地址。
[0070]容量判断模块320,用于判断当前需要同步到的数据的存储地址与所述同步偏移地址的差值是否大于增量同步缓存区的地址容量。
[0071]其中,所述当前需要同步到的数据可以是内存数据库主机的内存中最新写入的一个数据,该数据的存储地址与同步偏移地址的差值为一段地址,该段地址对应的数据就是本次需同步到内存数据库从机的数据。
[0072]具体地,容量判断模块320判断当前需要同步到的数据的存储地址与同步偏移地址的差值是否大于增量同步缓存区的地址容量。应理解地,若该差值小于增量同步缓存区的地址容量,则说明计划同步到内存数据库从机的数据都可以在增量同步缓存区缓存的临时数据中找到;若该差值大于增量同步缓存区的地址容量,则说明本次需同步到内存数据库从机的数据超出了增量同步缓存区缓存的临时数据,其中一部分数据已经被覆盖保存,无法在增量同步缓存区中找到。
[0073]进一步地,增量同步请求指令除包括同步偏移地址外还包括内存数据库从机的运行号。其中运行号用于指示内存数据库当前正处于的工作流,若各个内存数据库的运行号相同,则说明这些内存数据库处于同一个工作流,反之处于不同的工作流,应理解地,处于不同工作流的内存数据库不能通过增量同步来保持数据的一致性。因此,容量判断模块320具体用于在确定内存数据库从机的运行号等于其运行号时,判断当前需要同步到的数据的存储地址与所述同步偏移地址的差值是否大于增量同步缓存区的地址容量。
[0074]第一发送模块330,用于若否,则将所述增量同步缓存区中在所述同步偏移地址以后的数据发送给所述内存数据库从机以实现增量同步。
[0075]具体地,第一发送模块330在判定当前需要同步到的数据的存储地址与同步偏移地址的差值不大于增量同步缓存区的地址容量时,先向内存数据库从机发送增量同步允许消息以指示内存数据库从机做好增量同步的准备,再在增量同步缓存区中找到同步偏移地址对应的位置,接着将增量同步缓存区中在同步偏移地址以后的数据发送给内存数据库从机,最后内存数据库将接收的数据写入内存,实现增量同步。其中,请参阅图6,图中最大地址表示增量同步缓存区中最新写入的数据的地址,增量同步缓存区中在同步偏移地址以后的数据即为同步偏移地址和最大地址之间的数据。
[0076]第二发送模块340,用于若是,则将持久化数据保存文件中在所述同步偏移地址以后的数据发送给所述内存数据库从机以实现增量同步。
[0077]具体地,第二发送模块340在判定当前需要同步到的数据的存储地址与同步偏移地址的差值大于增量同步缓存区的地址容量时,先向内存数据库从机发送增量同步允许消息以指示内存数据库从机做好增量同步的准备,再在持久化数据保存文件中找到同步偏移地址对应的位置,接着将持久化数据保存文件中在同步偏移地址以后的数据发送给内存数据库从机,最后内存数据库将接收的数据写入内存,实现增量同步。其中,请参阅图7,图中最大地址表示持久化数据保存文件中最新记录的数据的地址,持久化数据保存文件中在同步偏移地址以后的数据即为同步偏移地址和最大地址之间的数据。可见,本发明实施例不同于现有技术的是,针对上述情况,可以通过持久化数据保存文件增量同步的方式代替增量同步缓存区增量同步的方式,进而保证了主从机数据的一致性,同时也避免了进行全量同步,从而提高了同步效率以及改善了内存数据库主机的处理性能。
[0078]可选地,请参阅图5,如图所示本发明实施例中的内存数据库主机还可以包括第三发送模块350,用于当所述内存数据库从机的运行号不等于本机的运行号时,生成内存数据库镜像文件,并将其发送给所述内存数据库从机以实现全量同步。
[0079]具体地,第三发送模块350在确定内存数据库从机的运行号不等于其运行号时,生成内存数据库镜像文件,并将其发送给内存数据库从机以实现全量同步。例如:一个新加入内存数据库集群的内存数据库从机,其运行号肯定不同于内存数据库主机的运行号,该内存数据库从机不能通过增量同步与内存数据库主机保持数据的一致性,在向内存数据库主机发送增量同步请求指令后,第三发送模块350执行内存数据库镜像文件全量同步。其中内存数据库镜像是包括内存数据库主机的内存中所有数据的一个数据包,内存数据库从机通过加载内存数据库镜像可以在其内存中写入内存数据库主机的内存中的所有数据,故为全量同步。具体实现过程中,第三发送模块350确定内存数据库从机的运行号不等于其运行号时,先向内存数据库从机发送全量同步消息以指示内存数据库从机做好全量同步的准备,接着生成内存数据库镜像文件,再将生成的内存数据库镜像文件通过FTP (FileTransfer Protocol,文件传输协议)方式发送给内存数据库从机,最后内存数据库从机加载该内存数据库镜像,实现全量同步。
[0080]又可选地,请参阅图5,如图所示本发明实施例中的内存数据库主机还可以包括缓存区创建模块360,用于在初始化时创建增量同步缓存区以保存临时数据。
[0081]具体地,缓存区创建模块360在初始化时会创建一个增量同步缓存区。其中,内存数据库主机在向内存写入数据的时候,缓存区创建模块360同时会把数据写入增量同步缓存区。需要指出的是,增量同步缓存区是以环形存储的方式写入数据,即写入的数据超过增量同步缓存区的缓存大小时,会循环覆盖之前的数据,从而达到节省存储空间的目的,因而增量同步缓存区主要用于保存临时数据。
[0082]又可选地,请参阅图5,如图所示本发明实施例中的内存数据库主机还可以包括文件记录模块370,用于在每次向内存写入数据时,将该数据记录到持久化数据保存文件中。
[0083]具体地,内存数据库主机在每次向内存写入数据时,文件记录模块370会将该数据记录到持久化数据保存持久化数据保存文件中。具体实现过程中,文件记录模块370可以通过勾选配置文件中的appendonly选项实现上述功能。需要指出的是,不
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1