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

一种日志文件的断点确定方法、装置、设备及存储介质与流程

2022-12-02 19:42:47 来源:中国专利 TAG:


1.本发明涉及数据库备份技术领域,尤其涉及一种日志文件的断点确定方法、装置、设备及存储介质。


背景技术:

2.数据备份是容灾的基础,为了确保数据的安全,会将源数据库中的数据实时灾备到备用数据库中进行保存。数据备份由源端通过对事务数据的分析实现。为了保证备库与源库的数据一致,在分析过程中不能有事务数据被遗漏。
3.考虑到备份中途可能会暂停、退出或重启,当备份服务重启后,需要从上次退出前未完成分析的事务开始,重新再次分析,这样就不会有事务数据遗漏。所以,在分析过程中,需要将正在分析事务的事务起始信息在日志文件中的位置记录为断点进行保存,该断点可以作为重启后再次分析的起点。
4.在实际场景中,经常会碰到这样的情况,存在一直未完成的事务,使得断点所对应日志文件处于更早时间段,而由于存储空间的限制,会对日志文件进行清理,断点所对应的文件可能已被清理掉,导致重启后无法正常备份。


技术实现要素:

5.本发明提供了一种日志文件的断点确定方法、装置、设备及存储介质,以解决备份服务重启后因找不到断点对应的日志文件而无法正常备份的问题。
6.根据本发明的一方面,提供了一种日志文件的断点确定方法,包括:
7.当检测到备份服务启动后,获取预先记录的当前日志断点,从日志文件的所述当前日志断点处读取事务数据并进行数据备份操作;
8.在备份操作执行过程中,更新预先创建的备份未完成事务列表及无效事务列表;
9.在满足断点确定条件时,根据所述备份未完成事务列表及无效事务列表,确定备份服务下一次启动时所对应的下一日志断点并保存。
10.根据本发明的另一方面,提供了一种日志文件的断点确定装置,包括:
11.数据备份操作模块,用于当检测到备份服务启动后,获取预先记录的当前日志断点,从日志文件的所述当前日志断点处读取事务数据并进行数据备份操作;
12.事务列表更新模块,用于在备份操作执行过程中,更新预先创建的备份未完成事务列表及无效事务列表;
13.断点确定模块,用于在满足断点确定条件时,根据所述备份未完成事务列表及无效事务列表,确定备份服务下一次启动时所对应的下一日志断点并保存。
14.根据本发明的另一方面,提供了一种电子设备,所述电子设备包括:
15.至少一个处理器;以及
16.与所述至少一个处理器通信连接的存储器;其中,
17.所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序
被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明任一实施例所述的日志文件的断点确定方法。
18.根据本发明的另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现本发明任一实施例所述的日志文件的断点确定方法。
19.本发明实施例公开了一种日志文件的断点确定方法、装置、设备及存储介质。该方法包括:当检测到备份服务启动后,获取预先记录的当前日志断点,从日志文件的所述当前日志断点处读取事务数据并进行数据备份操作;在备份操作执行过程中,更新预先创建的备份未完成事务列表及无效事务列表;在满足断点确定条件时,根据所述备份未完成事务列表及无效事务列表,确定备份服务下一次启动时所对应的下一日志断点并保存。考虑到现有技术中,备份服务重启后,断点所对应的日志文件可能已被清理而无法正常备份;针对此问题,本方案基于无效事务列表,在确定断点时忽略无效长事务,从而避免备份服务重启后找不到断点对应的日志文件,保证重启后能正常备份。
20.应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。
附图说明
21.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
22.图1为本发明实施例一提供的一种日志文件的断点确定方法的流程图;
23.图2为本发明实施例二提供的一种日志文件的断点确定方法的流程图;
24.图3为oracle数据库备份服务重启后步骤的流程示例图;
25.图4为本发明实施例三提供的一种日志文件的断点确定装置的结构示意图;
26.图5示出了可以用来实施本发明的实施例的电子设备的结构示意图。
具体实施方式
27.为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
28.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“目标”、“原始”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品
或设备固有的其它步骤或单元。
29.需要说明的是,为了保证备库始终与源库的数据保持一致,在将源库中的数据备份到备库时,需要能够完全读取到从初始同步点开始后,源库所产生的所有事务数据,并正确的解析、逆向转换为数据库操作语句,在备库中重新执行。这个过程中不能有事务数据被遗漏,否则就会导致备库与源库的数据不一致。考虑到备份服务中途会暂停、退出或重启,当重新启动后,需要从上次退出前的未完成分析的那些事务开始,重新再次分析,保证不会有事务数据遗漏。因此在备份服务的过程中,需要将正在分析事务的事务起始信息在日志文件中的位置记录为断点保存到磁盘中,方便下次备份服务中断后的再次重新分析。但经常会碰到这样的情况,即有些事务从开始以来,就很长时间也没结束,日志文件切换了多次后,该事务还没结束。这种情况下,当备份服务重启后,需要重新分析该事务时,需要从很早的日志文件开始分析。然而,考虑到磁盘容量限制,很多时候这些早期的日志文件已经不存在了,这样就无法分析该事务,从而报错导致分析停止。此时,只能重新做初始备份同步,这样,既费工又增加了数据丢失的风险。针对此问题,本发明技术方案提供了一种日志文件的断点确定方法。
30.实施例一
31.图1为本发明实施例一提供的一种日志文件的断点确定方法的流程图,本实施例可适用于对数据备份重启时所需日志文件的断点进行确定的情况,该方法可以由日志文件的断点确定装置来执行,该日志文件的断点确定装置可以采用硬件和/或软件的形式实现,该日志文件的断点确定装置可配置于电子设备中。如图1所示,该方法包括:
32.s110、当检测到备份服务启动后,获取预先记录的当前日志断点,从日志文件的当前日志断点处读取事务数据并进行数据备份操作。
33.可以知道的是,数据库用于保存非常重要的数据,并为上层应用提供数据访问服务。为了确保数据库中数据的安全,会将源数据库中数据实时灾备到另一台备用数据库中进行保存。当源端数据库因为故障等原因不可用或数据丢失后,可以在备用数据库中找回源端的数据。其中,将源端数据库中的数据备份到备用数据库的过程可以称为备份服务。
34.考虑到,上层应用对数据库的读写等访问,最终会被转化为多条事务数据并记录到日志文件中。备份服务开启后,就需要完成这些事务数据的同步,实现备库始终与源库的数据保持一致。因此,需要能够完全读取从初始同步点开始后,源端数据库所产生的所有事务数据,并正确的解析、逆向装换为数据库操作语句,在备端数据库中重新执行,在这个过程中不能有事务数据被遗漏,否则就会导致备库与源库的数据不一致。而实际备份服务开启后,中途可能会暂停、退出或重启,当备份服务重新启动后,需要从上次退出前的未完成分析的那些事务开始,重新再次分析,这样就不会有事务数据遗漏。所以,在备份服务过程中,需要将正在分析的事务的起始位置信息保存到磁盘文件中,方便下次备份服务中断后的再次重新分析。
35.以oracle数据库为例进行说明,示例性的,oracle数据库的重做日志文件(redo log),记录了oracle所产生的所有事务数据,用于确保oracle数据库的故障恢复。每个oracle实例会有一组在线redo log文件循环使用,并且可以将用过的redo log文件进行归档。每个redo log文件都有一个序号与之唯一相对应。由于磁盘容量限制,早期的redo log可能已经被删除。
36.当前日志断点用于记录事务在日志文件中的位置数据。通过当前日志断点的信息可以精确定位到日志文件中的某个特定位置。当前日志断点可用于备份服务做事务分析的断点地址,即从该地址起始继续分析后续的日志文件内容。磁盘文件中记录的当前日志断点一般是某个事务在日志文件中的起始地址。当备份服务重启后,需要接续上次分析点开始继续分析时,就需要知道该当前日志断点。本实施例中,将排除无效事务筛选出备份未完成事务的起始位置作为当前日志断点,并保存在磁盘文件中。当备份服务重启时,就可以先获取当前日志断点,从日志文件的当前日志断点处读取事务数据并进行数据备份操作。
37.优选的,当前日志断点的信息可以包括:日志文件的序号,日志文件内部的块号以及日志文件的块内偏移量。其中,日志文件的序号是日志文件的唯一标识,日志文件内部的块号与数据库产品所描述的日志文件内部块号相对应。本实施例中,在备份服务开启后,对事务数据进行分析过程中,可以确定日志断点。确定当前日志断点的时机可以是人为设定的,例如可以是在遇到事务结束标志时进行,也可以在遇到事务开始标志时进行,此处不做具体限制。
38.具体的,当检测到备份服务启动后,从磁盘中获取预先记录的当前日志断点,从日志文件的当前日志断点处读取事务数据并进行数据备份操作。示例性的,以oracle数据库为例,一个oracle的数据库事务可能会包括一批数据操纵语言(data manipulation language,dml)或者数据定义语言(data definition language,ddl)。事务一般以开始(begin)操作为开始,以提交(commit)或回滚(rollback)操作为结束。
39.s120、在备份操作执行过程中,更新预先创建的备份未完成事务列表及无效事务列表。
40.其中,备份未完成事务列表用于记录一条或多条备份未完成事务。每条备份未完成事务对应的信息可以是:事务号、事务起始位置、事务起始时间等数据。同时,备份操作执行过程中,如果备份未完成事务对应有操作数据量,则也会记录到备份未完成事务列表中。备份未完成事务列表可以存储在内存中,当备份服务重启后,可以从内存中获取备份未完成事务列表。无效事务列表用于记录无效事务。每条无效事务对应的信息可以是:事务号等信息。无效事务列表可以存储在磁盘文件中,当备份服务重启后,可以从磁盘文件中获取无效事务列表。
41.本实施例中,一个事务,如果从事务开始位置,到事务结束位置,这中间如果横跨了超过在线日志文件组数时,将这种事务定义为长事务。例如,一个数据库的在线文件组数为5组,数据库会循环使用这5组文件来记录日志内容。例如,一个事务,其事务的开始(begin)数据位于第一组文件中,随着时间的推移,数据库不断写入数据进入日志文件,第一组文件写满后继续写第二组文件,以此类推,当数据库写满第n组文件时,这个事务还没结束,那就将这种事务定义为长事务。这个n值可以自定义,例如,可以将n值定为3,即当一个事务从起始开始到结束,如果其在日志文件中横跨了3组日志文件,则认为这个事务是长事务。一个未结束的长事务,且从事务的开始,到当前时刻,这个事务一直没有捕获到有效的事务数据,那么就认为这个长事务当前属于无效事务。当然,一旦捕获到了有效事务数据,那么该长事务就不再属于无效事务。
42.具体的,从内存中获取备份未完成事务列表,从磁盘文件中获取无效事务列表。在步骤s110从日志文件的当前日志断点处读取事务数据并进行数据备份操作之后,解析事务
数据,当解析出有新的备份未完成事务时,将该备份未完成事务更新至备份未完成事务列表中;当解析出未完成事务结束时,将完成事务从备份未完成事务列表中删除。示例性的,在解析事务数据的过程中,解析出开始消息(如begin)时,则认为该开始消息对应的事务为新事务,并将该事务的事务号、事务起始位置及事务起始时间记录到备份未完成事务列表中。在解析事务数据的过程中,解析出结束消息(如commit或rollback)时,则认为该结束消息对应的事务已经完成,此时应将该事务从备份未完成事务列表中删除。
43.此外,在数据备份操作执行过程中,当解析出有新的无效事务时,将该无效事务更新至无效事务列表中;当解析出无效事务对应的操作数据时,将无效事务从无效事务列表中删除。示例性的,当解析事务数据的过程中,解析出某事务满足无效事务条件,则认为该事务为新增的无效事务,并记录到无效事务列表中;当解析事务数据的过程中,解析出无效事务列表中某无效事务的操作数据,则认为该事务不为无效事务,则将该事务从无效事务列表中删除。
44.s130、在满足断点确定条件时,根据所述备份未完成事务列表及无效事务列表,确定备份服务下一次启动时所对应的下一日志断点并保存。
45.其中,断点确定条件可以是人为设定的,可以是遇到某类消息时,进行断点确定,也可以是按设定时间间隔进行断点确定。优选的,可以设定当遇到结束消息时确定当前日志断点。示例性的,以oracle数据库为例,当遇到提交(commit)或回滚(rollback)操作消息时,确定当前日志断点。
46.考虑到现有技术中,当前日志断点的产生一般是备份服务在碰到结束消息时,通过检查当前内存中所有未完成事务列表,并从中找到一个最早的未完成事务,然后获取到这个事务的起始位置作为当前日志断点并记录到磁盘上。实际情况中,磁盘记录的这个当前日志断点,其所指向的日志文件有可能是很早时候产生的,而数据库的管理员为节省磁盘空间会定期删除早期的日志文件。这样,就导致备份服务重启后找不到对应的日志文件,从而无法继续分析下去,导致备份服务终止。要想继续备份,只能重新做初始备份。针对此问题,本实施例中提出增加一个无效事务列表,用于记录当前所有无效事务。无效事务对应的数据从数据备份的角度来说,认为是可以被备份服务忽略的事务,忽略后不会导致源库和备库的数据不一致。因此,当生成当前断点数据时过滤无效事务,只关注有效事务且需要关注的事务。
47.可以知道的是,如果不排除此类无效事务,那记录的下一日志断点会大大提前,可能记录到的是几天甚至几周前的日志文件的位置。记录的断点越早,出现日志文件找不到的风险越大。本实施例中基于无效事务列表排除无效事务后,往往记录的日志断点会离当前时间很近,就大大降低了日志文件找不到的风险。跳过那些未完成的无效长事务的分析,也不会导致应用数据的丢失。
48.具体的,本实施中确定当前日志断点的步骤可以是:在满足断点确定条件时,依据无效事务中无效事务,排除备份未完成事务列表中的无效事务后,备份未完成事务列表中剩余的事务为有效的且需要关注的事务,从剩余事务中检索出事务开始时间最早的事务,将该事务对应的起始位置作为下一日志断点,并存储至磁盘文件中,用于若备份服务重启,则可以从磁盘文件中获取当前日志断点,以便继续进行事务数据的分析。
49.需要说明的是,当满足断点确定条件时,就会进行下一日志断点的确定,并将确定
的下一日志断点保存到磁盘文件中。每当满足断点确定条件时,就会进行日志断点的确定,将本次确定的日志进行保存至磁盘文件中并覆盖上一次确定的日志断点,也可以理解为,磁盘中始终保存的是最近一次日志断点。如果备份服务正常运行,则磁盘文件中保存的日志断点会伴随着事务数据的分析而不断更新。
50.本发明实施例公开了一种日志文件的断点确定方法。该方法包括:当检测到备份服务启动后,获取预先记录的当前日志断点,从日志文件的所述当前日志断点处读取事务数据并进行数据备份操作;在备份操作执行过程中,更新预先创建的备份未完成事务列表及无效事务列表;在满足断点确定条件时,根据所述备份未完成事务列表及无效事务列表,确定备份服务下一次启动时所对应的下一日志断点并保存。考虑到现有技术中,备份服务重启后,断点所对应的日志文件可能已被清理而无法正常备份;针对此问题,本方案基于无效事务列表,排除了很多长期未完成且又是无效的事务,在确定断点时忽略无效长事务,这样记录的日志断点通常会离当前时间很近,就大大降低了日志文件找不到的风险。从而避免备份服务重启后找不到断点对应的日志文件,保证重启后能正常备份。
51.实施例二
52.图2为本发明实施例二提供的一种日志文件的断点确定方法的流程图,本实施例以上述实施例为基础,在本实施例中,可以将在备份操作执行过程中,更新预先创建的备份未完成事务列表及无效事务列表具体表述为:在备份操作执行过程中,向预先所创建备份未完成事务列表中添加新确定的备份未完成事务,并从备份未完成事务列表中删除备份已完成事务;在备份操作执行过程中,向预先所创建无效事务列表添加从日志文件中确定的无效事务,并从无效事务列表中删除确定出的目标事务;目标事务为事务标签由无效变更为有效的无效事务。
53.同时,本实施例还可以将在满足断点确定条件时,根据备份未完成事务列表及无效事务列表,确定备份服务下一次启动时所对应的下一日志断点并保存具体表述为:将包含于备份未完成事务列表中且不包含于无效长事务列表中的事务构成待选事务集;基于待选事务集中包含的事务数量,确定备份服务下一次启动时所对应的下一日志断点。
54.如图2所示,本发明实施例二提供的一种日志文件的断点确定方法,具体包括如下步骤:
55.s210、当检测到备份服务启动后,获取预先记录的当前日志断点,从日志文件的当前日志断点处读取事务数据并进行数据备份操作。
56.s220、在备份操作执行过程中,向预先所创建备份未完成事务列表中添加新确定的备份未完成事务,并从备份未完成事务列表中删除备份已完成事务。
57.本实施例中,在备份操作执行过程中,会依次读取日志文件中记录的事务数据并进行解析。由于事务一般包括开始消息,操作消息及结束消息。当解析时遇到开始消息时,表征有新的备份未完成事务,此时需要将新的备份未完成事务添加到备份未完成事务列表中。当解析时遇到结束消息时,表征有事务已完成,该事务为备份已完成事务,此时需要将该事务从备份未完成事务列表中删除。
58.s230、在备份操作执行过程中,向预先所创建无效事务列表添加从日志文件中确定的无效事务,并从无效事务列表中删除确定出的目标事务。
59.其中,目标事务为事务标签由无效变更为有效的无效事务。事务标签可以理解为
表征事务是否有效的标签。
60.本步骤中,在备份操作执行过程中,检查所有备份未完成事务列表中的事务,如果发现有事务满足长事务的条件,且这个事务的操作数据量为零,且还未被记录到无效事务列表中,则认为该事务属于新增的无效事务,并将新增的无效事务添加到无效事务列表中。优选的,从运行效率考虑,把刷新无效事务列表的时机可以放到处理结束消息的过程中。每当碰到事务结束消息时,就会检查一遍所有当前备份未完成事务中是否有无效事务,如果有且还没有记录到该无效事务列表中,就将该事务号新增到无效事务列表里。
61.需要知道的是,在备份操作执行过程中,如果某事务在无效事务列表里,如果碰到该事务对应的操作数据的事务消息,则表征该事务为有效事务,该事务的事务标签由无效变更为有效,并需要将该事务从无效事务列表中删除。
62.s240、将包含于备份未完成事务列表中且不包含于无效事务列表中的事务构成待选事务集。
63.本实施例中,备份未完成事务列表记录了所有当前未完成事务,无效事务列表中包含无效事务,在确定日志断点时先排除无效事务,将排除无效事务的备份未完成事务列表中剩余的事务确定为有效且需关注的事务构成待选事务集。
64.其中,待选事务集中的事务,由备份未完成事务列表和无效事务列表共同确定。最终确定的待选事务集可能包含1个或多个事务,也可能为空。示例性的,假设备份未完成事务列表中包含事务1、2、3、4、5、6、7、8、9、10,无效事务列表中,包含事务1、3、12、13,将包含于备份未完成事务列表中且不包含于无效事务列表中的事务构成待选事务集,确定待选事务集包括:事务2、4、5、6、7、8、9、10。假设备份未完成事务列表中包含事务20、21,无效事务列表中包含事务20、21、30、31,将包含于备份未完成事务列表中且不包含于无效事务列表中的事务构成待选事务集,则确定待选事务集为空。
65.s250、基于待选事务集中包含的事务数量,确定备份服务下一次启动时所对应的下一日志断点。
66.可以清楚的是,待选事务集中可能包含事务也可能不包含事务,若包含事务,则可以根据包含事务的信息确定备份服务下一次启动时所对应的下一日志断点。例如,可以比较待选事务集中所有事务的起始时间,将其起始时间最早的事务对应的起始位置确定为下一日志断点。这样设置的目的是,从起始时间最早的事务对应的起始位置作为下一日志断点,从此断点进行继续解析,可以保证待选事务集中所有未完成事务均被解析到,从而避免事务数据被遗漏。
67.作为本技术实施例的一个可选实施例,在上述实施例的基础上,从日志文件中确定的无效事务的步骤可以包括:
68.s221、检测到当前从日志文件中所读取信息为事务起始信息时,将事务起始信息对应的事务确定为当前备份事务。
69.其中,事务起始信息具体可以理解为表征事务开始的信息,例如oracle的数据库事务以begin操作为开始。对日志文件中的事务数据进行读取解析时,当检测到当前从日志文件中所读取信息为事务起始信息时,则将事务起始信息对应的事务确定为当前备份事务。
70.s222、如果对当前备份事务进行设定数据长度的读取后未检测到相应的有效事务
数据,则将当前备份事务确定为无效事务,并将相应事务标签标记为无效。
71.其中,设定数据长度可以理解为无效事务对应的长度。有效事务数据可以理解为操作数据,例如,oracle的数据库事务中dml操作数据或者ddl操作数据。如果对当前备份事务进行设定数据长度的读取,可以确定该无效事务为长事务,进一步确定对当前备份事务进行设定数据长度的读取后未检测到相应的有效事务数据,则确定当前备份事务为无效事务,并将相应事务标签标记为无效。可以知道,当确定出无效事务后,需要将无效事务更新至无效事务列表中。
72.作为本技术实施例的一个可选实施例,在上述实施例的基础上,目标事务的确定步骤可以包括:
73.针对无效事务列表中的每个无效事务,如果从日志文件中读取到无效事务的有效事务数据,则将无效事务记为目标事务,并将相应事务标签由无效变更为有效。
74.本步骤中,在进行备份服务时,对于无效事务列表中的每个无效事务,如果从日志文件中读取到某无效事务的有效事务数据,表明该无效事务对应有效事务数据,则将无效事务记为目标事务,并将相应事务标签由无效变更为有效。可以知道,当确定出目标事务后,需要将目标事务从无效事务列表中删除。
75.作为本技术实施例的一个可选实施例,在上述实施例的基础上,基于待选事务集中包含的事务数量,确定备份服务下一次启动时所对应的下一日志断点,包括:
76.s241、若待选事务集为空,则将日志文件的当前读取点确定为下一日志断点。
77.考虑到若待选事务集为空,表征无事务既不属于无效事务又属于备份未完成事务,也就是无有效的备份未完成事务,则将日志文件的当前读取点确定为下一日志断点。
78.s242、若待选事务集不为空,则基于待选事务集中各事务对应的事务起始数据,确定下一日志断点。
79.其中,事务起始数据包括:事务号、事务起始时间、事务起始位置等。若待选事务集不为空,则可以根据待选事务集中包含的各事务对应的事务起始数据,确定下一日志断点。为了保证备份服务重启后,读取的事务数据不被遗漏,则需要保证从确定的下一日志断点开始读取,能够使待选事务集中包含的各事务均被读取到。因此,根据待选事务集中各事务对应的事务起始时间、事务起始位置等确定下一日志断点。
80.可选的,若待选事务集不为空,则基于待选事务集中各事务对应的事务起始信息,确定下一日志断点,包括:从各事务中确定最早事务起始时间对应的事务为第一事务;将第一事务的起始位置作为下一日志断点。
81.具体的,为了保证待选事务集中包含的各事务在备份服务重启后均可以被读取解析,从各事务中确定最早事务起始时间对应的事务为第一事务,将第一事务的起始位置作为下一日志断点。
82.以某一应用场景为例进行示例性描述。图3为oracle数据库备份服务重启后步骤的流程示例图。示例性的,以oracle数据库备份服务为例,一个oracle的数据库事务可能会包括一批dml操作,或者ddl操作,事务一般以begin操作为开始,以commit或rollback操作为结束,其事务数据会记录在redo log日志文件中。如图3所示,oracle数据库备份服务重启后,具体步骤如下:
83.步骤a)当检测到备份服务启动后,获取预先记录的当前日志断点;
84.步骤b)从日志文件的当前日志断点处读取事务数据并进行数据备份操作;
85.步骤c)判断读取事务数据为begin、dml/ddl或commit/rollback;
86.步骤d)若事务数据为begin,则向预先所创建备份未完成事务列表中添加新确定的备份未完成事务。
87.步骤e)若事务数据为dml/ddl,则判断当前事务是否存在于无效事务列表;
88.步骤f)若存在,则将当前事务从无效事务列表中删除;
89.步骤g)若事务数据为commit/rollback,则从所述备份未完成事务列表中删除备份已完成事务;
90.步骤h)检索当前未完成事务列表,如果发现新的无效长事务,则将该事务加入无效事务列表中;
91.步骤i)检索备份未完成事务列表,并排除存在于无效事务列表的事务,获取最早有效事务(这里假设有效事务的数量不为零);
92.步骤j)将最早有效事务的起始位置作为下一日志断点。
93.作为本发明实施例的可选实施例,本实施例具体化了在备份操作执行过程中,更新预先创建的备份未完成事务列表及无效事务列表的过程,以及在满足断点确定条件时,根据所述备份未完成事务列表及无效事务列表,确定备份服务下一次启动时所对应的下一日志断点的过程。本方案通过无效事务列表,排除了很多长期未完成且又是无效的事务,这样记录的日志断点就不会是这些长期无效事务的起始点。如果不排除此类长期无效事务,那记录的事务分析断点会大大提前,可能记录到的是几天甚至几周前的日志文件的位置。记录的分析断点越早,出现日志文件找不到的风险越大。无效事务列表排除无效事务后,往往记录的分析断点就会离当前时间很近,就大大降低了日志文件找不到的风险。跳过那些未完成的无效长事务的分析,也不会导致应用数据的丢失。本方案增加无效事务列表,简单易实现。
94.实施例三
95.图4为本发明实施例三提供的一种日志文件的断点确定装置的结构示意图,该装置适用于对数据备份重启时所需日志文件的断点进行确定的情况,其中,该装置可以由软件和/或硬件实现,并一般可集成在电子设备上。如图4所示,该装置包括:数据备份操作模块31、事务列表更新模块32、断点确定模块33。
96.其中,数据备份操作模块31,用于当检测到备份服务启动后,获取预先记录的当前日志断点,从日志文件的当前日志断点处读取事务数据并进行数据备份操作;
97.事务列表更新模块32,用于在备份操作执行过程中,更新预先创建的备份未完成事务列表及无效事务列表;
98.断点确定模块33,用于在满足断点确定条件时,根据备份未完成事务列表及无效事务列表,确定备份服务下一次启动时所对应的下一日志断点并保存。
99.可选的,事务列表更新模块22可以包括:
100.备份未完成事务列表更新单元,用于在备份操作执行过程中,向预先所创建备份未完成事务列表中添加新确定的备份未完成事务,并从备份未完成事务列表中删除备份已完成事务;
101.无效事务列表更新单元,用于在备份操作执行过程中,向预先所创建无效事务列
表添加从日志文件中确定的无效事务,并从无效事务列表中删除确定出的目标事务;
102.目标事务为事务标签由无效变更为有效的无效事务。
103.进一步地,备份未完成事务列表更新单元具体可以用于:
104.检测到当前从日志文件中所读取信息为事务起始信息时,将事务起始信息对应的事务确定为当前备份事务;
105.如果对当前备份事务进行设定数据长度的读取后未检测到相应的有效事务数据,则将当前备份事务确定为无效事务,并将相应事务标签标记为无效。
106.进一步地,无效事务列表更新单元具体可以用于:
107.针对无效事务列表中的每个无效事务,如果从日志文件中读取到无效事务的有效事务数据,则将无效事务记为目标事务,并将相应事务标签由无效变更为有效。
108.可选的,断点确定模块33可以包括:
109.待选事务集确定单元,用于将包含于备份未完成事务列表中且不包含于无效长事务列表中的事务构成待选事务集;
110.下一日志断点确定单元,用于基于待选事务集中包含的事务数量,确定备份服务下一次启动时所对应的下一日志断点。
111.进一步地,待选事务集确定单元具体可以用于:
112.若待选事务集为空,则将日志文件的当前读取点确定为下一日志断点;
113.若待选事务集不为空,则基于待选事务集中各事务对应的事务起始信息,确定下一日志断点。
114.进一步地,下一日志断点确定单元具体可以用于:
115.从各事务中确定最早事务起始时间对应的事务为第一事务;
116.将第一事务的起始位置作为下一日志断点。
117.本发明实施例所提供的日志文件的断点确定装置可执行本发明任意实施例所提供的日志文件的断点确定方法,具备执行方法相应的功能模块和有益效果。
118.实施例四
119.图5示出了可以用来实施本发明的实施例的电子设备40的结构示意图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备(如头盔、眼镜、手表等)和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
120.如图5所示,电子设备40包括至少一个处理器41,以及与至少一个处理器41通信连接的存储器,如只读存储器(rom)42、随机访问存储器(ram)43等,其中,存储器存储有可被至少一个处理器执行的计算机程序,处理器41可以根据存储在只读存储器(rom)42中的计算机程序或者从存储单元48加载到随机访问存储器(ram)43中的计算机程序,来执行各种适当的动作和处理。在ram 43中,还可存储电子设备40操作所需的各种程序和数据。处理器41、rom 42以及ram 43通过总线44彼此相连。输入/输出(i/o)接口45也连接至总线44。
121.电子设备40中的多个部件连接至i/o接口45,包括:输入单元46,例如键盘、鼠标等;输出单元47,例如各种类型的显示器、扬声器等;存储单元48,例如磁盘、光盘等;以及通
信单元49,例如网卡、调制解调器、无线通信收发机等。通信单元49允许电子设备40通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
122.处理器41可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器41的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。处理器41执行上文所描述的各个方法和处理,例如日志文件的断点确定方法。
123.在一些实施例中,日志文件的断点确定方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元48。在一些实施例中,计算机程序的部分或者全部可以经由rom 42和/或通信单元49而被载入和/或安装到电子设备40上。当计算机程序加载到ram 43并由处理器41执行时,可以执行上文描述的日志文件的断点确定方法的一个或多个步骤。备选地,在其他实施例中,处理器41可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行日志文件的断点确定方法。
124.本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、负载可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
125.用于实施本发明的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
126.在本发明的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
127.为了提供与用户的交互,可以在电子设备上实施此处描述的系统和技术,该电子设备具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给电子设备。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且
可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
128.可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)、区块链网络和互联网。
129.计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与vps服务中,存在的管理难度大,业务扩展性弱的缺陷。
130.应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。
131.上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

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

相关文献