主从数据库的同步方法及装置的制造方法

文档序号:10552984阅读:392来源:国知局
主从数据库的同步方法及装置的制造方法
【专利摘要】本发明公开了一种主从数据库的同步方法及装置。其中,所述方法包括:接收到数据写请求时,将数据写入主数据库中,并将数据写操作顺序记录到主数据库的本地日志文件中,并更新第一文件偏移量,所述第一文件偏移量是主数据库数据对应于本地日志文件的文件偏移量;读取主数据库的本地日志文件,根据所述第一文件偏移量将新增的数据写操作对应的数据同步至从数据库。基于上述实施方案,本发明无需在主数据库针对每个从数据库分别存储日志文件,减少了对分布式数据存储系统的空间占用,避免浪费存储空间,且进一步提升了主数据库和从数据库中数据同步一致性。
【专利说明】
主从数据库的同步方法及装置
技术领域
[0001]本发明涉及互联网技术领域,具体涉及一种主从数据库的同步方法及装置。
【背景技术】
[0002]现有技术中,分布式存储系统通常包括一个主数据库和若干个从数据库,为了保持主数据库与从数据库之间的数据同步,现有技术一般采用的方法是:分别针对每个从数据库建立并存储一个对应的日志文件,当在主数据写入数据后,会相应的在每个日志文件记录相应的数据写操作,以用于对从数据库进行数据同步。这种方式不仅浪费分布式数据存储系统的空间,而且,在将主数据库的数据同步至从数据库的过程中,将会阻塞数据写入主数据库,也就是说,在主数据库的数据同步至从数据库后,才可以将数据写入到主数据库中,降低了数据写入效率和同步效率。

【发明内容】

