一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种主数据库与备数据库之间同步日志文件的方法及装置与流程

2021-10-24 06:11:00 来源:中国专利 TAG:数据库 装置 同步 文件 方法


1.本发明涉及数据库技术领域,尤其是涉及一种主数据库备与数据库之间同步日志文件的方法及装置。


背景技术:

2.出于容灾、负载均衡以及数据集中式分发等方面的考虑,现有技术往往采用主数据库以及备数据库,通过主数据库与备数据库之间进行数据同步,从而实现双机热备的功能。
3.需要说明的是,现有的主数据库与备数据库进行同步日志文件时候,往往在生成日志文件之后,立即将日志文件发送至备数据库进行数据重放,从而实现数据的同步,但是,现有技术容易出现将导致主数据库故障的日志文件同步至备数据库,从而导致备数据库也发生相应故障。


技术实现要素:

4.本发明提供了一种主数据库与备数据库之间同步日志文件的方法及装置,以解决现有技术容易出现将导致主数据库故障的日志同步至备数据库,从而导致备数据库也发生相应故障的技术问题。
5.根据本发明的第一方面,提供了一种主数据库与备数据库之间同步日志文件的方法,该方法包括:主数据库在检测到数据修改的情况下,生成数据修改的日志文件;主数据库将数据修改进行事务处理;在事务处理成功的情况下,主数据库将日志文件同步至备数据库;备数据库根据日志文件进行重放。
6.进一步地,备数据库根据日志文件进行重放的步骤包括:备数据库在进行重放的过程中,生成重放进度信息;备数据库将重放进度信息通过心跳机制同步至主数据库。
7.进一步地,日志文件为增量日志文件,其中,在备数据库将重放进度信息通过心跳机制同步至主数据库之后,方法还包括:在备数据库重放失败的情况下,备数据库向主数据库发送全量同步请求信息;主数据库根据全量同步请求信息生成全量日志文件,并且将全量日志文件发送至备数据库;备数据库根据全量日志文件进行重放。
8.进一步地,日志文件包括binlog日志文件以及redolog日志文件,其中,在生成数据修改的日志文件之后,方法还包括:将binlog日志文件写入到内存中以及将redolog日志文件写入磁盘中。
9.进一步地,在备数据库根据日志文件进行重放之后,方法包括:备数据库根据主数据库发送的心跳信号确定主数据库在第一时间发生故障;在第二时间备数据库接收并处理数据处理请求,其中,第二时间晚于第一时间。
10.根据本发明的第二方面,提供了一种主数据库备与数据库之间同步日志文件的装置,装置包括:第一生成单元,用于在检测到数据修改的情况下,生成数据修改的日志文件;事务处理单元,用于将数据修改进行事务处理;同步单元,用于在事务处理成功的情况下,
将日志文件同步至备数据库;第一重放单元,用于根据日志文件进行重放。
11.进一步地,重放单元包括:生成模块,用于在进行重放的过程中,生成重放进度信息;同步模块,用于将重放进度信息通过心跳机制同步至主数据库。
12.进一步地,日志文件为增量日志文件,装置还包括:发送单元,用于在备数据库重放失败的情况下,向主数据库发送全量同步请求信息;第二生成单元,用于根据全量同步请求信息生成全量日志文件,并且将全量日志文件发送至备数据库;第二重放单元,用于根据全量日志文件进行重放。
13.进一步地,日志文件包括binlog日志文件以及redolog日志文件,其中,装置还包括:写入单元,用于将binlog日志文件写入到内存中以及将redolog日志文件写入磁盘中。
14.进一步地,装置还包括:确定单元,用于根据主数据库发送的心跳信号确定主数据库在第一时间发生故障;处理单元,用于在第二时间接收并处理数据处理请求,其中,第二时间晚于第一时间。
15.本发明提供了一种主数据库与备数据库之间同步日志文件的方法及装置,该方法包括:主数据库在检测到数据修改的情况下,生成数据修改的日志文件;主数据库将数据修改进行事务处理;在事务处理成功的情况下,主数据库将日志文件同步至备数据库;备数据库根据日志文件进行重放。解决了现有技术容易出现将导致主数据库故障的日志同步至备数据库,从而导致备数据库也发生相应故障的技术问题。
附图说明
16.为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
17.图1为本发明实施例一的主数据库与备数据库之间同步日志文件的方法的流程图;
18.图2为本发明实施例一的可选的主数据库与备数据库之间同步日志文件的方法的流程图;
19.图3为本发明实施例一的又一可选的主数据库与备数据库之间同步日志文件的方法的流程图;以及
20.图4是本发明实施例二的主数据库与备数据库之间同步日志文件的装置的示意图。
具体实施方式
21.为了使本发明的上述以及其他特征和优点更加清楚,下面结合附图进一步描述本发明。应当理解,本文给出的具体实施例是出于向本领域技术人员解释的目的,仅是示例性的,而非限制性的。
22.在以下描述中,阐述了许多具体细节以提供对本发明的透彻理解。然而,对于本领域普通技术人员来说,明显的是,不需要采用具体细节来实践本发明。在其他情况下,未详细描述众所周知的步骤或操作,以避免模糊本发明。
23.实施例一
24.本发明提供了一种主数据库与备数据库之间同步日志文件的方法,如图1所示,该方法可以包括:
25.步骤s11,主数据库在检测到数据修改的情况下,生成数据修改的日志文件。
26.具体的,在本方案中,上述主数据库可以为mater数据库,备数据库可以为slave数据库,上述两个数据库都可以为多维数据库,在日常工作中,主数据可以负责处理网络请求,并且进行相应的事务处理,比如,处理客户端发送的数据更改的数据处理请求(例如insert或者delete),备数据库可以负责处理客户端数据查看的数据处理请求(例如select等)。当客户端发现要对主数据库的数据进行修改的请求的情况下,主数据库会根据上述数据修改生成日志文件,上述日志文件中可以是记录数据修改语句原始逻辑的逻辑日志文件binlog,也可以为记载具体修改事项的物理日志文件redolog。
27.步骤s13,主数据库将数据修改进行事务处理。
28.具体的,在主数据库生成数据修改的日志文件之后,主数据库可以将上述数据修改进行该项事务的事务处理(即数据commit)。
29.步骤s15,在事务处理成功的情况下,主数据库将日志文件同步至备数据库。
30.具体的,在上述方案中,事务处理成功则代表该项事务的进程被正常处理,在处理该项事务的进程中主数据库没有发生故障或者宕机,即,上述事项没有引起主数据库发生故障或者宕机。
31.步骤s17,备数据库根据日志文件进行重放。
32.具体的,在本方案中,在事务处理成功即数据commit之后,主数据库才会将日志文件同步至备数据库,并且由备数据库根据上述日志文件进行数据重放replay,以完成主备库的数据同步,需要说明的是,本方案与现有技术相比,并非在主数据库生成日志文件之后立即发送备数据库进行数据重放,而是在事务处理成功的情况下才将日志文件同步至备数据库进行重放,在事务处理失败的情况下则不同步上述日志文件到备数据库。而事务处理成功则代表该项事务没有使得主数据库故障或者宕机,该日志文件是“安全的”,因此,在备数据库根据上述日志文件进行数据重放之后,也不会出现故障或者宕机,综上,本方案在主数据库处理事务的过程中,如果发现数据被修改,则会生成binlog、redolog日志文件,然后在事务处理成功之后,即数据commit之后,才会将日志文件发送至备数据库进行重放,解决了现有技术容易出现将导致主数据库故障的日志同步至备数据库,从而导致备数据库也发生相应故障的技术问题。
33.需要说明的是,上述日志文件可以为增量日志文件,例如,主数据库通过上述机制在数据commit之后,不断将新的binlog日志同步至备数据库,由备数据库检测到有新的binlog日志,然后重放上述新的binlog日志以实现主数据库备数据库的一致。需要说明的是,备数据库在接收到主数据库生成的binlog之后,会将binlog顺序写入备数据库的本地磁盘,然后从本地磁盘以事务为单位读取binlog并且进行重放,从而完成主数据库、备数据库的数据一致性。
34.可选的,如图2所示,步骤s17,备数据库根据日志文件进行重放的步骤可以包括:
35.步骤s171,备数据库在进行重放的过程中,生成重放进度信息。
36.步骤s172,备数据库将重放进度信息通过心跳机制同步至主数据库。
37.具体的,在本方案中,备数据库在进行数据重放的过程中,可以向主数据库通过心跳机制同步重放的进度信息,例如,备数据库重放binlog,并向主数据库心跳同步binlog重放的进度信息,以让主数据库时刻获取到备数据库具体的重放状态以及进度。
38.可选的,日志文件为增量日志文件,比如增量binlog,其中,在步骤s172备数据库将重放进度信息通过心跳机制同步至主数据库之后,本方案的方法还可以包括:
39.步骤s173,在备数据库重放失败的情况下,备数据库向主数据库发送全量同步请求信息。
40.步骤s174,主数据库根据全量同步请求信息生成全量日志文件,并且将全量日志文件发送至备数据库。
41.步骤s175,备数据库根据全量日志文件进行重放。
42.具体的,在本方案中,如果备数据库重放增量binlog失败的情况下,备数据库可以向主数据库发送全量同步请求信息,由主数据库来生成全量的binlog,备数据库在接收到全量的binlog之后,会跳过之前的增量binlog,直接重放新的全量binlog。这里需要说明的是,增量的binlog包含变化,全量的binlog指的是最新的数据的快照。全量的binlog是在备数据库同步失败,向主数据库发起请求时,生成的全量binlog。全量的binlog是根据数据文件生成的,数据文件是根据用户请求不断修改。
43.具体的,上述日志文件可以包括binlog日志文件以及redolog日志文件,其中,在步骤s11生成数据修改的日志文件之后,方法还包括:
44.步骤s12,将binlog日志文件写入到内存中以及将redolog日志文件写入磁盘中。
45.具体的,本方案可以收集binlog,然后将收集到的binlog缓存到内存中,然后将redolog文件写到磁盘中,之后,本方案则在步骤s13中,进行数据、元数据的合并,从而完成最终的数据commit的操作。
46.可选的,如图3所示,在步骤s17备数据库根据日志文件进行重放之后,本方案的方法还可以包括:
47.步骤s19,备数据库根据主数据库发送的心跳信号确定主数据库在第一时间发生故障。
48.步骤s21,在第二时间备数据库接收并处理数据处理请求,其中,第二时间晚于第一时间。
49.具体的,在本方案中,主数据库与备数据库之间有心跳机制,在备数据库在根据增量日志进行重放之后,备数据库可以根据主数据库发送的心跳信号确定主数据库在第一时间发生故障,如果发生故障了,比如主数据库因为异常导致宕机,本方案则在第一时间之后(即第二时间)停止主数据库处理数据处理请求,而是将备库提升为新的主数据库,并且让主数据库类在处理新的数据处理请求,通过上述方式,实现了双机热备、故障自动处理的高的可用方案。
50.综上,本技术的上述方法提供了一种基于binlog日志同步的数据库高可用方案,在该方案中,将binlog写文件,并且发送到备库的时机,放在commit的所有操作完成以后,这样不会把写redolog和最终数据commit过程中,产生宕机或者错误的事务,发送到备库。因为这样的事务,在备库重放,有很大风险会导致备库宕机或者出现数据错误。因此该方案可以大大提升备库的稳定性,减少不必要的数据同步,也增强了主备数据同步的合理性。
51.实施例二
52.如图4所示,本技术还提供一种主数据库备与数据库之间同步日志文件的装置,该装置可以用于执行上述实施例一中的方法,该装置包括:第一生成单元40,用于在检测到数据修改的情况下,生成数据修改的日志文件;事务处理单元42,用于将数据修改进行事务处理;同步单元44,用于在事务处理成功的情况下,将日志文件同步至备数据库;第一重放单元46,用于根据日志文件进行重放。
53.具体的,通过上述装置提供的方案,本方案与现有技术相比,并非在主数据库生成日志文件之后立即发送备库进行数据重放,而是在事务处理成功的情况下才将日志文件同步至备数据库进行重放,在事务处理失败的情况下则不同步上述日志文件到备数据库。而事务处理成功则代表该项事务没有使得主数据库故障或者宕机,该日志文件是“安全的”,因此,在备库根据上述日志文件进行数据重放之后,也不会出现故障或者宕机,综上,本方案在主数据库处理事务的过程中,如果发现数据被修改,则会生成binlog、redolog日志文件,然后在事务处理成功,即数据commit之后,才会将日志文件发送至备数据库进行重放,解决了现有技术容易出现将导致主数据库故障的日志同步至备数据库,从而导致备数据库也发生相应故障的技术问题。
54.可选的,第一重放单元包括:生成模块,用于在进行重放的过程中,生成重放进度信息;同步模块,用于将重放进度信息通过心跳机制同步至主数据库。
55.可选的,日志文件为增量日志文件,装置还包括:发送单元,用于在备数据库重放失败的情况下,向主数据库发送全量同步请求信息;第二生成单元,用于根据全量同步请求信息生成全量日志文件,并且将全量日志文件发送至备数据库;第二重放单元,用于根据全量日志文件进行重放。
56.可选的,日志文件包括binlog日志文件以及redolog日志文件,其中,装置还包括:写入单元,用于将binlog日志文件写入到内存中以及将redolog日志文件写入磁盘中。
57.可选的,装置还包括:确定单元,用于根据主数据库发送的心跳信号确定主数据库在第一时间发生故障;处理单元,用于在第二时间接收并处理数据处理请求,其中,第二时间晚于第一时间。
58.本技术的上述装置提供了一种基于binlog日志同步的数据库高可用方案,在该方案中,将binlog写文件,并且发送到备库的时机,放在commit的所有操作完成以后,这样不会把写redolog和最终数据commit的过程中,产生宕机或者错误的事务,发送到备库。因为这样的事务,在备库重放,有很大风险会导致备库宕机或者出现数据错误。因此该方案可以大大提升备库的稳定性,减少不必要的数据同步,也增强了主备数据同步的合理性。
59.应理解,本文中前述关于本发明的方法所描述的具体特征、操作和细节也可类似地应用于本发明的装置和系统,或者,反之亦然。另外,上文描述的本发明的方法的每个步骤可由本发明的装置或系统的相应部件或单元执行。
60.应理解,本发明的装置的各个模块/单元可全部或部分地通过软件、硬件、固件或其组合来实现。所述各模块/单元各自可以硬件或固件形式内嵌于计算机设备的处理器中或独立于所述处理器,也可以软件形式存储于计算机设备的存储器中以供处理器调用来执行所述各模块/单元的操作。所述各模块/单元各自可以实现为独立的部件或模块,或者两个或更多个模块/单元可实现为单个部件或模块。
61.在一个实施例中,提供了一种计算机设备,其包括存储器和处理器,所述存储器上存储有可由处理器执行的计算机指令,所述计算机指令在由所述处理器执行时指示所述处理器执行本发明的实施例一中的方法的各步骤。该计算机设备可以广义地为服务器、终端,或任何其他具有必要的计算和/或处理能力的电子设备。在一个实施例中,该计算机设备可包括通过系统总线连接的处理器、存储器、网络接口、通信接口等。该计算机设备的处理器可用于提供必要的计算、处理和/或控制能力。该计算机设备的存储器可包括非易失性存储介质和内存储器。该非易失性存储介质中或上可存储有操作系统、计算机程序等。该内存储器可为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口和通信接口可用于与外部的设备通过网络连接和通信。该计算机程序被处理器执行时执行本发明的用于电池充电的方法的步骤。
62.本发明可以实现为一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序在由处理器执行时导致本发明实施例一的方法的步骤被执行。在一个实施例中,所述计算机程序被分布在网络耦合的多个计算机设备或处理器上,以使得所述计算机程序由一个或多个计算机设备或处理器以分布式方式存储、访问和执行。单个方法步骤/操作,或者两个或更多个方法步骤/操作,可以由单个计算机设备或处理器或由两个或更多个计算机设备或处理器执行。一个或多个方法步骤/操作可以由一个或多个计算机设备或处理器执行,并且一个或多个其他方法步骤/操作可以由一个或多个其他计算机设备或处理器执行。一个或多个计算机设备或处理器可以执行单个方法步骤/操作,或执行两个或更多个方法步骤/操作。
63.本领域普通技术人员可以理解,本发明的方法步骤可以通过计算机程序来指示相关的硬件如计算机设备或处理器完成,所述的计算机程序可存储于非暂时性计算机可读存储介质中,该计算机程序被执行时导致本发明的步骤被执行。根据情况,本文中对存储器、存储、数据库或其它介质的任何引用可包括非易失性和/或易失性存储器。非易失性存储器的示例包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)、闪存、磁带、软盘、磁光数据存储装置、光学数据存储装置、硬盘、固态盘等。易失性存储器的示例包括随机存取存储器(ram)、外部高速缓冲存储器等。
64.以上描述的各技术特征可以任意地组合。尽管未对这些技术特征的所有可能组合进行描述,但这些技术特征的任何组合都应当被认为由本说明书涵盖,只要这样的组合不存在矛盾。
65.最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