CN106802892B - 用于主备数据一致性校验的方法和设备 - Google Patents

用于主备数据一致性校验的方法和设备 Download PDF

Info

Publication number
CN106802892B
CN106802892B CN201510835059.7A CN201510835059A CN106802892B CN 106802892 B CN106802892 B CN 106802892B CN 201510835059 A CN201510835059 A CN 201510835059A CN 106802892 B CN106802892 B CN 106802892B
Authority
CN
China
Prior art keywords
log
database server
mark
update
packet
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.)
Active
Application number
CN201510835059.7A
Other languages
English (en)
Other versions
CN106802892A (zh
Inventor
张广舟
林晓斌
范孝剑
周正中
张文杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201510835059.7A priority Critical patent/CN106802892B/zh
Publication of CN106802892A publication Critical patent/CN106802892A/zh
Application granted granted Critical
Publication of CN106802892B publication Critical patent/CN106802892B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/273Asynchronous replication or reconciliation

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请的目的是提供一种用于主备数据一致性校验的方法和设备,设备具体包括主数据库服务器和备数据库服务器,具体地,主数据库服务器向当前待发送的日志包中写入标记信息,生成标记日志包,并向备数据库服务器发送标记日志包,备数据库服务器接收到标记日志包后,根据标记日志包中的标记信息所表示的主数据库服务器的日志更新状态,确定主备数据的一致性。与现有技术相比,由于标记信息是通过当前待发送的日志包进行传递,因此该日志包会在极短的时间内向备数据库服务器发送,备数据库服务器总是可以在最短的时间内获知主数据库服务器的日志更新状态,由此提高主备数据一致性判断的准确性,精确地判断主备切换后是否会有数据丢失。

Description

用于主备数据一致性校验的方法和设备
技术领域
本申请涉及计算机领域,尤其涉及一种用于主备数据一致性校验的方法和设备。
背景技术
为实现高可靠性,数据库***一般采取一主一备或一主多备的主备架构,包括一个主数据库服务器以及一个或者多个备数据库服务器。在主备架构的数据库***中,主数据库服务器通过向备数据库服务器传输日志来完成数据的备份,由于日志中记录了主数据库服务器对数据所进行操作,当主数据库宕机时,备数据库服务器可以根据日志恢复这些数据。
为了性能考虑,主数据库服务器与备数据库服务器之间一般采取异步模式,即主数据库服务器在提交事务时,不必等待相应的事务提交操作日志发送到备数据库服务器之后,才完成提交。上述异步模式可能造成事务提交完成并通知用户后,相应的日志还未传输到备数据库服务器的情况。如果此时主数据库服务器宕机、切换到备数据库服务器时,由于无法通过日志来恢复相应的数据,那么这些事务的数据就会丢失。
为防止主备切换后数据丢失,切换时需要检查备数据库服务器是否已有全部已提交事务的日志,然后决定是否进行切换。但由于主数据库服务器宕机,无法获知最后生成的日志号以与当前备数据库服务器的日志对比,所以无法判断备数据库服务器中是否已有所有日志,即主备切换后是否会有数据丢失。
现有的一种方案中,主数据库服务器每隔固定的时间(比如10秒),写入当前时间到一个心跳表中,此心跳表的记录的时间戳不断同步到备数据库服务器。主备切换时,从备数据库服务器查询此心跳表记录的最后时间,可以判断有多长时间的主数据库服务器数据没有同步到备数据库服务器。如果备数据库服务器心跳表的最后时间是09:00:10,当前时间是9:00:35,就可以估算出,最多有25秒的数据没有同步过来(也有可能这25秒主数据库服务器并没有数据更新)。如果这个时间值是在容忍范围内(例如1分钟),则进行切换。但是,这种方法无法准确比较主数据库服务器和备数据库服务器中的数据是否一致,因此无法精确判断主备切换后是否会有数据丢失。
申请内容
本申请的一个目的是提供一种用于主备数据一致性校验的方法和设备,用以解决现有技术中无法精确判断主备切换后是否会有数据丢失的问题。
为实现上述目的,本申请提供了一种在主数据库服务器端用于主备数据一致性校验的方法,该方法包括:
向当前待发送的日志包中写入标记信息,生成标记日志包,其中所述标记信息表示主数据库服务器的日志更新状态;
向备数据库服务器发送所述标记日志包,以使所述备数据库服务器根据所述标记日志包中的标记信息所表示的所述主数据库服务器的日志更新状态,确定主备数据的一致性。
本申请提供的一种在备数据库服务器端用于主备数据一致性校验的方法,该方法包括:
接收主数据库服务器发送的标记日志包,其中所述标记日志包中包含标记信息;
根据所述标记日志包中的标记信息所表示的所述主数据库服务器的日志更新状态,确定主备数据的一致性。
基于本申请的另一方面,还提供了一种用于主备数据一致性校验的主数据库服务器,该主数据库服务器包括:
标记写入装置,用于向当前待发送的日志包中写入标记信息,生成标记日志包,其中所述标记信息表示主数据库服务器的日志更新状态;
发送装置,用于向备数据库服务器发送所述标记日志包,以使所述备数据库服务器根据所述标记日志包中的标记信息所表示的所述主数据库服务器的日志更新状态,确定主备数据的一致性。
本申请提供的一种用于主备数据一致性校验的备数据库服务器,该备数据库服务器包括:
接收装置,用于接收主数据发送的标记日志包,其中所述标记日志包中包含标记信息;
校验装置,用于根据所述标记日志包中的标记信息所表示的所述主数据库服务器的日志更新状态,确定主备数据的一致性。
与现有技术相比,本申请的技术方案中的主数据库服务器在每次发送日志包时,向当前待发送的日志包中***表示主数据库服务器当前日志更新状态的标记信息,生成包含标记信息的标记日志包,将其发送给备数据库服务器。由于标记信息是通过当前待发送的日志包进行传递,因此该日志包会在极短的时间内向备数据库服务器发送,因此主数据库服务器的日志更新状态几乎是实时地通过日志包同步到备数据库服务器,由此备数据库服务器总是可以在最短的时间内获知主数据库服务器的日志更新状态,由此提高主备数据一致性判断的准确性,精确地判断主备切换后是否会有数据丢失。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1为本申请实施例提供的用于主备数据一致性校验的数据库***;
图2为主数据库服务器和备数据库服务器进行主备数据一致性校验的流程图;
图3为主数据库服务器和备数据库服务器进行主备数据一致性校验的一种优选方式的流程图;
图4为本申请实施例提供的用于主备数据一致性校验的主数据库服务器的结构示意图;
图5为本申请实施例提供的用于主备数据一致性校验的备数据库服务器的结构示意图;
图6为本申请实施例提供的一种优选的用于主备数据一致性校验的主数据库服务器的结构示意图;
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
下面结合附图对本申请作进一步详细描述。
在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
图1示出了用于主备数据一致性校验的数据库***,以一主一备的构架为例,该数据库***中包括一个主数据库服务器110以及一个通过网络与其连接的备数据库服务器120。根据实际的应用需求,该数据库***也可以为包含多个备数据库服务器的一主多备的构架,其中任意一个备数据库服务器与主数据库服务器之间进行主备数据一致性校验方式,与本例中一主一备的构架类似。
本领域技术人员应当理解,所述数据库***中的主数据库服务器110和备数据库服务器120可以包括但不限于用户设备、网络设备或用户设备与网络设备通过网络相集成所构成的设备。所述用户设备包括但不限于个人计算机、触控终端等实现;所述网络设备包括但不限于如网络主机、单个网络服务器、多个网络服务器集或基于云计算的计算机集合等实现。在此,云由基于云计算(Cloud Computing)的大量主机或网络服务器构成,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个虚拟计算机。
图2示出了所述主数据库服务器110和所述备数据库服务器120之间进行主备数据一致性校验的处理流程图。其中,在所述主数据库服务器110端,用于主备数据一致性校验的方法包括:
步骤S201,主数据库服务器向当前待发送的日志包中写入标记信息,生成标记日志包。
步骤S202,主数据库服务器向备数据库服务器发送所述标记日志包,以使所述备数据库服务器根据所述标记日志包中的标记信息所表示的所述主数据库服务器的日志更新状态,确定主备数据的一致性。
其中,待发送的日志包是指主数据库服务器在当前时刻将要向备数据库服务器发送的日志包,即该日志包会在极短的时间内向备数据库服务器发送,因此主数据库服务器的日志更新状态几乎是实时地通过日志包同步到备数据库服务器,由此备数据库服务器总是可以在最短的时间内获知主数据库服务器的日志更新状态,由此提高主备数据一致性判断的准确性,精确地判断主备切换后是否会有数据丢失。
所述标记信息表示主数据库服务器的日志更新状态,由于本方案的目的在于对主备数据的一致性进行校验,因此所述日志更新状态可以设置两种情形:1、正在更新或已更新日志;2、未更新日志。该日志更新状态表示在将要发送所述待发送的日志包时,相较于该日志包中最后产生的日志,主数据库服务器中是否有新的日志已经产生或者正在产生。若在第1种情形下,表示有新的日志已经产生或者正在产生,主数据库服务器中存在数据更新,而该数据更新的操作并未标记日志包中的日志所记录,此时就会造成主数据库服务器中的数据与备数据库服务器中的数据不一致。相应地,在第2种情形下,表示没有新的日志产生,主数据库服务器中没有数据更新,主数据库服务器最后产生的日志已经在标记日志包中准备发送,因此备数据库服务器可以根据其接收到的标记日志包中的日志复制主数据库服务器在发送该标记日志包时的数据,使得两者的数据一致。
对应所述正在更新或已更新日志的日志更新状态,相应的标记信息可以是更新标记;而对应所述未更新日志的日志更新状态,相应的标记信息可以是未更新标记。
具体地,在步骤S201中,主数据库服务器向当前待发送的日志包中写入标记信息,包括:若主数据库服务器的日志更新状态为正在更新或已更新日志,向当前待发送的日志包中写入更新标记;若主数据库服务器的日志更新状态为未更新日志,向当前待发送的日志包中写入未更新标记。
在实际应用中,基于编码方式或者其它因素的考虑,所述更新标记和未更新标记可以采用不同的形式。例如,可以是日志号的形式,将主数据库服务器最近产生的日志的日志号或者当前正在产生的日志的日志号作为更新标记,而对应地,将待发送的日志包中最近产生的一个日志的日志号或者一个预设的特殊日志号(如0或者00等)作为未更新标记。
还如,可以是比特位的形式,即以一个比特位(1或0)表示两种情形。具体的,以比特位为1表示日志更新状态为正在更新或已更新日志,而以比特位为0表示表示日志更新状态为未更新日志。当然,也可以相反的取值表示相应的日志更新状态。
此外,还可以是在一种日志更新状态时写入空的标记信息,而在另一种日志更新状态时写入任意内容的标记信息。具体的,在未更新日志的日志更新状态时,写入空的标记信息(即不写入任何标记);而在正在更新或已更新日志的日志更新状态时,写入任意内容的标记信息(可以是比特位、日志号等)。当然,也可以采用相反的形式表示相应的日志更新状态。
在此,本领域技术人员应当理解,所述更新标记和未更新标记的具体形式仅为举例,其他现有的或今后可能出现的更新标记和未更新标记的形式如可适用于本发明,也应包含在本发明保护范围以内,并在此以引用方式包含于此。
相应地,在所述备数据库服务器120端,用于主备数据一致性校验的方法包括:
步骤S203,备数据库服务器接收主数据库服务器发送的标记日志包,其中所述标记日志包中包含标记信息。
步骤S204,备数据库服务器根据所述标记日志包中的标记信息所表示的所述主数据库服务器的日志更新状态,确定主备数据的一致性。
根据主数据库服务器不同的日志更新状态,主数据库服务器向标记日志包中写入的标记信息可能是更新标记,也可能是未更新标记。因此步骤S204具体包括:根据所述标记日志包中的更新标记获取所述主数据库服务器的日志更新状态为正在更新或已更新日志,并由所述日志更新状态确定所述主备数据不一致;或者根据所述标记日志包中的未更新标记获取所述主数据库服务器的日志更新状态为未更新日志,并由所述日志更新状态确定所述主备数据一致。
以前述日志号的形式为例,若所述标记日志包中包含的所有日志的日志号为101~105。在该日志包将要被发送时,主数据库服务器正在产生新的日志106,因此该日志包中写入的标记信息即为由日志号106所表示的更新标记。备数据库服务器接收到包含日志号106的标记日志包之后,由于日志包中最后生成的日志的日志号为105,与更新标记的日志号106不同,因此,备数据库服务器能够获取所述主数据库服务器的日志更新状态为正在更新或已经更新日志,此时备数据库服务器中的日志少于主数据库服务器的日志。若此时进行主备切换的话,备数据库服务器有可能无法根据其拥有的日志恢复主数据库服务器中的所有数据,由此确定主备数据不一致,将会导致数据丢失。
在另一种情况下,若在该日志包将要被发送时,主数据库服务器并未产生新的日志,即主数据库服务器最后产生的日志即为该日志包中最后产生的日志(日志号为105的日志),那么该日志包中写入的标记信息即为由日志号105所表示的更新标记。备数据库服务器接收到该标记日志包之后,由于日志包中最后生成的日志的日志号为105,与更新标记的日志号105相同,因此,备数据库服务器能够获取所述主数据库服务器的日志更新状态为未更新日志,可以确定主数据库服务器中的所有日志已经都同步至备数据库服务器,若此时进行主备切换的话,备数据库服务器能够根据其拥有的日志恢复主数据库服务器中的所有数据,由此确定主备数据一致,不会导致数据丢失。
在实际应用中,在一次事务处理所产生的所有日志中,最后的一个日志为事务提交操作日志。数据库服务器在进行事务处理时,只有已经提交的事务会对数据进行实际的更新,从而有可能造成数据的丢失。因此,作为一种优选的实施方式,可以仅考虑主数据库服务器中的事务提交操作日志(例如数据库***中COMMIT语句对应的日志),即所述日志更新状态可以仅考虑事务提交操作日志的更新状态,使得主备数据一致性校验的结果更加准确。
此时,步骤S201中主数据库服务器向当前待发送的日志包中写入标记信息,具体包括:若主数据库服务器的事务提交操作日志的更新状态为正在更新或已更新事务提交操作日志,向当前待发送的日志包中写入更新标记;若主数据库服务器的事务提交操作日志的更新状态为未更新事务提交操作日志,向当前待发送的日志包中写入未更新标记。
相应地,步骤S204中根据所述标记日志包中的标记信息所表示的所述主数据库服务器的日志更新状态,确定主备数据的一致性,具体包括:根据所述标记日志包中的更新标记获取所述主数据库服务器的日志更新状态为正在更新或已更新日志,并由所述日志更新状态确定所述主备数据不一致;或者根据所述标记日志包中的未更新标记获取所述主数据库服务器的日志更新状态为未更新日志,并由所述日志更新状态确定所述主备数据一致。
以前述比特位的形式为例,若在某一日志包将要被发送时,主数据库服务器正在进行事务的提交操作,同时产生相应的事务提交操作日志,此时主数据库服务器会将取值为1的一个比特位作为更新标记写入到该日志包中,以生成标记日志包。备数据库服务器接收到该标记日志包之后,可以根据该比特位的值获知主数据库服务器的日志更新状态为正在更新或已更新事务提交操作日志,主数据库服务器中最近产生的事务提交操作日志并未同步到备数据库服务器。若此时进行主备切换的话,备数据库服务器无法根据其拥有的日志恢复主数据库服务器中的所有数据,由此确定主备数据不一致,将会导致数据丢失。
在实际应用中,标记日志包从写入标记信息到发送至备数据库服务器的时间虽然极短,但是也有较小的可能性在此段时间内出现问题。例如,主数据库服务器在进行事务A的提交,并且正在生成事务A的事务提交操作日志,此时向本次发送的标记日志包内写入的标记信息为更新标记,随后主数据库服务器完成事务A的提交操作,同时生成对应的事务提交操作日志。若主数据库服务器由于宕机而导致所述标记日志包未发送成功,则有可能使得备数据库服务器由于前一次接收到的标记日志包中的未更新标记而产生错误的判断。
为解决上述问题,本申请实施例还提供了一种优选的用于主备数据一致性校验的方法,如图3所示,在主数据库服务器110端,在向备数据库服务器发送所述标记日志包之后,还包括:
步骤S205,若所述标记日志包中包含更新标记,在确认所述备数据库服务器接收到所述标记日志包后,完成正在更新的事务提交操作日志所对应的事务提交操作。
其中,主数据库服务器确认所述备数据库服务器接收到所述标记日志包的方式可以根据应用场景的需求确定,例如通过可靠的传输协议来保证在备数据库服务器在接收到之后会发送相应的确认字符(例如TCP协议的ACK),或者备数据库服务器单独返回一个反馈消息告知主数据库服务器已经接收到等。
通过确定所述备数据库服务器接收到所述标记日志包后,再完成正在更新的事务提交操作日志所对应的事务提交操作,由此保证事务提交所造成的状态改变能够通知到备数据库服务器,以避免因前述提及的情况而造成备数据库服务器产生错误的判断,从而进一步提高主备数据一致性校验的准确性。
若每次在进行事务提交操作时,都需要等待相应的标记日志包发送完成才进行,可能会影响到事务处理的速度。因此,可以对所述步骤S205进行优化,具体为:若所述标记日志包中包含更新标记,且向所述备数据库服务器发送的前一标记日志包中包含未更新标记,则在确认所述备数据库服务器接收到本次发送的标记日志包后,完成正在更新的事务提交操作日志所对应的事务提交操作。
若主数据库服务器向所述备数据库服务器发送的前一标记日志包中包含更新标记,那么备数据库服务器在接收到前一标记日志包时,已经可以确定了主备数据不一致,若本次发送的标记日志包中也包含更新标记,备数据库服务器收到后所确定的主备数据状态仍将是不一致。因此,无论备数据库服务器是否收到本次的标记日志包,均不会影响备数据库服务器对于当前主备数据一致性的判断结果。
因此,仅当本次发送的标记日志包中包含更新标记,而前一标记日志包中包含未更新标记时,才进行等待,在确认所述备数据库服务器接收到本次发送的标记日志包后,完成正在更新的事务提交操作日志所对应的事务提交操作。而当本次发送的标记日志包中包含更新标记,而前一标记日志包中也包含更新标记时,则无需进行等待,从而保证事务处理的速度。
图4示出了本申请实施例提供的一种用于主备数据一致性校验的主数据库服务器110,包括标记写入装置111和发送装置112。具体地,所述标记写入装置111用于向当前待发送的日志包中写入标记信息,生成标记日志包,其中所述标记信息表示主数据库服务器的日志更新状态;所述发送装置112用于向备数据库服务器发送所述标记日志包,以使所述备数据库服务器根据所述标记日志包中的标记信息所表示的所述主数据库服务器的日志更新状态,确定主备数据的一致性。
其中,待发送的日志包是指主数据库服务器在当前时刻将要向备数据库服务器发送的日志包,即该日志包会在极短的时间内向备数据库服务器发送,因此主数据库服务器的日志更新状态几乎是实时地通过日志包同步到备数据库服务器,由此备数据库服务器总是可以在最短的时间内获知主数据库服务器的日志更新状态,由此提高主备数据一致性判断的准确性,精确地判断主备切换后是否会有数据丢失。
所述标记信息表示主数据库服务器的日志更新状态,由于本方案的目的在于对主备数据的一致性进行校验,因此所述日志更新状态可以设置两种情形:1、正在更新或已更新日志;2、未更新日志。该日志更新状态表示在将要发送所述待发送的日志包时,相较于该日志包中最后产生的日志,主数据库服务器中是否有新的日志已经产生或者正在产生。若在第1种情形下,表示有新的日志已经产生或者正在产生,主数据库服务器中存在数据更新,而该数据更新的操作并未标记日志包中的日志所记录,此时就会造成主数据库服务器中的数据与备数据库服务器中的数据不一致。相应地,在第2种情形下,表示没有新的日志产生,主数据库服务器中没有数据更新,主数据库服务器最后产生的日志已经在标记日志包中准备发送,因此备数据库服务器可以根据其接收到的标记日志包中的日志复制主数据库服务器在发送该标记日志包时的数据,使得两者的数据一致。
对应所述正在更新或已更新日志的日志更新状态,相应的标记信息可以是更新标记;而对应所述未更新日志的日志更新状态,相应的标记信息可以是未更新标记。
具体地,所述标记写入装置111用于在主数据库服务器的日志更新状态为正在更新日志时,向当前待发送的日志包中写入更新标记;或者在主数据库服务器的日志更新状态为未更新日志时,向当前待发送的日志包中写入未更新标记,生成标记日志包。
在实际应用中,基于编码方式或者其它因素的考虑,所述更新标记和未更新标记可以采用不同的形式。例如,可以是日志号的形式,将主数据库服务器最近产生的日志的日志号或者当前正在产生的日志的日志号作为更新标记,而对应地,将待发送的日志包中最近产生的一个日志的日志号或者一个预设的特殊日志号(如0或者00等)作为未更新标记。
还如,可以是比特位的形式,即以一个比特位(1或0)表示两种情形。具体的,以比特位为1表示日志更新状态为正在更新或已更新日志,而以比特位为0表示表示日志更新状态为未更新日志。当然,也可以相反的取值表示相应的日志更新状态。
此外,还可以是在一种日志更新状态时写入空的标记信息,而在另一种日志更新状态时写入任意内容的标记信息。具体的,在未更新日志的日志更新状态时,写入空的标记信息(即不写入任何标记);而在正在更新或已更新日志的日志更新状态时,写入任意内容的标记信息(可以是比特位、日志号等)。当然,也可以采用相反的形式表示相应的日志更新状态。
在此,本领域技术人员应当理解,所述更新标记和未更新标记的具体形式仅为举例,其他现有的或今后可能出现的更新标记和未更新标记的形式如可适用于本发明,也应包含在本发明保护范围以内,并在此以引用方式包含于此。
相应地,本申请实施例还提供了一种用于主备数据一致性校验的备数据库服务器120,该备数据库服务器120的结构如图5所示,包括接收装置121和校验装置122。具体地,所述接收装置121用于接收主数据发送的标记日志包,其中所述标记日志包中包含标记信息;所述校验装置122用于根据所述标记日志包中的标记信息所表示的所述主数据库服务器的日志更新状态,确定主备数据的一致性。
根据主数据库服务器不同的日志更新状态,主数据库服务器向标记日志包中写入的标记信息可能是更新标记,也可能是未更新标记。因此,所述校验装置122具体用于:根据所述标记日志包中的更新标记获取所述主数据库服务器的日志更新状态为正在更新或已更新日志,并由所述日志更新状态确定所述主备数据不一致;或者根据所述标记日志包中的未更新标记获取所述主数据库服务器的日志更新状态为未更新日志,并由所述日志更新状态确定所述主备数据一致。
以前述日志号的形式为例,若所述标记日志包中包含的所有日志的日志号为101~105。在该日志包将要被发送时,主数据库服务器正在产生新的日志106,因此该日志包中写入的标记信息即为由日志号106所表示的更新标记。备数据库服务器接收到包含日志号106的标记日志包之后,由于日志包中最后生成的日志的日志号为105,与更新标记的日志号106不同,因此,备数据库服务器能够获取所述主数据库服务器的日志更新状态为正在更新或已经更新日志,此时备数据库服务器中的日志少于主数据库服务器的日志。若此时进行主备切换的话,备数据库服务器有可能无法根据其拥有的日志恢复主数据库服务器中的所有数据,由此确定主备数据不一致,将会导致数据丢失。
在另一种情况下,若在该日志包将要被发送时,主数据库服务器并未产生新的日志,即主数据库服务器最后产生的日志即为该日志包中最后产生的日志(日志号为105的日志),那么该日志包中写入的标记信息即为由日志号105所表示的更新标记。备数据库服务器接收到该标记日志包之后,由于日志包中最后生成的日志的日志号为105,与更新标记的日志号105相同,因此,备数据库服务器能够获取所述主数据库服务器的日志更新状态为未更新日志,可以确定主数据库服务器中的所有日志已经都同步至备数据库服务器,若此时进行主备切换的话,备数据库服务器能够根据其拥有的日志恢复主数据库服务器中的所有数据,由此确定主备数据一致,不会导致数据丢失。
在实际应用中,在一次事务处理所产生的所有日志中,最后的一个日志为事务提交操作日志。数据库服务器在进行事务处理时,只有已经提交的事务会对数据进行实际的更新,从而有可能造成数据的丢失。因此,作为一种优选的实施方式,可以仅考虑主数据库服务器中的事务提交操作日志(例如数据库***中COMMIT语句对应的日志),即所述日志更新状态可以仅考虑事务提交操作日志的更新状态,使得主备数据一致性校验的结果更加准确。
此时,所述主数据库服务器110中的所述标记写入装置111具体用于:在主数据库服务器的事务提交操作日志的更新状态为正在更新事务提交操作日志时,向当前待发送的日志包中写入更新标记,或者在主数据库服务器的事务提交操作日志的更新状态为未更新事务提交操作日志时,向当前待发送的日志包中写入未更新标记,生成标记日志包。
相应地,所述备数据库服务器120中的所述校验装置122具体用于:根据所述标记日志包中的更新标记获取所述主数据库服务器的事务提交操作日志的更新状态为正在更新或已更新事务提交操作日志,并由所述事务提交操作日志的更新状态确定所述主备数据不一致;或者根据所述标记日志包中的未更新标记获取所述主数据库服务器的事务提交操作日志的更新状态为未更新事务提交操作日志,并由所述事务提交操作日志的更新状态确定所述主备数据一致。
以前述比特位的形式为例,若在某一日志包将要被发送时,主数据库服务器正在进行事务的提交操作,同时产生相应的事务提交操作日志,此时主数据库服务器会将取值为1的一个比特位作为更新标记写入到该日志包中,以生成标记日志包。备数据库服务器接收到该标记日志包之后,可以根据该比特位的值获知主数据库服务器的日志更新状态为正在更新或已更新事务提交操作日志,主数据库服务器中最近产生的事务提交操作日志并未同步到备数据库服务器。若此时进行主备切换的话,备数据库服务器无法根据其拥有的日志恢复主数据库服务器中的所有数据,由此确定主备数据不一致,将会导致数据丢失。
在实际应用中,标记日志包从写入标记信息到发送至备数据库服务器的时间虽然极短,但是也有较小的可能性在此段时间内出现问题。例如,主数据库服务器在进行事务A的提交,并且正在生成事务A的事务提交操作日志,此时向本次发送的标记日志包内写入的标记信息为更新标记,随后主数据库服务器完成事务A的提交操作,同时生成对应的事务提交操作日志。若主数据库服务器由于宕机而导致所述标记日志包未发送成功,则有可能使得备数据库服务器由于前一次接收到的标记日志包中的未更新标记而产生错误的判断。
为解决上述问题,本申请实施例还提供了一种优选的用于主备数据一致性校验的主数据库服务器,如图6所示,除图4所示的标记写入装置111和发送装置112之外,还包括事务提交装置113。具体地,所述事务提交装置113用于在所述标记日志包中包含更新标记,且确认所述备数据库服务器接收到所述标记日志包后,完成正在更新的事务提交操作日志所对应的事务提交操作。
其中,主数据库服务器确认所述备数据库服务器接收到所述标记日志包的方式可以根据应用场景的需求确定,例如通过可靠的传输协议来保证在备数据库服务器在接收到之后会发送相应的确认字符(例如TCP协议的ACK),或者备数据库服务器单独返回一个反馈消息告知主数据库服务器已经接收到等。
通过确定所述备数据库服务器接收到所述标记日志包后,再完成正在更新的事务提交操作日志所对应的事务提交操作,由此保证事务提交所造成的状态改变能够通知到备数据库服务器,以避免因前述提及的情况而造成备数据库服务器产生错误的判断,从而进一步提高主备数据一致性校验的准确性。
若每次在进行事务提交操作时,都需要等待相应的标记日志包发送完成才进行,可能会影响到事务处理的速度。因此,可以对事务提交装置113进行优化,具体地,所述事务提交装置113用于在所述标记日志包中包含更新标记,且向所述备数据库服务器发送的前一标记日志包中包含未更新标记,且在确认所述备数据库服务器接收到本次发送的标记日志包后,完成正在更新的事务提交操作日志所对应的事务提交操作。
若主数据库服务器向所述备数据库服务器发送的前一标记日志包中包含更新标记,那么备数据库服务器在接收到前一标记日志包时,已经可以确定了主备数据不一致,若本次发送的标记日志包中也包含更新标记,备数据库服务器收到后所确定的主备数据状态仍将是不一致。因此,无论备数据库服务器是否收到本次的标记日志包,均不会影响备数据库服务器对于当前主备数据一致性的判断结果。
因此,仅当本次发送的标记日志包中包含更新标记,而前一标记日志包中包含未更新标记时,才进行等待,在确认所述备数据库服务器接收到本次发送的标记日志包后,完成正在更新的事务提交操作日志所对应的事务提交操作。而当本次发送的标记日志包中包含更新标记,而前一标记日志包中也包含更新标记时,则无需进行等待,从而保证事务处理的速度。
需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

Claims (16)

1.一种在主数据库服务器端用于主备数据一致性校验的方法,其中,该方法包括:
向当前待发送的日志包中写入标记信息,生成标记日志包,其中所述标记信息表示主数据库服务器的日志更新状态,所述日志更新状态表示在将要发送所述待发送的日志包时,相较于该日志包中最后产生的日志,所述主数据库服务器中是否有新的日志已经产生或正在产生;
向备数据库服务器发送所述标记日志包,以使所述备数据库服务器根据所述标记日志包中的标记信息所表示的所述主数据库服务器的日志更新状态,确定主备数据的一致性。
2.根据权利要求1所述的方法,其中,所述标记信息为更新标记或未更新标记;
向当前待发送的日志包中写入标记信息,包括:
若主数据库服务器的日志更新状态为正在更新或已更新日志,向当前待发送的日志包中写入更新标记;
若主数据库服务器的日志更新状态为未更新日志,向当前待发送的日志包中写入未更新标记。
3.根据权利要求1所述的方法,其中,所述标记信息为更新标记或未更新标记,所述日志更新状态为事务提交操作日志的更新状态;
向当前待发送的日志包中写入标记信息,包括:
若主数据库服务器的事务提交操作日志的更新状态为正在更新或已更新事务提交操作日志,向当前待发送的日志包中写入更新标记;
若主数据库服务器的事务提交操作日志的更新状态为未更新事务提交操作日志,向当前待发送的日志包中写入未更新标记。
4.根据权利要求3所述的方法,其中,向备数据库服务器发送所述标记日志包之后,还包括:
若所述标记日志包中包含更新标记,在确认所述备数据库服务器接收到所述标记日志包后,完成正在更新的事务提交操作日志所对应的事务提交操作。
5.根据权利要求4所述的方法,其中,若所述标记日志包中包含更新标记,在确认所述备数据库服务器接收到所述标记日志包后,完成正在更新的事务提交操作日志所对应的事务提交操作,包括:
若所述标记日志包中包含更新标记,且向所述备数据库服务器发送的前一标记日志包中包含未更新标记,则在确认所述备数据库服务器接收到本次发送的标记日志包后,完成正在更新的事务提交操作日志所对应的事务提交操作。
6.一种在备数据库服务器端用于主备数据一致性校验的方法,其中,该方法包括:
接收主数据库服务器发送的标记日志包,其中所述标记日志包中包含标记信息;
根据所述标记日志包中的标记信息所表示的所述主数据库服务器的日志更新状态,确定主备数据的一致性,所述日志更新状态表示在将要发送待发送的日志包时,相较于该日志包中最后产生的日志,所述主数据库服务器中是否有新的日志已经产生或正在产生。
7.根据权利要求6所述的方法,其中,所述标记信息为更新标记或未更新标记;
根据所述标记日志包中的标记信息所表示的所述主数据库服务器的日志更新状态,确定主备数据的一致性,包括:
根据所述标记日志包中的更新标记获取所述主数据库服务器的日志更新状态为正在更新或已更新日志,并由所述日志更新状态确定所述主备数据不一致;或者
根据所述标记日志包中的未更新标记获取所述主数据库服务器的日志更新状态为未更新日志,并由所述日志更新状态确定所述主备数据一致。
8.根据权利要求6所述的方法,其中,所述标记信息为更新标记或未更新标记,所述日志更新状态为事务提交操作日志的更新状态;
根据所述标记日志包中的标记信息所表示的所述主数据库服务器的日志更新状态,确定主备数据的一致性,包括:
根据所述标记日志包中的更新标记获取所述主数据库服务器的事务提交操作日志的更新状态为正在更新或已更新事务提交操作日志,并由所述事务提交操作日志的更新状态确定所述主备数据不一致;或者
根据所述标记日志包中的未更新标记获取所述主数据库服务器的事务提交操作日志的更新状态为未更新事务提交操作日志,并由所述事务提交操作日志的更新状态确定所述主备数据一致。
9.一种用于主备数据一致性校验的主数据库服务器,其中,该主数据库服务器包括:
标记写入装置,用于向当前待发送的日志包中写入标记信息,生成标记日志包,其中所述标记信息表示主数据库服务器的日志更新状态,所述日志更新状态表示在将要发送所述待发送的日志包时所述主数据库服务器中是否有新的日志产生;
发送装置,用于向备数据库服务器发送所述标记日志包,以使所述备数据库服务器根据所述标记日志包中的标记信息所表示的所述主数据库服务器的日志更新状态,确定主备数据的一致性。
10.根据权利要求9所述的主数据库服务器,其中,所述标记信息为更新标记或未更新标记;
所述标记写入装置,用于在主数据库服务器的日志更新状态为正在更新日志时,向当前待发送的日志包中写入更新标记;或者在主数据库服务器的日志更新状态为未更新日志时,向当前待发送的日志包中写入未更新标记,生成标记日志包。
11.根据权利要求9所述的主数据库服务器,其中,所述标记信息为更新标记或未更新标记,所述日志更新状态为事务提交操作日志的更新状态;
所述标记写入装置,用于在主数据库服务器的事务提交操作日志的更新状态为正在更新事务提交操作日志时,向当前待发送的日志包中写入更新标记,或者在主数据库服务器的事务提交操作日志的更新状态为未更新事务提交操作日志时,向当前待发送的日志包中写入未更新标记,生成标记日志包。
12.根据权利要求11所述的主数据库服务器,其中,所述主数据库服务器还包括:
事务提交装置,用于在所述标记日志包中包含更新标记,且确认所述备数据库服务器接收到所述标记日志包后,完成正在更新的事务提交操作日志所对应的事务提交操作。
13.根据权利要求12所述的主数据库服务器,其中,所述事务提交装置,用于在所述标记日志包中包含更新标记,且向所述备数据库服务器发送的前一标记日志包中包含未更新标记,且在确认所述备数据库服务器接收到本次发送的标记日志包后,完成正在更新的事务提交操作日志所对应的事务提交操作。
14.一种用于主备数据一致性校验的备数据库服务器,其中,该备数据库服务器包括:
接收装置,用于接收主数据库服务器发送的标记日志包,其中所述标记日志包中包含标记信息;
校验装置,用于根据所述标记日志包中的标记信息所表示的所述主数据库服务器的日志更新状态,确定主备数据的一致性,所述日志更新状态表示在将要发送待发送的日志包时所述主数据库服务器中是否有新的日志产生。
15.根据权利要求14所述的备数据库服务器,其中,所述标记信息为更新标记或未更新标记;
所述校验装置,用于根据所述标记日志包中的更新标记获取所述主数据库服务器的日志更新状态为正在更新或已更新日志,并由所述日志更新状态确定所述主备数据不一致;或者根据所述标记日志包中的未更新标记获取所述主数据库服务器的日志更新状态为未更新日志,并由所述日志更新状态确定所述主备数据一致。
16.根据权利要求14所述的备数据库服务器,其中,所述标记信息为更新标记或未更新标记,所述日志更新状态为事务提交操作日志的更新状态;
所述校验装置,用于根据所述标记日志包中的更新标记获取所述主数据库服务器的事务提交操作日志的更新状态为正在更新或已更新事务提交操作日志,并由所述事务提交操作日志的更新状态确定所述主备数据不一致;或者根据所述标记日志包中的未更新标记获取所述主数据库服务器的事务提交操作日志的更新状态为未更新事务提交操作日志,并由所述事务提交操作日志的更新状态确定所述主备数据一致。
CN201510835059.7A 2015-11-26 2015-11-26 用于主备数据一致性校验的方法和设备 Active CN106802892B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510835059.7A CN106802892B (zh) 2015-11-26 2015-11-26 用于主备数据一致性校验的方法和设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510835059.7A CN106802892B (zh) 2015-11-26 2015-11-26 用于主备数据一致性校验的方法和设备

Publications (2)

Publication Number Publication Date
CN106802892A CN106802892A (zh) 2017-06-06
CN106802892B true CN106802892B (zh) 2021-12-28

Family

ID=58977371

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510835059.7A Active CN106802892B (zh) 2015-11-26 2015-11-26 用于主备数据一致性校验的方法和设备

Country Status (1)

Country Link
CN (1) CN106802892B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109672712A (zh) * 2017-10-17 2019-04-23 中兴通讯股份有限公司 数据同步方法、装置、超级控制器、域控制器及存储介质
CN109857523B (zh) * 2017-11-30 2023-05-09 阿里巴巴集团控股有限公司 一种用于实现数据库高可用性的方法及装置
CN110109934B (zh) * 2019-05-08 2021-07-30 上海达梦数据库有限公司 一种数据库管理方法、装置、服务器及存储介质
CN110209554B (zh) * 2019-06-14 2023-08-11 上海中通吉网络技术有限公司 数据库日志分发方法、装置及设备
CN110471909B (zh) * 2019-08-26 2022-03-08 上海达梦数据库有限公司 一种数据库管理方法、装置、服务器及存储介质
CN110727550B (zh) * 2019-12-18 2020-06-12 ***股份有限公司 数据复制处理方法、装置、容灾***、设备及存储介质
CN111723066B (zh) * 2020-05-08 2023-06-13 武汉达梦数据库股份有限公司 基于日志解析同步的数据库切换方法和数据库切换***
CN113076343B (zh) * 2021-04-30 2024-04-05 北京京东振世信息技术有限公司 数据查询方法、装置、设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102982087A (zh) * 2012-11-01 2013-03-20 华为技术有限公司 一种检测数据库数据一致性的方法、装置及数据库***
CN103020242A (zh) * 2012-12-19 2013-04-03 中国人民解放军第二炮兵装备研究院第四研究所 基于oracle数据库的数据同步方法
CN103560906A (zh) * 2013-10-22 2014-02-05 珠海多玩信息技术有限公司 数据复制的方法及装置
CN104021132A (zh) * 2013-12-08 2014-09-03 郑州正信科技发展股份有限公司 主备数据库数据一致性核查备份方法及其***

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5555371A (en) * 1992-12-17 1996-09-10 International Business Machines Corporation Data backup copying with delayed directory updating and reduced numbers of DASD accesses at a back up site using a log structured array data storage
CN102752372A (zh) * 2012-06-18 2012-10-24 天津神舟通用数据技术有限公司 一种基于文件的数据库同步方法
CN103685350B (zh) * 2012-09-04 2016-12-21 阿里巴巴集团控股有限公司 存储***的同步方法及相关的设备
CN102891849B (zh) * 2012-09-25 2015-07-22 北京星网锐捷网络技术有限公司 业务数据同步方法、恢复方法及装置和网络设备
CN103312549B (zh) * 2013-06-26 2016-08-24 华为技术有限公司 一种事务管理方法及装置和***

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102982087A (zh) * 2012-11-01 2013-03-20 华为技术有限公司 一种检测数据库数据一致性的方法、装置及数据库***
CN103020242A (zh) * 2012-12-19 2013-04-03 中国人民解放军第二炮兵装备研究院第四研究所 基于oracle数据库的数据同步方法
CN103560906A (zh) * 2013-10-22 2014-02-05 珠海多玩信息技术有限公司 数据复制的方法及装置
CN104021132A (zh) * 2013-12-08 2014-09-03 郑州正信科技发展股份有限公司 主备数据库数据一致性核查备份方法及其***

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"The research of synchronization and consistency of data in mobile environment";JiuLing Feng等;《2012 IEEE 2nd International Conference on Cloud Computing and Intelligence Systems》;20131114;第869-874页 *
"一种基于记录标记的数据库同步算法";李立亚;《计算机与数字工程》;20150630;第946-952页 *

Also Published As

Publication number Publication date
CN106802892A (zh) 2017-06-06

Similar Documents

Publication Publication Date Title
CN106802892B (zh) 用于主备数据一致性校验的方法和设备
US8463746B2 (en) Method and system for replicating data
US8689047B2 (en) Virtual disk replication using log files
CN101706802B (zh) 一种数据写入、修改及恢复的方法、装置及服务器
US8762337B2 (en) Storage replication systems and methods
JP6987340B2 (ja) データベースのデータ変更要求処理方法及び装置
US9229970B2 (en) Methods to minimize communication in a cluster database system
US20140108345A1 (en) Exchanging locations of an out of synchronization indicator and a change recording indicator via pointers
US10324905B1 (en) Proactive state change acceptability verification in journal-based storage systems
CN106815094B (zh) 一种用于实现主备同步模式下事务提交的方法与设备
CN106126374A (zh) 数据写入方法、数据读取方法及装置
CN110121694B (zh) 一种日志管理方法、服务器和数据库***
US11593216B2 (en) Method, device, and computer program product for managing file system
CN108241676A (zh) 实现数据同步的方法及设备
US20180121531A1 (en) Data Updating Method, Device, and Related System
CN110121712B (zh) 一种日志管理方法、服务器和数据库***
CN103729269A (zh) 一种基于云架构的网络考试数据双缓存方法
US11693844B2 (en) Processing delete requests based on change feed of updates
US10620872B2 (en) Replicating data in a data storage system
CN111274258B (zh) 一种区块链数据上链方法
CN113535477A (zh) 一种用于数据容灾恢复的方法与设备
CN111522883A (zh) 对象数据的备份方法、装置、设备及存储介质
US11513717B2 (en) Online data rehydration
US20240103984A1 (en) Leveraging backup process metadata for data recovery optimization
US7962710B1 (en) Techniques for creating checkpoints

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
GR01 Patent grant
GR01 Patent grant