[0003]鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的主从数据库的同步方法和相应的主从数据库的同步装置。
[0004]根据本发明的一个方面,提供了一种主从数据库的同步方法,其包括:
[0005]当接收到数据写请求时,将数据写入主数据库中,并将数据写操作顺序记录到主数据库的本地日志文件中,并更新第一文件偏移量,第一文件偏移量是主数据库数据对应于本地日志文件的文件偏移量;
[0006]读取主数据库的本地日志文件,根据第一文件偏移量将新增的数据写操作对应的数据同步至从数据库。
[0007]根据本发明的另一方面,提供了一种主从数据库的同步装置,其包括:
[0008]写数据处理模块,适于当接收到数据写请求时,将数据写入主数据库中,并将数据写操作顺序记录到主数据库的本地日志文件中,并更新第一文件偏移量,第一文件偏移量是主数据库数据对应于本地日志文件的文件偏移量;
[0009]同步模块,适于读取主数据库的本地日志文件,根据第一文件偏移量将新增的数据写操作对应的数据同步至从数据库。
[0010]根据本发明提供的技术方案,当接收到数据写请求时,将数据写入主数据库中,并将数据写操作顺序记录到主数据库的本地日志文件中,并更新第一文件偏移量,第一文件偏移量是主数据库数据对应于本地日志文件的文件偏移量;读取主数据库的本地日志文件,根据第一文件偏移量将新增的数据写操作对应的数据同步至从数据库。基于上述实施方案,本发明无需在主数据库针对每个从数据库分别存储日志文件,减少了对分布式数据存储系统的空间占用,并且数据写入主数据库与数据同步至从数据库可以同时执行,并不会因为执行数据同步而阻塞数据写入主数据库,从而提高了数据写入效率和同步效率,避免浪费存储空间,且进一步提升了主数据库和从数据库中数据同步一致性。
[0011]上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的【具体实施方式】。
【附图说明】
[0012]通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0013]图1示出了根据本发明一个实施例的主从数据库的同步方法的流程示意图;
[0014]图2示出了根据本发明另一个实施例的主从数据库的同步方法的流程示意图;
[0015]图3示出了根据本发明另一个实施例的主从数据库的同步方法的流程示意图;
[0016]图4示出了根据本发明一个实施例的主从数据库的同步装置的结构框图;
[0017]图5示出了根据本发明另一个实施例的主从数据库的同步装置的结构框图;
[0018]图6示出了根据本发明另一个实施例的主从数据库的同步装置的结构框图。
【具体实施方式】
[0019]下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0020]分布式数据存储系统就是将数据分散存储在多台独立的设备上,也就是说,针对一份数据,存储至N个数据库,一般是存储至一个主数据库和多个从数据库,且数据是同步存储至主数据库和多个从数据库,以保证当主数据库中的数据出现问题时,并不会影响相应的服务。
[0021]图1示出了根据本发明一个实施例的主从数据库的同步方法的流程示意图。如图1所示,该方法包括以下步骤:
[0022]步骤S100,当接收到数据写请求时,将数据写入主数据库中,并将数据写操作顺序记录到主数据库的本地日志文件中,并更新第一文件偏移量。
[0023]其中,第一文件偏移量是主数据库中数据对应于本地日志文件的文件偏移量,根据该第一文件偏移量可以很方便地在本地日志文件查找到数据写操作记录,获得写入主数据库中的数据。
[0024]本地日志文件用于记录写入到主数据库的数据写操作记录,这里的本地日志文件可以是二进制日志文件,也称为Binlog文件,是一种逻辑日志,用于记录对数据所执行的数据写操作,并以二进制的形式保存在磁盘中。Binlog文件按照对数据所执行的数据写操作的顺序进行存储,而且记录次数与所执行操作的次数相对应,即,每对数据执行一次数据写操作,就在Binlog文件中记录一次。
[0025]具体地,当计算机用户需要将数据写入到分布式数据存储统的主数据库时,计算机用户向该分布式数据存储系统发送数据写入请求,分布式数据存储系统在接收到数据写入请求时,将数据写入主数据库中,并将数据写操作顺序记录到主数据库的本地日志文件中,并更新第一文件偏移量。
[0026]在将数据写操作顺序记录到主数据库的本地日志文件中之后,在本发明的实施例中,还需要向数据写请求的发起者返回数据写响应。
[0027]在更新第一文件偏移量之后,若需要将主数据库中的数据同步至从数据库,可以读取主数据库的本地日志文件,根据第一文件偏移量将新增的数据写操作对应的数据同步至从数据库,具体地,可以通过如下步骤实现将新增的数据同步至从数据库:
[0028]步骤SlOl,读取主数据库的本地日志文件,比较第一文件偏移量和第二文件偏移量是否一致,若不一致,则执行步骤S102;若一致,则返回至步骤S100。
[0029]其中,第二文件偏移量是已被同步至从数据库的数据对应于本地日志文件的文件偏移量,也就是说,根据该第二文件偏移量可以确定主数据库中哪些数据已被同步至从数据库。
[0030]在本发明实施例中,读取主数据库的本地日志文件,可以得到当前本地日志文件的第一文件偏移量,通过比较第一文件偏移量和第二文件按偏移量是否一致,来判断主数据库中的数据在前次同步至从数据库后是否发生更新,是否需要进行主数据库至从数据库的同步。
[0031]步骤S102,将新增的数据写操作对应的数据同步至从数据库。
[0032]在根据步骤SlOl判断出第一文件偏移量和第二文件偏移量不一致的情况下,可以确定在将第二文件偏移量对应的数据同步至从数据库后,主数据库中又新写入了其他数据,并将这些数据写操作顺序记录到主数据库的本地日志文件中,更新第一文件偏移量,而这些数据并未同步至从数据库,需要将新增的数据写操作对应的数据同步至从数据库。
[0033]在将新增的数据写操作对应的数据同步至从数据库后,需要对已同步至从数据库的数据对应于本地日志文件的第二文件偏移量进行更新。
[0034]步骤S103,更新第二文件偏移量。
[0035]这里是将第二文件偏移量更新为步骤SlOO中的第一文件偏移量。
[0036]步骤S104,在从数据库同步数据成功后,更新第三文件偏移量。
[0037]其中,第三文件偏移量是从数据库中数据对应于本地日志文件的文件偏移量,根据该第三文件偏移量可以确定本地日志文件中记录的哪些数据写操作对应的数据已被同步至从数据库,从而确定需要将哪些新增的数据同步至从数据库。
[0038]在主数据库的数据已经同步至从数据库后,将第三文件偏移量更新为步骤S103中的第二文件偏移量。
[0039]在数据同步过程中,可能会出现连接异常或连接超时的情况,在上述实施例的基础上,本发明还能够解决因连接异常或连接超时,导致的数据并未被及时同步至从数据库的缺陷,为了克服上述缺陷,具体可以采用如下方法步骤:
[0040]步骤一:若从数据库发现连接异常或者连接超时,则重新发起连接。
[0041]若主数据库与从数据库连接异常或者连接超时,从数据库将向主数据库重新发起连接,以在连接成功后,能够将主数据库中的数据同步至从数据库。
[0042]步骤二:在连接成功后,比较第二文件偏移量和第三文件偏移量是否一致,若不一致,则依据第三文件偏移量更新第二文件偏移量。
[0043]具体地,比较第二文件偏移量和第三文件偏移量是否一致,主要是为了确定在连接异常或连接超时前,主数据库中的数据是否被同步至从数据库,在比较出第二文件偏移量和第三文件偏移量不一致的情况下,可以确定在第三文件偏移量对应的数据同步至从数据库后,本地日志文件中从第三文件偏移量对应的数据到第二文件偏移量对应的数据并未被同步至从数据库,需要将主数据库中从第三文件偏移量对应的数据开始继续将数据同步至从数据库。具体地,可以依据第三文件偏移量更新所述第二文件偏移量,例如,将第二文件偏移量更新为第三文件偏移量。
[0044]根据本发明上述实施例提供的方法,接收到数据写请求时,将数据写入主数据库中,并将数据写操作顺序记录到主数据库的本地日志文件中,并更新第一文件偏移量,读取主数据库的本地日志文件,比较第一文件偏移量和第二文件偏移量是否一致,在第一文件偏移量和第二文件偏移量不一致的情况下,将新增的数据写操作对应的数据同步至从数据库,更新第二文件偏移量,在从数据库同步数据成功后,更新第三文件偏移量。基于上述实施方案,本发明无需在主数据库针对每个从数据库分别存储日志文件,减少了对分布式数据存储系统的空间占用,并且数据写入主数据库与数据同步至从数据库可以同时执行,并不会因为执行数据同步而阻塞数据写入主数据库,从而提高了数据写入效率,避免浪费存储空间,且进一步提升了主数据库和从数据库中数据同步一致性。
[0045]图2示出了根据本发明另一个实施例的主从数据库的同步方法的流程示意图。本实施例将以增加新的从数据库的场景,详细介绍主从数据库的同步方法,如图2所示,该方法包括以下步骤:
[0046]步骤S200,在接收到添加新的从数据库的请求后,备份包含主数据库所有数据的快照文件,并记录备份时的第一文件偏移量作为针对该新的从数据库的第二文件偏移量和第三文件偏移量。
[0047]其中,第一文件偏移量是主数据库中数据对应于本地日志文件的文件偏移量,根据该第一文件偏移量可以很方便地在本地日志文件查找到数据写操作记录;本地日志文件用于记录写入到主数据库的数据写操作记录。
[0048]第二文件偏移量是已被同步至从数据库的数据对应于本地日志文件的文件偏移量,也就是说,根据该第二文件偏移量可以确定主数据库中哪些数据已被同步至从数据库。
[0049]第三文件偏移量是从数据库中数据对应于本地日志文件的文件偏移量,根据该第三文件偏移量可以确定本地日志文件中记录的哪些数据写操作对应的数据已被同步至从数据库,从而确定需要将哪些新增的数据同步至从数据库。
[0050]具体地,在接收到添加新的从数据库请求后,需要将主数据库中已存储的数据同步给从数据库,当主数据库存储的数据量很大时,利用本地日志文件并不能快速、准确地将主数据库中已存储的数据同步给从数据库,在本发明实施例中,通过备份包含主数据库所有数据的快照文件,使新的从数据库加载该快照文件来实现同步主数据库中的数据的目的。
[0051]在备份包含主数据库所有数据的快照文件后,还需要记录备份时的第一文件偏移量,并将该第一文件偏移量作为针对该新的从数据库的第二文件偏移量和第三文件偏移量,以在从数据库加载快照文件结束后,可以根据该第二文件偏移量继续同步主数据库新增的数据,或者若连接异常或者连接超时,则可以根据新的从数据库的第二文件偏移量和第三文件偏移量继续同步主数据库中的数据。例如,在备份包含主数据库所有数据的快照文件时,所记录的第一文件偏移量为6-47,则将6-47作为针对该新的从数据库的第二文件偏移量和第三文件偏移量,即第二文件偏移量和第三文件偏移量为6-47。
[0052]步骤S201,将快照文件发送给新的从数据库,使新的从数据库加载主数据库的所有数据,以使新的从数据库正常工作。
[0053]具体地,将步骤S200中备份的快照文件发给新的从数据库,新的从数据库通过加载快照文件,实现将主数据库的所有数据加载到新的从数据库,在将主数据库的所有数据加载到新的从数据库后,该新的从数据库将能够正常工作。
[0054]步骤S202,在备份包含主数据库所有数据的快照文件过程中,当接收到数据写请求时,将数据写入主数据库中,并将数据写操作顺序记录到主数据库的本地日志文件中,并更新第一文件偏移量。
[0055]具体地,当计算机用户需要将数据写入到分布式数据存储统的主数据库时,计算机用户向该分布式数据存储系统发送数据写入请求,分布式数据存储系统在接收到数据写入请求时,将数据写入主数据库中,并将数据写操作顺序记录到主数据库的本地日志文件中,并更新第一文件偏移量,例如更新后的第一文件偏移量为7-30。
[0056]在将数据写操作顺序记录到主数据库的本地日志文件中之后,在本发明的实施例中,还需要向数据写请求的发起者返回数据写响应。
[0057]步骤S203,读取主数据库的本地日志文件,比较第一文件偏移量和第二文件偏移量是否一致,若不一致,则执行步骤S204;若一致,则返回至步骤S202。
[0058]在本发明实施例中,读取主数据库的本地日志文件,可以得到当前本地日志文件的第一文件偏移量,通过比较第一文件偏移量和第二文件按偏移量是否一致,来判断主数据库中的数据在获取以及加载主数据库所有数据的快照文件的过程中是否发生更新,是否需要将主数据库中的数据同步至从数据库。
[0059]步骤S204,将新增的数据写操作对应的数据同步至该新的从数据库。
[0060]在根据步骤S203判断出第一文件偏移量和第二文件偏移量不一致的情况下,可以确定在将第二文件偏移量对应的数据同步至从数据库后,主数据库中又新写入了其他数据,并将这些数据写操作顺序记录到主数据库的本地日志文件中,更新第一文件偏移量,而这些数据并未同步至从数据库,需要将新增的数据写操作对应的数据同步至从数据库,即将第二文件偏移量6-47至第一文件偏移量7-30对应的主数据库的数据同步至从数据库。
[0061]在将新增的数据写操作对应的数据同步至从数据库后,需要对已同步至从数据库的数据对应于本地日志文件的第二文件偏移量进行更新。
[0062]步骤S205,更新第二文件偏移量。
[0063]这里是将第二文件偏移量更新为步骤S202中的第一文件偏移量。
[0064]步骤S206,在从数据库同步数据成功后,更新第三文件偏移量。
[0065]在主数据库的数据已经同步至从数据库后,将第三文件偏移量更新为步骤S205中的第二文件偏移量。
[0066]根据本发明上述实施例提供的方法,在接收到添加新的从数据库的请求后,备份包含主数据库所有数据的快照文件,并记录备份时的第一文件偏移量作为针对该新的从数据库的第二文件偏移量和第三文件偏移量,将快照文件发送给新的从数据库,使新的从数据库加载主数据库的所有数据,以使新的从数据库正常工作,新的从数据库正常工作后,将与其他从数据库同步方法相同。基于上述实施方案,本发明无需在主数据库针对每个从数据库分别存储日志文件,减少了对分布式数据存储系统的空间占用,并且数据写入主数据库与数据同步至从数据库可以同时执行,当增加新的从数据库后,可以使从数据库快速地加载到主数据库的数据,且不会阻塞数据写入主数据库,从而提高了数据写入效率,避免浪费存储空间,且进一步提升了主数据库和从数据库中数据同步一致性。
[0067]上文中的Binlog文件是一具有固定大小的文件,一般可以设定Binlog文件的大小为20M,当一个Binlog文件递增到20M后,即新建另一个Binlog文件来记录对数据所执行的数据写操作,也就是说,主数据库的本地日志文件有多个,而且可以为每个本地日志文件设置文件编号,即:每个本地日志文件具有唯一的文件编号;这样本地日志文件的文件偏移量包括:文件编号和文件内偏移量。下面实施例将以定期删除本地日志文件为应用场景介绍主从数据库的同步方法,也就是说,在本发明实施例中,当主数据库中的数据被实时同步至从数据库后,可以每隔预设时间删除预设数量的本地日志文件,以避免占用磁盘空间,本领域技术人员可以根据实际需要设定预设时间和预设数量,这里不做具体限定。
[0068]图3示出了根据本发明另一个实施例的主从数据库的同步方法的流程示意图。如图3所示,该方法包括以下步骤:
[0069]步骤S300,当接收到数据写请求时,将数据写入主数据库中,并将数据写操作顺序记录到主数据库的本地日志文件中,并更新第一文件偏移量。
[0070]其中,第一文件偏移量是主数据库中数据对应于本地日志文件的文件偏移量,根据该第一文件偏移量可以很方便地在本地日志文件查找到数据写操作记录;本地日志文件用于记录写入到主数据库的数据写操作记录。
[0071]具体地,当计算机用户需要将数据写入到分布式数据存储统的主数据库时,计算机用户向该分布式数据存储系统发送数据写入请求,分布式数据存储系统在接收到数据写入请求时,将数据写入主数据库中,并将数据写操作顺序记录到主数据库的本地日志文件中,并更新第一文件偏移量。
[0072]在将数据写操作顺序记录到主数据库的本地日志文件中之后,在本发明的实施例中,还需要向数据写请求的发起者返回数据写响应。
[0073]在更新第一文件偏移量之后,若需要将主数据库中的数据同步至从数据库,可以读取主数据库的本地日志文件,根据第一文件偏移量将新增的数据写操作对应的数据同步至从数据库,具体地,可以通过如下步骤实现将新增的数据同步至从数据库:
[0074]步骤S301,读取主数据库的本地日志文件,比较第一文件偏移量和第二文件偏移量是否一致,若不一致,则执行步骤S302;若一致,则返回至步骤S300。
[0075]其中,第二文件偏移量是已被同步至从数据库的数据对应于本地日志文件的文件偏移量,也就是说,根据该第二文件偏移量可以确定主数据库中哪些数据已被同步至从数据库。
[0076]在本发明实施例中,读取主数据库的本地日志文件,可以得到当前本地日志文件的第一文件偏移量,通过比较第一文件偏移量和第二文件按偏移量是否一致,来判断主数据库中的数据在前次同步至从数据库后是否发生更新,是否需要进行主数据库至从数据库的同步。
[0077]步骤S302,将新增的数据写操作对应的数据同步至从数据库。
[0078]在根据步骤S301判断出第一文件偏移量和第二文件偏移量不一致的情况下,可以确定在将第二文件偏移量对应的数据同步至从数据库后,主数据库中又新写入了其他数据,并将这些数据写操作顺序记录到主数据库的本地日志文件中,更新第一文件偏移量,而这些数据并未同步至从数据库,需要将新增的数据写操作对应的数据同步至从数据库。
[0079]在将新增的数据写操作对应的数据同步至从数据库后,需要对已同步至从数据库的数据对应于本地日志文件的第二文件偏移量进行更新。
[0080]步骤S303,更新第二文件偏移量。
[0081 ]这里是将第二文件偏移量更新为步骤S300中的第一文件偏移量。
[0082]步骤S304,在从数据库同步数据成功后,更新第三文件偏移量。
[0083]其中,第三文件偏移量是从数据库中数据对应于本地日志文件的文件偏移量,根据该第三文件偏移量可以确定本地日志文件中记录的哪些数据写操作对应的数据已被同步至从数据库,从而确定需要将哪些新增的数据同步至从数据库。
[0084]步骤S305,若从数据库发现连接异常或者连接超时,重新发起连接。
[0085]步骤S306,在连接成功后,比较第二文件偏移量和第三文件偏移量是否一致,若不一致,则执行步骤S307 ;若一致,则执行步骤S308。
[0086]具体地,比较第二文件偏移量和第三文件偏移量是否一致,主要是为了确定在连接异常或连接超时前,主数据库中的数据是否被成功同步至从数据库,在比较出第二文件偏移量和第三文件偏移量不一致的情况下,可以确定在第三文件偏移量对应的数据同步至从数据库后,对于本地日志文件中,从第三文件偏移量对应的数据到第二文件偏移量对应的数据并未被同步至从数据库,需要将主数据库中从第三文件偏移量对应的数据开始重新将这部分数据同步至从数据库;在第二文件偏移量和第三文件偏移量一致的情况下,还需要确定第二文件偏移量对应的本地日志文件是否存在。
[0087]步骤S307,依据第三文件偏移量更新第二文件偏移量。
[0088]具体地,在第三文件偏移量与第二文件偏移量不一致的情况下,将第二文件偏移量更新为第三文件偏移量,以从第三文件偏移量处开始将主数据库的数据同步至从数据库。
[0089]步骤S308,查找第二文件偏移量对应的本地日志文件是否存在,若存在,则执行步骤S309,若不存在,则执行步骤S310。
[0090]在本发明实施例中介绍了,每隔预设时间删除预设数量的本地日志文件,因此,在依据第三文件偏移量更新第二文件偏移量之后,需要查找第二文件偏移量对应的日志文件是否存在,根据第二文件偏移量对应的本地日志文件是否存在可以确定对应的本地日志文件是否被删除。
[0091 ]步骤S309,通过比较第一文件偏移量和第二文件偏移量是否一致进行同步续传。
[0092]在第二文件偏移量对应的本地日志文件存在的情况下,通过比较第一文件偏移量和第二文件偏移量是否一致进行同步续传,若第一文件偏移量和第二文件偏移量一致,则说明无需续传,若第一文件偏移量和第二文件偏移量不一致,则说明需要续传,将根据第二文件偏移量将新增的数据写操作对应的数据同步至该从数据库。
[0093]步骤S310,备份包含主数据库所有数据的快照文件,记录备份时的第一文件偏移量为针对该从数据库的第二文件偏移量和第三文件偏移量。
[0094]在第二文件偏移量对应的本地日志文件不存在的情况下,说明相应的本地日志文件已被删除,无法再根据第二文件偏移量将新增的数据写操作对应的数据同步至该从数据库,就需要备份包含主数据库所有数据的快照文件,记录备份时的第一文件偏移量为针对该从数据库的第二文件偏移量和第三文件偏移量。
[0095]步骤S311,将快照文件发送给从数据库,使从数据库加载主数据库的所有数据。
[0096]具体地,将步骤S310中备份的快照文件发给新的从数据库,新的从数据库通过加载快照文件,实现将主数据库的所有数据加载到新的从数据库,在将主数据库的所有数据加载到新的从数据库后,该新的从数据库将能够正常工作。
[0097]步骤S312,在从数据库正常工作后,根据当前的第一文件偏移量将新增的数据写操作对应的数据同步至该从数据库。
[0098]具体地,在新的从数据库加载完主数据库的所有数据后,该新的从数据库将能够正常工作,在备份包含主数据库所有数据的快照文件的过程中,主数据库可能还会写入新的数据,这里就需要根据当前的第一文件偏移量将新增的数据写操作对应的数据同步至该新的从数据库,实现从数据库能够实时同步主数据库中的数据。
[0099]下面将通过实例介绍在删除本地日志文件情况,若发生连接异常或者连接超时,主从数据库的同步方法:
[0100]举例说明,本地日志文件有5个,分别编号:1、2、3、4、5,在预设时间段删除了编号为1、2、3、4的本地日志文件,若发生连接异常或者连接超时,从数据库重新发起连接,在连接成功后,发现从数据库对应于本地日志文件的文件偏移量为4-67,即第三文件偏移量为4-67,而已同步至从数据库的数据对应于本地日志文件的文件偏移量为5-30,即第二文件偏移量为5-30,比较得到第二文件偏移量和第三文件偏移量不一致,将依据第三文件偏移量更新第二文件偏移量,更新后的第二文件偏移量为4-67,并根据更新后的第二文件偏移量查找相应的本地日志文件是否存在,也就是查找编号为4的本地日志文件是否存在,得到编号为4的本地日志文件并不存在的情况下,备份包含主数据库所有数据的快照文件,记录备份时的第一文件偏移量为针对该从数据库的第二文件偏移量和第三文件偏移量,将快照文件发送给从数据库,使从数据库加载主数据库的所有数据,在从数据库正常工作后,根据当前的第一文件偏移量将新增的数据写操作对应的数据同步至该从数据库。
[0101 ]针对上述全部实施例,读取主数据库的本地日志文件,根据第一文件偏移量将新增的数据写操作对应的数据同步至从数据库的步骤由同步线程执行,每个从数据库具有专属于自己的同步线程。如果新增一个从数据库,就要新启动一个同步线程,完成该从数据库的同步操作。
[0102]而且,本地日志文件被划分为等大小的分块,例如每个分块的大小为50KB,在将数据写操作顺序记录到主数据库的本地日志文件中时,可以将数据写操作顺序记录到主数据库的本地日志文件的一个或多个分块中。
[0103]为了能够准确查找到本地日志文件中数据写操作,在记录每条数据写操作之前,在分块中记录数据写操作的元信息,其中,数据写操作的元信息包含:数据写操作的占用字节数和用于表明当前分块包含全部或部分数据写操作的标识,例如Full标记当前分块包含一条完整的数据写操作,First标记当前分块包含一条数据写操作的开始部分,Middle标记当前分块包含一条数据写操作的中间部分,Last标记当前分块包含一条数据写操作的结束部分。[0?04] 例如,需要将三条数据写操作set a=l、set b = 3、set c = 7记录到主数据库的本地日志文件中,其中,数据写操作set a=l所占用字节数为20KB,数据写操作set b = 3所占用字节数为40KB,数据写操作set c = 7所占用字节数为110KB,本地日志文件每个分块的大小为50KB:
[0105]在记录数据写操作seta = l之前,在分块中记录该数据写操作的元信息,即在分块I中记录FulI标识,然后在分块I中记录数据写操作set a = l ;
[0106]在记录完数据写操作seta=l后,该分块的可用字节数小于30KB,并不能将数据写操作set b = 3全部记录于分块I,因此,在记录数据写操作set b = 3之前,在分块I中记录该分块仅包含部分数据写操作set b = 3的标识First,并在分块I中记录数据写操作set b=3的开始部分,在分块2开始部分记录该分块仅包含部分数据写操作set b = 3的标识Last,并在分块2中记录数据写操作set b = 3的结束部分;
[0107]在记录完数据写操作setb = 3后,该分块的可用字节数小于40KB,并不能将数据写操作set c = 7全部记录于分块2,因此,在记录数据写操作set c = 7之前,在分块2中记录该分块仅包含部分数据写操作set c = 7的标识First,并在分块2中记录数据写操作set c=7的开始部分,在分块3开始部分记录该分块仅包含部分数据写操作set c = 7的标识Middle,并在分块2中记录数据写操作set C = 7的中间部分,在分块4开始部分记录该分块仅包含部分数据写操作set c = 7的标识Last,并在分块4中记录数据写操作set b = 3的结束部分。
[0108]根据本发明上述实施例提供的方法,本发明无需在主数据库针对每个从数据库分别存储日志文件,减少了对分布式数据存储系统的空间占用,并且数据写入主数据库与数据同步至从数据库可以同时执行,当增加新的从数据库后,可以使从数据库快速地加载到主数据库的数据,且不会阻塞数据写入主数据库,从而提高了数据写入效率,避免浪费存储空间,且进一步提升了主数据库和从数据库中数据同步一致性,并且能够克服因连接异常或者连接超时导致的同步失败的缺陷,使得主数据库和从数据库的数据保持一致性。
[0109]图4示出了根据本发明一个实施例的主从数据库的同步装置的结构框图。如图4所示,该装置包括:写数据处理模块400和同步模块410。
[0110]写数据处理模块400,适于当接收到数据写请求时,将数据写入主数据库中,并将数据写操作顺序记录到主数据库的本地日志文件中,并更新第一文件偏移量,第一文件偏移量是主数据库中数据对应于本地日志文件的文件偏移量。
[0111]可选地,写数据处理模块400还适于:向数据写请求的发起者返回数据写响应。
[0112]同步模块410,适于读取主数据库的本地日志文件,根据第一文件偏移量将新增的数据写操作对应的数据同步至从数据库。
[0? ?3] 可选地,同步模块410进一步包括:第一比较单元411和同步单元412。
[0114]第一比较单元411,适于比较第一文件偏移量和第二文件偏移量是否一致。
[0115]同步单元412,适于在第一比较单元比较出第一文件偏移量和第二文件偏移量不一致的情况下,将新增的数据写操作对应的数据同步至从数据库。
[0116]可选地,同步模块410还包括:更新单元413,适于更新第二文件偏移量。
[0117]该装置还包括:通知模块420,适于通知从数据库在同步数据成功后更新第三文件偏移量,第三文件偏移量是从数据库中数据对应于本地日志文件的文件偏移量。
[0118]可选地,同步模块可以有多个,每个从数据库对应有专属于自己的同步模块。
[0119]可选地,该装置还包括:连接模块430,适于若与从数据库连接异常或者连接超时,重新建立与从数据库的连接。
[0120]同步模块410还包括:第二比较单元414,适于在连接成功后,比较第二文件偏移量和第三文件偏移量是否一致;
[0121]更新单元413进一步适于:在第二比较单元比较出第二文件偏移量和第三文件偏移量不一致的情况下,依据第三文件偏移量更新第二文件偏移量。
[0122]根据本发明上述实施例提供的装置,接收到数据写请求时,将数据写入主数据库中,并将数据写操作顺序记录到主数据库的本地日志文件中,并更新第一文件偏移量,读取主数据库的本地日志文件,比较第一文件偏移量和第二文件偏移量是否一致,在第一文件偏移量和第二文件偏移量不一致的情况下,将新增的数据写操作对应的数据同步至从数据库,更新第二文件偏移量,在从数据库同步数据成功后,更新第三文件偏移量。基于上述实施方案,本发明无需在主数据库针对每个从数据库分别存储日志文件,减少了对分布式数据存储系统的空间占用,并且数据写入主数据库与数据同步至从数据库可以同时执行,并不会因为执行数据同步而阻塞数据写入主数据库,从而提高了数据写入效率,避免浪费存储空间,且进一步提升了主数据库和从数据库中数据同步一致性。
[0123]图5示出了根据本发明另一个实施例的主从数据库的同步装置的结构框图。如图5所示,该装置包括:写数据处理模块500和同步模块510。
[0124]写数据处理模块500,适于当接收到数据写请求时,将数据写入主数据库中,并将数据写操作顺序记录到主数据库的本地日志文件中,并更新第一文件偏移量,第一文件偏移量是主数据库中数据对应于本地日志文件的文件偏移量。
[0125]可选地,写数据处理模块500还适于:向数据写请求的发起者返回数据写响应。
[0126]同步模块510,适于读取主数据库的本地日志文件,根据第一文件偏移量将新增的数据写操作对应的数据同步至从数据库。
[0127]可选地,同步模块510进一步包括:第一比较单元511和同步单元512。
[0128]第一比较单元511,适于比较第一文件偏移量和第二文件偏移量是否一致。
[0129]同步单元512,适于在第一比较单元比较出第一文件偏移量和第二文件偏移量不一致的情况下,将新增的数据写操作对应的数据同步至从数据库。
[0130]可选地,同步模块510还包括:更新单元513,适于更新第二文件偏移量。
[0131 ]可选地,装置还包括:通知模块520,适于通知从数据库在同步数据成功后更新第三文件偏移量,第三文件偏移量是从数据库中数据对应于本地日志文件的文件偏移量。
[0132]可选地,同步模块可以有多个,每个从数据库对应有专属于自己的同步模块。
[0?33 ]可选地,装置还包括:第一备份模块530、第一记录模块540、第一发送模块550。
[0134]第一备份模块530,适于在接收到添加新的从数据库的请求后,备份包含主数据库所有数据的快照文件;
[0135]第一记录模块540,适于记录备份时的第一文件偏移量作为针对该新的从数据库的第二文件偏移量和第三文件偏移量;
[0136]第一发送模块550,适于将快照文件发送给新的从数据库,使新的从数据库加载主数据库的所有数据;
[0137]同步模块510进一步适于:在新的从数据库正常工作后,根据当前的第一文件偏移量将新增的数据写操作对应的数据同步至该新的从数据库。
[0138]根据本发明上述实施例提供的装置,在接收到添加新的从数据库的请求后,备份包含主数据库所有数据的快照文件,并记录备份时的第一文件偏移量作为针对该新的从数据库的第二文件偏移量和第三文件偏移量,将快照文件发送给新的从数据库,使新的从数据库加载主数据库的所有数据,以使新的从数据库正常工作,新的从数据库正常工作后,将与其他从数据库同步方法相同。基于上述实施方案,本发明无需在主数据库针对每个从数据库分别存储日志文件,减少了对分布式数据存储系统的空间占用,并且数据写入主数据库与数据同步至从数据库可以同时执行,当增加新的从数据库后,可以使从数据库快速地加载到主数据库的数据,且不会阻塞数据写入主数据库,从而提高了数据写入效率,避免浪费存储空间,且进一步提升了主数据库和从数据库中数据同步一致性。
[0139]图6示出了根据本发明另一个实施例的主从数据库的同步装置的结构框图。如图6所示,该装置包括:写数据处理模块600和同步模块610。
[0140]写数据处理模块600,适于当接收到数据写请求时,将数据写入主数据库中,并将数据写操作顺序记录到主数据库的本地日志文件中,并更新第一文件偏移量,第一文件偏移量是主数据库中数据对应于本地日志文件的文件偏移量。
[0141 ]可选地,主数据库的本地日志文件有多个,每个本地日志文件具有唯一的文件编号;
[0142]本地日志文件的文件偏移量包括:文件编号和文件内偏移量。
[0143]可选地,写数据处理模块600还适于:向数据写请求的发起者返回数据写响应。
[0144]同步模块610,适于读取主数据库的本地日志文件,根据第一文件偏移量将新增的数据写操作对应的数据同步至从数据库。
[OH5] 可选地,同步模块610进一步包括:第一比较单元611和同步单元612。
[0146]第一比较单元611,适于比较第一文件偏移量和第二文件偏移量是否一致。
[0147]同步单元612,适于在第一比较单元比较出第一文件偏移量和第二文件偏移量不一致的情况下,将新增的数据写操作对应的数据同步至从数据库。
[0148]可选地,同步模块610还包括:更新单元613,适于更新第二文件偏移量。
[0149]可选地,该装置还包括:通知模块620,适于通知从数据库在同步数据成功后更新第三文件偏移量,第三文件偏移量是从数据库中数据对应于本地日志文件的文件偏移量。
[0150]可选地,同步模块可以有多个,每个从数据库对应有专属于自己的同步模块。
[0151]可选地,该装置还包括:删除模块630,适于每隔预设时间删除预设数量的本地日志文件。
[0152]可选地,该装置还包括:连接模块640,适于若与从数据库连接异常或者连接超时,重新建立与从数据库的连接;
[0153]同步模块还包括:第三比较单元614,适于在连接成功后,比较第二文件偏移量和第三文件偏移量是否一致;
[0154]更新单元613进一步适于:在第三比较单元比较出第二文件偏移量和第三文件偏移量不一致的情况下,依据第三文件偏移量更新第二文件偏移量;
[0155]可选地,该装置还包括:查找模块650,适于查找第二文件偏移量对应的本地日志文件是否存在;
[0156]同步模块610进一步适于:在查找到第二文件偏移量对应的本地日志文件的情况下,通过比较第一文件偏移量和第二文件偏移量是否一致进行同步续传;
[0157]可选地,该装置还包括:第二备份模块660、第二记录模块670、第二发送模块680。
[0158]第二备份模块660,适于在未查找到第二文件偏移量对应的本地日志文件的情况下,备份包含主数据库所有数据的快照文件;
[0159]第二记录模块670,适于记录备份时的第一文件偏移量为针对该从数据库的第二文件偏移量和第三文件偏移量;
[0160]第二发送模块680,适于将快照文件发送给从数据库,使从数据库加载主数据库的所有数据;
[0161]同步模块610进一步适于:在从数据库正常工作后,根据当前的第一文件偏移量将新增的数据写操作对应的数据同步至该从数据库。
[0162]根据本发明上述实施例提供的方法,本发明无需在主数据库针对每个从数据库分别存储日志文件,减少了对分布式数据存储系统的空间占用,并且数据写入主数据库与数据同步至从数据库可以同时执行,当增加新的从数据库后,可以使从数据库快速地加载到主数据库的数据,且不会阻塞数据写入主数据库,从而提高了数据写入效率,避免浪费存储空间,且进一步提升了主数据库和从数据库中数据同步一致性,并且能够克服因连接异常或者连接超时导致的同步失败的缺陷,使得主数据库和从数据库的数据保持一致性。
[0163]针对上述全部实施例,写数据处理模块进一步适于:将数据写操作顺序记录到主数据库的本地日志文件的一个或多个分块中。
[0164]可选地,写数据处理模块进一步适于:在记录每条数据写操作之前,在分块中记录数据写操作的元信息。
[0165]可选地,数据写操作的元信息包含:数据写操作的占用字节数和用于表明当前分块包含全部或部分数据写操作的标识。
[0166]在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
[0167]在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
[0168]类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循【具体实施方式】的权利要求书由此明确地并入该【具体实施方式】,其中每个权利要求本身都作为本发明的单独实施例。
[0169]本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
[0170]此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
[0171]本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的主从数据库的同步设备中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
[0172]应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
[0173]本发明公开了:A1、一种主从数据库的同步方法,其包括:
[0174]当接收到数据写请求时,将数据写入主数据库中,并将数据写操作顺序记录到主数据库的本地日志文件中,并更新第一文件偏移量,所述第一文件偏移量是主数据库数据对应于本地日志文件的文件偏移量;
[0175]读取所述主数据库的本地日志文件,根据所述第一文件偏移量将新增的数据写操作对应的数据同步至从数据库。
[0176]A2、根据Al所述的方法,其中,在所述将数据写操作顺序记录到主数据库的本地日志文件中之后,所述方法还包括:向所述数据写请求的发起者返回数据写响应。
[0177]A3、根据Al所述的方法,其中,所述根据第一文件偏移量将新增的数据写操作对应的数据同步至从数据库进一步包括:
[0178]比较所述第一文件偏移量和第二文件偏移量是否一致,所述第二文件偏移量是已同步至从数据库的数据对应于本地日志文件的文件偏移量;
[0179]若不一致,则将新增的数据写操作对应的数据同步至从数据库。
[0180]A4、根据A3所述的方法,其中,在将新增的数据写操作对应的数据同步至从数据库之后,所述方法还包括:
[0181 ]更新所述第二文件偏移量;
[0182]在从数据库同步数据成功后,更新第三文件偏移量,所述第三文件偏移量是从数据库数据对应于本地日志文件的文件偏移量。
[0183]A5、根据A1-A4任一项所述的方法,其中,所述读取主数据库的本地日志文件,根据所述第一文件偏移量将新增的数据写操作对应的数据同步至从数据库的步骤由同步线程执行,每个从数据库具有专属于自己的同步线程。
[0184]A6、根据A4所述的方法,其中,所述方法还包括:
[0185]在接收到添加新的从数据库的请求后,备份包含主数据库所有数据的快照文件,并记录备份时的第一文件偏移量作为针对该新的从数据库的第二文件偏移量和第三文件偏移量;
[0186]将所述快照文件发送给新的从数据库,使所述新的从数据库加载主数据库的所有数据;
[0187]在所述新的从数据库正常工作后,根据当前的第一文件偏移量将新增的数据写操作对应的数据同步至该新的从数据库。
[0188]A7、根据A4所述的方法,其中,所述方法还包括:
[0189]若从数据库发现连接异常或者连接超时,重新发起连接;
[0190]在连接成功后,比较所述第二文件偏移量和所述第三文件偏移量是否一致,若不一致,则依据第三文件偏移量更新所述第二文件偏移量。
[0191]AS、根据A4所述的方法,其中,所述主数据库的本地日志文件有多个,每个本地日志文件具有唯一的文件编号;
[0192]所述本地日志文件的文件偏移量包括:文件编号和文件内偏移量。
[0193]A9、根据AS所述的方法,其中,所述方法还包括:每隔预设时间删除预设数量的本地日志文件。
[0194]A10、根据A9所述的方法,其中,所述方法还包括:
[0195]若从数据库发现连接异常或者连接超时,重新发起连接;
[0196]在连接成功后,比较所述第二文件偏移量和所述第三文件偏移量是否一致,若不一致,则依据第三文件偏移量更新所述第二文件偏移量;
[0197]查找所述第二文件偏移量对应的本地日志文件是否存在;
[0198]若存在,则通过比较所述第一文件偏移量和第二文件偏移量是否一致进行同步续传;
[0199]若不存在,则备份包含主数据库所有数据的快照文件,记录备份时的第一文件偏移量为针对该从数据库的第二文件偏移量和第三文件偏移量;将所述快照文件发送给从数据库,使所述从数据库加载主数据库的所有数据;在所述从数据库正常工作后,根据当前的第一文件偏移量将新增的数据写操作对应的数据同步至该从数据库。
[0200]AU、根据Al-AlO任一项所述的方法,其中,所述将数据写操作顺序记录到主数据库的本地日志文件中进一步包括:将数据写操作顺序记录到主数据库的本地日志文件的一个或多个分块中。
[0201]A12、根据All所述的方法,其中,在将数据写操作顺序记录到主数据库的本地日志文件的一个或多个分块中时,所述方法还包括:在记录每条数据写操作之前,在分块中记录数据写操作的元信息。
[0202]A13、根据A12所述的方法,其中,数据写操作的元信息包含:数据写操作的占用字节数和用于表明当前分块包含全部或部分数据写操作的标识。
[0203]本发明还公开了:B14、一种主从数据库的同步装置,其包括:
[0204]写数据处理模块,适于当接收到数据写请求时,将数据写入主数据库中,并将数据写操作顺序记录到主数据库的本地日志文件中,并更新第一文件偏移量,所述第一文件偏移量是主数据库数据对应于本地日志文件的文件偏移量;
[0205]同步模块,适于读取所述主数据库的本地日志文件,根据所述第一文件偏移量将新增的数据写操作对应的数据同步至从数据库。
[0206]B15、根据B14所述的装置,其中,所述写数据处理模块还适于:向所述数据写请求的发起者返回数据写响应。
[0207]B16、根据B14所述的装置,其中,所述同步模块进一步包括:
[0208]第一比较单元,适于比较所述第一文件偏移量和第二文件偏移量是否一致;
[0209]同步单元,适于在所述第一比较单元比较出所述第一文件偏移量和第二文件偏移量不一致的情况下,将新增的数据写操作对应的数据同步至从数据库。
[0210]B17、根据B16所述的装置,其中,所述同步模块还包括:更新单元,适于更新所述第二文件偏移量;
[0211 ]所述装置还包括:通知模块,适于通知从数据库在同步数据成功后更新第三文件偏移量,所述第三文件偏移量是从数据库数据对应于本地日志文件的文件偏移量。
[0212]B18、根据B14-B17任一项所述的装置,其中,所述同步模块为多个,每个从数据库对应有专属于自己的同步模块。
[0213]B19、根据B17所述的装置,其中,所述装置还包括:
[0214]第一备份模块,适于在接收到添加新的从数据库的请求后,备份包含主数据库所有数据的快照文件;
[0215]第一记录模块,适于记录备份时的第一文件偏移量作为针对该新的从数据库的第二文件偏移量和第三文件偏移量;
[0216]第一发送模块,适于将所述快照文件发送给新的从数据库,使所述新的从数据库加载主数据库的所有数据;
[0217]同步模块进一步适于:在所述新的从数据库正常工作后,根据当前的第一文件偏移量将新增的数据写操作对应的数据同步至该新的从数据库。
[0218]B20、根据B17所述的装置,其中,所述装置还包括:连接模块,适于若与从数据库连接异常或者连接超时,重新建立与从数据库的连接;
[0219]所述同步模块还包括:
[0220]第二比较单元,适于在连接成功后,比较所述第二文件偏移量和所述第三文件偏移量是否一致;
[0221]所述更新单元进一步适于:在所述第二比较单元比较出所述第二文件偏移量和所述第三文件偏移量不一致的情况下,依据第三文件偏移量更新所述第二文件偏移量。
[0222]B21、根据B17所述的装置,其中,所述主数据库的本地日志文件有多个,每个本地日志文件具有唯一的文件编号;
[0223]所述本地日志文件的文件偏移量包括:文件编号和文件内偏移量。
[0224]B22、根据B21所述的装置,其中,所述装置还包括:删除模块,适于每隔预设时间删除预设数量的本地日志文件。
[0225]B23、根据B22所述的装置,其中,所述装置还包括:连接模块,适于若与从数据库连接异常或者连接超时,重新建立与从数据库的连接;
[0226]所述同步模块还包括:第三比较单元,适于在连接成功后,比较所述第二文件偏移量和所述第三文件偏移量是否一致;
[0227]所述更新单元进一步适于:在所述第三比较单元比较出所述第二文件偏移量和所述第三文件偏移量不一致的情况下,依据第三文件偏移量更新所述第二文件偏移量;
[0228]所述装置还包括:查找模块,适于查找所述第二文件偏移量对应的本地日志文件是否存在;
[0229]所述同步模块进一步适于:在查找到所述第二文件偏移量对应的本地日志文件的情况下,通过比较所述第一文件偏移量和第二文件偏移量是否一致进行同步续传;
[0230]所述装置还包括:
[0231]第二备份模块,适于在未查找到所述第二文件偏移量对应的本地日志文件的情况下,备份包含主数据库所有数据的快照文件;
[0232]第二记录模块,适于记录备份时的第一文件偏移量为针对该从数据库的第二文件偏移量和第三文件偏移量;
[0233]第二发送模块,适于将所述快照文件发送给从数据库,使所述从数据库加载主数据库的所有数据;
[0234]所述同步模块进一步适于:在所述从数据库正常工作后,根据当前的第一文件偏移量将新增的数据写操作对应的数据同步至该从数据库。
[0235]B24、根据B14-B23任一项所述的装置,其中,所述写数据处理模块进一步适于:将数据写操作顺序记录到主数据库的本地日志文件的一个或多个分块中。
[0236]B25、根据B24所述的装置,其中,所述写数据处理模块进一步适于:在记录每条数据写操作之前,在分块中记录数据写操作的元信息。
[0237]B26、根据B25所述的装置,其中,数据写操作的元信息包含:数据写操作的占用字节数和用于表明当前分块包含全部或部分数据写操作的标识。
【主权项】
1.一种主从数据库的同步方法,其包括: 当接收到数据写请求时,将数据写入主数据库中,并将数据写操作顺序记录到主数据库的本地日志文件中,并更新第一文件偏移量,所述第一文件偏移量是主数据库数据对应于本地日志文件的文件偏移量; 读取所述主数据库的本地日志文件,根据所述第一文件偏移量将新增的数据写操作对应的数据同步至从数据库。2.根据权利要求1所述的方法,其中,在所述将数据写操作顺序记录到主数据库的本地日志文件中之后,所述方法还包括:向所述数据写请求的发起者返回数据写响应。3.根据权利要求1所述的方法,其中,所述根据第一文件偏移量将新增的数据写操作对应的数据同步至从数据库进一步包括: 比较所述第一文件偏移量和第二文件偏移量是否一致,所述第二文件偏移量是已同步至从数据库的数据对应于本地日志文件的文件偏移量; 若不一致,则将新增的数据写操作对应的数据同步至从数据库。4.根据权利要求3所述的方法,其中,在将新增的数据写操作对应的数据同步至从数据库之后,所述方法还包括: 更新所述第二文件偏移量; 在从数据库同步数据成功后,更新第三文件偏移量,所述第三文件偏移量是从数据库数据对应于本地日志文件的文件偏移量。5.根据权利要求1-4任一项所述的方法,其中,所述读取主数据库的本地日志文件,根据所述第一文件偏移量将新增的数据写操作对应的数据同步至从数据库的步骤由同步线程执行,每个从数据库具有专属于自己的同步线程。6.根据权利要求4所述的方法,其中,所述方法还包括: 在接收到添加新的从数据库的请求后,备份包含主数据库所有数据的快照文件,并记录备份时的第一文件偏移量作为针对该新的从数据库的第二文件偏移量和第三文件偏移量; 将所述快照文件发送给新的从数据库,使所述新的从数据库加载主数据库的所有数据; 在所述新的从数据库正常工作后,根据当前的第一文件偏移量将新增的数据写操作对应的数据同步至该新的从数据库。7.根据权利要求4所述的方法,其中,所述方法还包括: 若从数据库发现连接异常或者连接超时,重新发起连接; 在连接成功后,比较所述第二文件偏移量和所述第三文件偏移量是否一致,若不一致,则依据第三文件偏移量更新所述第二文件偏移量。8.根据权利要求4所述的方法,其中,所述主数据库的本地日志文件有多个,每个本地日志文件具有唯一的文件编号; 所述本地日志文件的文件偏移量包括:文件编号和文件内偏移量。9.根据权利要求8所述的方法,其中,所述方法还包括:每隔预设时间删除预设数量的本地日志文件。10.一种主从数据库的同步装置,其包括: 写数据处理模块,适于当接收到数据写请求时,将数据写入主数据库中,并将数据写操作顺序记录到主数据库的本地日志文件中,并更新第一文件偏移量,所述第一文件偏移量是主数据库数据对应于本地日志文件的文件偏移量; 同步模块,适于读取所述主数据库的本地日志文件,根据所述第一文件偏移量将新增的数据写操作对应的数据同步至从数据库。
【文档编号】G06F17/30GK105912628SQ201610213531
【公开日】2016年8月31日
【申请日】2016年4月7日
【发明人】宋昭
【申请人】北京奇虎科技有限公司, 奇智软件(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1