CN114328018A - 快照的创建方法、计算设备及存储介质 - Google Patents
快照的创建方法、计算设备及存储介质 Download PDFInfo
- Publication number
- CN114328018A CN114328018A CN202111627093.7A CN202111627093A CN114328018A CN 114328018 A CN114328018 A CN 114328018A CN 202111627093 A CN202111627093 A CN 202111627093A CN 114328018 A CN114328018 A CN 114328018A
- Authority
- CN
- China
- Prior art keywords
- data
- snapshot
- identifier
- write
- write data
- 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.)
- Pending
Links
Images
Abstract
本申请实施例提供一种快照的创建方法、计算设备及存储介质。在本申请实施例中,通过计算节点向存储节点下发写请求,写请求携带写数据以及写数据的数据标识,数据标识随着时序增大;通过存储节点根据写数据的数据标识,存储写数据;在创建快照的情况下,通过计算节点获取对应写数据的最新数据标识,并将最新数据标识作为快照标识发送至存储节点,存储快照标识;通过存储节点保留数据标识小于或等于快照标识对应的写数据,作为快照对应的数据。使得可以在创建快照的时候,选择数据标识小于或等于快照标识的存储写数据,从而能够较为准确地划分创建快照之前的存储的写数据,则就无需通过阻碍用户的读写请求(特别是写请求)来实现创建快照。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种快照的创建方法、计算设备及存储介质。
背景技术
快照是存储系统的核心功能,基于快照可以衍生出其它许多存储功能,例如备份还原、数据共享实例等。一般快照是存储系统独立自己完成实现,并不会考虑上层服务的情况,这样快照实现复杂。同时在打快照的时候可能阻塞用户的写请求,直至完成打快照。
发明内容
本申请的多个方面提供一种快照的创建方法、计算设备及存储介质,使得在创建快照的时候,可以方便快捷地创建快照,而不阻塞用户的写请求来实现快照的创建。
本申请实施例提供一种快照的创建方法,包括:通过计算节点向存储节点下发写请求,所述写请求携带写数据以及写数据的数据标识,所述数据标识随着时序增大;通过存储节点根据写数据的数据标识,有序存储写数据;在创建快照的情况下,通过计算节点获取对应写数据的最新数据标识,并将所述最新数据标识作为快照标识发送至存储节点,通过存储节点存储所述快照标识;通过存储节点保留数据标识小于或等于快照标识对应的写数据,作为快照对应的数据,以使在读取快照的情况下,读取快照对应的数据。
本申请实施例还提供一种计算设备,包括:存储器、处理器;所述存储器,用于存储计算机程序;所述处理器,执行所述计算机程序,以用于:通过计算节点向存储节点下发写请求,所述写请求携带写数据以及写数据的数据标识,所述数据标识随着时序增大;通过存储节点根据写数据的数据标识,有序存储写数据;在创建快照的情况下,通过计算节点获取对应写数据的最新数据标识,并将所述最新数据标识作为快照标识发送至存储节点,通过存储节点存储所述快照标识;通过存储节点保留数据标识小于或等于快照标识对应的写数据,作为快照对应的数据,以使在读取快照的情况下,读取快照对应的数据。
本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序被一个或多个处理器执行时,致使所述一个或多个处理器实现上述方法中的步骤。
本申请实施例还提供一种计算机程序产品,包括计算机程序或指令,其中,当计算机程序被处理器执行时,致使处理器实现权利要求上述方法中的步骤。
在本申请实施例中,通过计算节点向存储节点下发写请求,写请求携带写数据以及写数据的数据标识,数据标识随着时序增大;通过存储节点根据写数据的数据标识,有序存储写数据;在创建快照的情况下,通过计算节点获取对应写数据的最新数据标识,并将最新数据标识作为快照标识发送至存储节点,通过存储节点存储快照标识;通过存储节点保留数据标识小于或等于快照标识对应的写数据,作为快照对应的数据,以使在读取快照的情况下,读取快照对应的数据。
其中,在创建快照的情况下,通过计算节点获取对应写数据的最新数据标识,并将最新数据标识作为快照标识发送至存储节点,通过存储节点存储快照标识;通过存储节点保留数据标识小于或等于快照标识对应的写数据,作为快照对应的数据。且由于写请求携带写数据以及写数据的数据标识,使得存储的写数据具有对应的数据标识,且对应的数据标识随着时序增大,使得可以在创建快照的时候,选择数据标识小于或等于快照标识的写数据,从而能够较为准确地划分创建快照之前的存储的写数据,则就无需通过阻碍用户的读写请求(特别是写请求)来实现创建快照,即就无需阻碍对应的读写IO。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请一示例性实施例的快照的创建方法的流程示意图;
图2为本申请一示例性实施例的快照的创建过程的示意图;
图3为本申请一示例性实施例的快照的创建系统的结构示意图;
图4为本申请一示例性实施例提供的快照的创建装置的结构示意图;
图5为本申请一示例性实施例提供的计算设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
根据前文可知,在打快照时刻,如果有对应的请求(如写IO)下发,为了保证各个存储节点上的数据是一致的,需要完成请求的协同后才能继续响应对应的请求,所以在完成请求协同之前,对应的请求会阻塞在那里等待直到协同完成。一般而言,对于分布式存储系统而言,为了解决分布式状态的一致,分布式存储系统的快照实现需要阻塞请求来是实现打快照,即阻塞对应的IO来是实现打快照。
针对上述问题,本申请实施例提供了一种快照的创建方法、计算设备及存储介质,从而尽量避免了实现快照的分布式协同。
下面结合方法实施例,针对快照的创建过程进行详细说明。
图1为本申请一示例性实施例的一种快照的创建方法的流程示意图。本申请实施例提供的该方法100由计算设备执行,如,云服务器等。该方法100包括以下步骤:
101:通过计算节点向存储节点下发写请求。
其中,写请求携带写数据以及写数据的数据标识,数据标识随着时序增大。
102:通过存储节点根据写数据的数据标识,有序存储写数据。
103:在创建快照的情况下,通过计算节点获取对应写数据的最新数据标识,并将最新数据标识作为快照标识发送至存储节点,通过存储节点存储快照标识。
104:通过存储节点保留数据标识小于或等于快照标识对应的写数据,作为快照对应的数据,以使在读取快照的情况下,读取快照对应的数据。
需要说明的是,对于云服务器而言,其可以部署有对应的数据库系统,该数据库系统用于执行本方法100。数据库系统可以包括存储引擎以及存储系统等。该存储系统可以为分布式存储系统,还可以为单机存储系统以及块存储等。从架构维度上而言,该数据库系统可以包括计算节点以及存储节点。其中,计算节点是指部署在云服务器上的上层应用程序,可以为数据库节点。而存储节点则是指针对该数计算节点实现下层存储功能的节点,如存储系统等。
除此以外,本申请实施例的具体实现方式不拘泥于上述步骤101-103的执行顺序,也可以将上述步骤进行调换。应理解,上述步骤的变形和结合后的技术方案均在本申请实施例的保护范围内。就不再过多赘述了。
以下针对上述步骤进行详细地阐述:
101:通过计算节点向存储节点下发写请求。
其中,写请求携带写数据以及写数据的数据标识,数据标识随着时序增大。即使得存储的数据(即写数据)具有对应的数据标识,且存储的写数据对应的标识随着时间的顺序而增大。而对于同一时间而言的写数据其可以具有相同的标识。该标识可以是序列号,版本号,或者其它自定义的数字,只要其根据时序具有顺序性即可。如,根据时间顺序标识可以为01、02、03、04等。由此可知该标识是逐渐增大的。
写数据可以是指通过待写入数据得到的,如可以是指数据库系统中计算节点的日志中的数据或者等待存储到存储节点中的数据,如缓存页中的数据。
其中,计算节点用于维护随着时序变化的数据标识。
例如,数据库系统中的计算节点将需要进行持久化存储的写数据通过写请求的方式发送给数据库中的存储节点。该写请求的方式也是写IO方式。且该请求或该IO携带有要写入的写数据,以及对应的数据标识。由此,存储节点在接收到该请求后,可以根据该请求中的写数据进行数据存储。也可以通过数据标识来有序存储该写数据。使得存储节点可以获取到写数据以及对应数据标识。也使得对对应的请求或对应的IO进行了打标。
以下对于计算节点的数据标识维护进行详细的说明:
具体的,该方法100还包括:通过计算节点获取待写入数据,以使对待写入数据写入至对应缓存页中;通过计算节点生成并存储待写入数据的写入操作的记录信息,每个记录信息对应有序列号,序列号随着时序增大。
其中,记录信息可以是指记录在日志中的信息,也可以是其它记录信息,只要可以进行记录即可,如记录在文本中的信息。该记录信息可以是指记录待写入数据对应的写入操作,如xx时间写入待写入数据至对应缓存页。
例如,根据前文所述,用户可以通过电脑通过本地的数据库应用程序,或者直接通过API(Application Programming Interface,应用程序接口)接口,来发送读写请求。如SQL(结构化查询语言,Structured Query Language)读写请求。云服务器接收用户通过电脑发送的读写请求。如图2所示,云服务器的数据库系统中的存储引擎201可以接收到发送的写入请求,即计算节点接收写入请求。即执行步骤211:接收请求。存储引擎201可以获取到请求中的待写入数据。然后可以将该待写入数据对应的写入操作进行记录,记录在重做日志2021(redo log)中。即计算节点记录该日志。将该重做日志2021存储至存储系统202(即存储节点)中。即存储引擎201执行步骤212:写入记录信息,至重做日志2021中。在日志中是以日志条目进行记录的。每条日志条目具有对应的序列号LSN(Log SequenceNumber),该序列号与日志条目可以是一一对应的关系。对于同一批量中的日志条目而言,可以是通过共享一个序列号作为这些日志条目的版本号。即可以是将批量的日志条目对应的序列号中的最大值作为该批量的日志条目的版本号。如,批量的日志条目对应的序列号可以是50-100,那么最终该批量的日志条目对应的版本号则为100。由此,根据前文可知,计算节点维护了该数据标识,可以从重做日志2021拿到最大的序列号,作为标识,或者说作为创建的快照的序列号或版本号。如图2所示,将87作为快照的序列号或版本号。即计算节点通过存储引擎201确定快照的标识。
应理解,序列号也是随着时间而递增的,就不再过多赘述了。
由于上述日志中已经对其中的写数据进行了标识,在后续修改缓存页,或者是将对应的写数据写入至缓存页的时候,那么缓存页可以因为这些对应的数据也具有了对应的数据标识。
具体的,该方法100还包括:通过计算节点将待写入数据写入对应缓存页中,以使对应缓存页进行存储,根据待写入数据在记录信息中的序列号,确定对应缓存页的序列号,以使对应写数据均具有对应的序列号;对于同一批量对应的记录信息通过选择相同的序列号作为对应的数据标识。
例如,根据前文所述,可以在写入日志的同时,将待写入数据写入至缓存页中。也可以先执行写入日志,然后再写入至缓存页中。如图2所示,存储引擎201执行步骤213:写入数据,至缓存池203中的缓存页2032(page)中。其中,在缓存池203可以存在干净页2031,即该页中存储的数据已经被存储到存储系统202中进行了数据持久化。而对于缓存页2032其属于脏页,即还未将其中的写数据存储至存储系统202中进行了数据持久化。但之后该脏页也需要进行存储至存储系统202中进行了数据持久化。即,执行步骤215:写入数据。由此,该缓存页2032的标识可以为该待写入数据在对应日志条目中对应序列号,如87,其写入到存储系统202中的存储数据版本号也是87。对于同一批量对应的记录信息通过选择相同的序列号作为对应的标识,该同一批量的记录信息可以属于同一个请求。就不再赘述了。
需要说明的是,由此,数据库系统中的存储数据就都可以具有对应的标识了。当有多个不同序列号的待写入数据需要写入缓存页的时候,该缓存页可以是该这些不同序列号的集合。或者,根据预置规则从这些不同序列号中选择对应的序列号作为该页的序列号。即版本号。如可以选择最大的序列号作为该页的版本号,或者根据对应待写入数据对应的写入时间,不同写入时间可以对应不同的选择方式,写入时间越长其选择的序列号可以越多,持续时间越短序列号越少,根据时间间隔来从不同序列号中选择最终的序列号作为版本号。或者直接选择最小序列号以及最大序列号来作为该页的版本号。
如图2所示,当存储引擎201将待写入数据记录在日志中后,就可以返回写入结果,通过计算节点以及云服务器给用户的电脑,以告知用户。即执行了步骤214:发送写入结果。
上述未经持久化的缓存页在数据库所在设备发生宕机(也可以是云服务器的物理机宕机)后,可以通过上述记录信息进行记录回放来进行数据的恢复。
另,当一个用户的存储的写数据分布在数据库中不同的数据块Segment(将数据磁盘分成多个数据块)上时,快照无法保证一个用户的数据提交的原子性。因为打快照的时间问题,可能导致与打快照同时发生的用户写请求,其一部分是在快照里面,另外一部分却有没有在快照里面,进而导致快照里面的状态与用户发起的请求运行的状态不完全一致。
在本申请实施例中虽然运行在存储系统上,如分布式存储系统上。计算节点会通过批量提交日志条目和等待所有提交的日志条目一起完成才确定事物修改状态,通过这种方式,数据库实现了事务修改的原子性。通过利用这些数据上的LSN,完整地将小于或等于快照的序列号SnapLSN的所有修改记录到了快照Snaphshot中,保证了数据库层面事务的原子性。对于现有技术而言是比较难做到写请求层面的原子性。
其中通过批量对应的日志条目具有相同的版本号,如同一写请求对应的日志条目。在创建快照的时候,可以根据该版本号来进行划分,不会使得该请求一部分出现在快照中,一部分在快照外,保持了一致性。
应理解,对于用户触发的读写请求,其在云服务器中需要对应着对应的写请求来完成最终的数据读取以及数据写入。所以,当其中存储的写数据具有了对应的标识后,对应的写请求也可以具有对应的数据标识。即写请求产生的时刻就已经确定了标识,本申请实施例的数据库系统可以让计算节点在写IO的时候把这些信息带到存储。存储节点就利用这些IO上的标识,如LSN作为版本,来实现快照。由于这些IO的版本号是在计算节点写入数据的时候就已经确定了,存储系统不需要为此再进行协同,如分布式协同只需要增加版本号写入就可以,没有了协同,就不会在打快照时刻阻塞IO,即阻塞了用户的请求。
102:通过存储节点根据写数据的数据标识,有序存储写数据。
由于前文已经阐述了数据进行持久化的过程,此处就不再赘述了。
103:在创建快照的情况下,通过计算节点获取对应写数据的最新数据标识,并将最新数据标识作为快照标识发送至存储节点,通过存储节点存储快照标识。
其中,根据前文可知,最新数据标识则可以是最大标识。也可以是时间上最新的数据标识。
此处可以是将最新数据标识直接作为快照对应的快照标识。或者,在该最新数据标识上进行变换,如+1、+2或者+n等来作为快照对应的快照标识。
快照是指关于指定数据集合的一个完全可用拷贝,该拷贝包括相应数据在某个时间点(拷贝开始的时间点)的映像。
例如,根据前文所述,用户可以通过电脑通过本地的数据库应用程序,或者直接通过API(Application Programming Interface,应用程序接口)接口,来发送创建快照指令。如SQL(结构化查询语言,Structured Query Language)创建快照指令。在此处可以是云服务器接收到该快照创建指令后,具体的可以是数据库中的控制节点接收到该指令,然后通过控制节点触发计算节点去创建快照,或者接收控制节点发送的该指令。然后,计算节点根据该指令去获取其维护的写数据中的最新序列号。该最新序列号是指最大序列号,将该最大序列号确定为当前需要创建快照的标识,即也是该快照的版本号。并将该快照的版本号发送至存储节点,存储节点接收该快照的版本号。
需要说明的是,由此确定好快照的快照标识后,可以将写数据划分为比快照标识小于或等于,或者大于的写数据。
除了用户触发创建快照外,还可以云服务器的数据库系统进行定时创建快照。就不再过多赘述了。
根据前文可知,通过计算节点获取对应写数据的最新数据标识,包括:在创建快照的情况下,从记录信息中获取最后序列号,作为最新数据标识。
例如,根据前文所述,云服务器中的计算节点在获取最新数据标识的时候,从日志中可以获取到最后的序列号,就不再赘述了。
104:通过存储节点保留数据标识小于或等于快照标识对应的写数据,作为快照对应的数据,以使在读取快照的情况下,读取快照对应的数据。
此外,云服务器中的存储节点获取到对应的快照标识后,可以保留其数据中数据标识小于或等于快照标识对应的数据,作为快照对应的数据,就可以具有生成快照并具有对应的快照数据了。同时快照的精准时间是该版本号,即LSN的写入时间。如图2所示,即执行步骤216:创建快照。由此生成对应的版本号以及对应的快照。
为了加快进行快照的创建,以及减少存储空间的占用,可以通过对不必要的数据进行清理,保留需要的数据。
具体的,该方法100还包括:通过存储节点获取小于或等于快照标识的目标数据标识,并保留目标数据标识中最大数据标识对应的写数据;删除目标数据标识中其它数据标识对应的写数据。
例如,根据前文所述,对于快照的版本号即序列号SnapLSN而言,存储系统即存储节点需要保留小于等于SnapLSN之前的最新版本。如图2所示,此处以快照SnapLSN=70为例说明,先从存储系统202中的持久化结构2022中获取到小于等于70写数据的版本号,作为目标标识,然后从其中选择出存储的写数据Pa的版本号为62为最大的版本号,即最大标识。需要保留。目标标识中的其它版本号可以删除。
相对的还可以有该方法100还包括:通过存储节点获取小于或等于快照标识的目标数据标识,并保留目标数据标识中预置数据标识对应的写数据;删除目标数据标识中其它数据标识对应的写数据。
其中,预置数据标识可以是前文所述的目标数据标识中最大标识,也可以是目标数据标识中的前几个数据标识,如前三个最大的数据标识进行保留。或者出了目标数据标识中最大数据标识,可以根据用户的需求来保留对应数据标识的写数据。就不再过多赘述了。
此外,删除目标数据标识中其它数据标识对应的写数据,包括:获取多个快照对应的多个快照标识,根据多个快照标识,删除目标数据标识中部分其它数据标识对应的写数据。
例如,根据前文所述,如图2所示,对于其它未保留的存储的写数据,如果没有快照需要该版本,也可以清理掉。如图2所示,此处以快照SnapLSN=70和SnapLSN=15为例说明,由于快照的版本号只有这两个,而存储的写数据Pa的版本号具有30,根据前文可知由于没有被快照所需要,也不是最新版本,如30它可以被清理掉。
需要说明的是,此处举例是以快照的标识70是指该快照创建的时候,其是作为最大标识的,同理快照的标识15。
在创建了快照后,可以对创建的快照对应数据进行读取。
具体的,该方法100还包括:通过计算节点获取读取快照的指令,通过存储节点根据读取快照的快照标识,获取与快照标识对应的写数据。
例如,根据前文所述,云服务器可以接收到用户触发的读取快照的请求或指令。该请求或指令携带有读取快照的版本号。然后,云服务器中的计算节点可以根据该版本号来读取快照对应的存储的写数据。如小于等于该版本号的写数据。读取数据的过程与写数据的过程相似,也可以通过前文所述的请求的方式来实现,如读请求,读IO等。就不再赘述了。
对于同一个逻辑存储位置offset的写数据而言,如果数据标识不同,存储系统会在磁盘的其它位置进行物理存储,并不会进行数据覆盖。为了回收空间,当一个数据的数据标识不在被存储系统所需要,存储节点会自动将该版本清理掉。
具体的,该方法100还包括:针对同一逻辑存储位置的不同序列号对应的写数据,通过存储节点根据不同物理存储位置存储对应的写数据。
该方法100还包括:通过存储节点保留同一逻辑存储位置对应的最大序列号对应的写数据;通过存储节点获取同一逻辑存储位置对应的序列号,从对应的序列中获取小于或等于最后序列号的目标序列号,并保留目标序列号中最大序列号对应的写数据;通过存储节点从物理存储位置中删除未保留的其它序列号对应的写数据。
其中,同一逻辑存储位置是指同一offset逻辑偏移位置。
例如,根据前文所述,由于对于同一个offset的不同版本号的写数据,云服务器中数据库系统的存储节点需要分开存储不同版本号的存储的写数据至对应不同的物理存储位置中,如分别存储至对应的数据块中。由此,一个offset所被占用的写数据将不再是一个固定的大小,而是随着版本号数目变多而变大,为了降低存储空间开销,存储节点需要回收无用版本号的写数据来回收空间。
数据库系统需要的版本号是每个offset对应写数据的最新的版本号。如图2所示,对于存储的写数据Pa而言,其版本号87就是最新版本,则是当前数据库系统需要保留的。而快照需要的版本号是小于等于快照的最新版本号,如70,那么获取小于等于70的版本号,作为目标序列号,然后从中选择最大序列号,如写数据Pa的版本号62就是其中最大版本号,则需要保留。而其它版本号则可以删掉。
需要说明的是,还可以该方法100还包括:通过存储节点保留同一逻辑存储位置对应的最大数据标识对应的写数据;通过存储节点获取同一逻辑存储位置对应的数据标识,从对应的数据标识中获取小于或等于最大数据标识的目标数据标识,并保留目标数据标识中最大数据标识对应的写数据;通过存储节点从物理存储位置中删除未保留的其它数据标识对应的写数据。
此处就不再赘述了。
在进行读取数据的时候,可以通过以下方式进行数据的读取。
具体的,该方法100还包括:通过计算节点获取数据读取指令,通过存储节点根据读取指令携带的指定序列号,读取小于或等于指定序列号对应的写数据。
例如,根据前文所述,云服务器可以通过计算节点接收到用户触发的用于读取数据的读请求,或读指令。云服务器中的计算节点可以根据该请求或指令中携带的指定序列号,并通过调用对应的API,如读取接口的调用,使得存储节点会返回“小于等于用户指定LSN”的最新存储的写数据。如果计算节点希望读到最新的存储的写数据,其只需要计算节点通过最大版本号来读取存储的写数据就可以了。然后返回获取到存储的写数据至用户的电脑。
相应的,该方法100还包括:通过计算节点获取数据读取指令,根据读取指令携带的指定数据标识,读取小于或等于指定数据标识对应的写数据。就不再赘述了。
上述方式是可以针对稠密数据版本号。但是有可能数据版本号的密度会比较高,如果用户不希望如此高的数据密度,也可以压缩数据版本号的密度。从而来适用于稀疏数据版本号。压缩版本号的密度,可以通过以下“写入”和“打快照”两个操作进行完成。
具体的,该方法100还包括:通过计算节点确定创建快照后的后续待写入数据对应的数据标识,且该数据标识大于快照标识,以及后续待写入数据的数据标识相同。
例如,根据前文可知,在创建快照的时候,计算节点可以拿到最新的LSN来通过SetSnapshot设置快照方式来设定存储节点中快照的SnapLSN,同时可以记录该LSN+1为后续待写入数据的对应序列号WriteLSN。完成设定SnapLSN后,快照Snapshot就可以生成,同时快照精准时间就是该LSN的写入时间。
需要说明的是,还可以LSN+2、+3、+4等等,只要保证该WriteLSN大于最新的LSN即可。由此可以实现稀疏版本号密度。且后续的待写入数据的序列号是相同的。
相应的,该方法100还包括:通过计算节点确定创建快照后的后续待写入数据对应的序列号,且该序列号大于快照的序列号,以及后续待写入数据的序列号相同。就不再赘述了。
此外,该方法100还包括:通过计算节点基于后续待写入数据的数据标识,将后续待写入数据写入至对应缓存页,并确定对应缓存页的标识。
例如,根据前文所述,计算节点不再拿修改该缓存页Page待写入数据的LSN作为其序列号,即版本号,而是通过利用上述WriteLSN来写入Page,即作为该页的序列号,即版本号。对于日志条目而言,由于批量的日志条目其只对应一个版本号,所以可以不做修改,继续通过日志条目对应的LSN来作为待写入数据对应的版本号,也是对应存储的写数据对应的版本号。也可以拿上述WriteLSN作为其版本号。
整个过程可以看到,在设置WriteLSN之前,其在存储节点中版本号都小于最新的SnapLSN,而修改后,对应数据的版本号都大于SnapLSN,这样就能保证快照包含了快照之前的所有的数据状态,同时不包含之后的所有修改。对于数据读取和回收等其它操作,与前文所述稠密方式没有差别。就不再过多赘述了。
在云数据库的场景下,有时为了提高并发写入能力,该场景需要被提供多个计算节点(即云服务器需要提供多个上层数据库应用程序)一起写入数据的场景。在有多个计算节点一起写入数据的情况下,可以为每个计算节点分配一个物理的redo log,这样不同的节点在没有冲突的就可以按照自己的节奏写入redo log来完成用户修改,即如前文所述的方式。但是有可能不同的计算节点修改的数据是有冲突的,所以不同的计算节点之间需要协调写入。具体的协调冲突过程可以是计算节点通过一个逻辑的LSN来解决冲突。
具体的,该方法100还包括:针对多个计算节点进行数据写入的情况下,确定当前快照标识,且该当前快照标识大于历史快照标识;确定的当前快照标识对应写数据的最大数据标识。
例如,根据前文所述,在多计算节点同时写入数据时,快照实现只需要在调用SetSnapshot的时候用逻辑LSN来作为版本号就可以实现快照。该逻辑LSN需要大于之前历史快照的版本号,即已存在已生成快照的版本号。如已存在快照版本号最大为50,那么可以设置当前快照的版本号为51。且当前快照的版本号是对应的最新的写数据的版本号,其可以通过自身来划分出之前的存储的写数据以及之后的写数据。如,可以通各个redo log来确定对应的最大的LSN,由此将当前快照标识与最大的LSN进行关联。或者,也可以将最大LSN直接作为当前快照的版本号。其它各个操作与之前没有差别,就不再赘述了。
计算节点为了保障事务修改的ACID(是指数据库管理系统在写入或更新数据的过程中,为保证事务(transaction)是正确可靠的,所必须具备的四个特性:原子性(atomicity,或称不可分割性)、一致性(consistency)、隔离性(isolation,又称独立性)、持久性(durability)),都会通过自己的事务处理机制来解决一致性的问题,但通过复杂的分布式存储系统来实现一致性的快照其实是不必要的。存储系统可以利用数据库的并发控制机制来解决这些一致性问题。
还需要说明的是,本申请实施例可以通过API来实现诸如数据的写入、读取等。如,向存储系统(存储节点)写入数据、从存储系统中读取数据、针对offset进行数据写入、针对offset进行数据读取、创建快照、保留对应版本号或数据标识的写数据等。前文中涉及到的均可以通过调用对应API来实现。
除此之外,还可以通过计算节点以及操作存储节点,此时只写上述redo日志不写Page,存储节点会根据计算节点写入的redo日志生成真正的Page。虽然计算节点并不会写具体的Page,但是当计算节点需要一个Page时,它却可以直接从存储节点读取相应版本的Page。然而这种情况并没有一个传统意义上的分布式存储系统,而是计算节点和存储节点一起组成了一个完整的分布式数据库。其没有存储的快照,但是有数据库层面的时间点快照(POINT IN TIME SNAPSHOT),该快照包含当前数据库系统的物理页以及没有应用到物理页的Log,控制链路就可以通过这个数据库系统的快照来完成备份。
然而,由于其中存储节点和计算节点一起组成了一个完整的数据库,单独的存储节点没有办法再提供完整的存储功能。另外该数据库系统的许多逻辑会在存储节点里完成,所以存储节点的逻辑会更加复杂。其更多是从数据库系统的存储引擎出发实现一个计算节点层面的快照,可以做到不阻塞数据库系统的修改,同时也是一套机制解决分布式快照的一致性问题。但是如果把计算节点的逻辑嵌入到存储节点中,会导致存储节点逻辑复杂。同时由于计算节点和存储节点一起组成了完整的数据库逻辑,两个组件耦合厉害,比较难以独立发展。
此外,在该情况下存储节点不再有完整的存储API,对于通过基于标准读写API的操作存储的外围工具会不在适用,需要重新适配。对于分布式存储系统,为了提供一个应用一致的分布式快照,它往往需要在IO路径上添加新的机制来保障快照记录的状态对上层数据库应用即计算节点而言是一致的,如前文所述,由于涉及到分布式存储系统,往往实现起来比较复杂。但本申请实施例还是划分了明显的存储节点和计算节点,使得两者可以容易独立演化,另外存储节点可以提供完整的存储逻辑,不必如前文所述所有修改必须通过计算节点的日志来完成。
在数据库服务的场景下,其存储的快照实现可以结合数据库系统的服务一起实现,这样会大大简化快照的实现,同时也可能为数据库系统提供更多的价值。本申请实施例利用数据库系统的日志序列为IO打标,即请求打标,如写请求打标,写IO打标。避免了实现快照的分布式协同,同时由于每个数据块上带上了数据库系统的版本的信息,为后续数据库系统利用历史版本数据进行回溯查询带来了机会。该实现方式是面向数据库系统设计存储系统的核心。且本申请实施例中数据库系统的层面的修改是具有原子性的,包含在快照中。不会存在某一个事务在正常运行中是成功的,但是在快照中却是失败的。此外,存储节点的逻辑和计算节点的逻辑还是有一个清晰的界面,两者耦合比较少,可以独立发展。
图3为本申请一示例性实施例提供的一种快照的创建系统的结构示意图。如图3所示,该系统300可以包括:第一设备301以及第二设备302。
其中,第一设备301可以是有一定计算能力的设备,可以实现向第二设备302发送数据的功能,也可以接收第二设备302发送的数据。第一设备301的基本结构可以包括:至少一个处理器。处理器的数量可以取决于具有一定计算能力装置的配置和类型。具有一定计算能力装置也可以包括存储器,该存储器可以为易失性的,例如RAM,也可以为非易失性的,例如只读存储器(Read-Only Memory,ROM)、闪存等,或者也可以同时包括两种类型。存储器内通常存储有操作系统(Operating System,OS)、一个或多个应用程序,也可以存储有程序数据等。除了处理单元和存储器之外,具有一定计算能力装置还包括一些基本配置,例如网卡芯片、IO总线、显示组件以及一些外围设备等。可选地,一些外围设备可以包括,例如键盘、输入笔等。其它外围设备在本领域中是众所周知的,在此不做赘述。可选地,第一设备301可以为智能终端,例如,手机、台式电脑、笔记本、平板电脑等。
第二设备302是指可以在网络虚拟环境中提供计算处理服务的设备,可以是指利用网络进行快照创建的设备。在物理实现上,第二设备302可以是任何能够提供计算服务,响应服务请求,并进行信息获取的设备,例如可以是云服务器、云主机、虚拟中心、常规服务器等等,其上构架有数据库。第二设备302的构成主要包括处理器、硬盘、内存、系统总线等,和通用的计算机架构类似。
具体的,第二设备302,通过计算节点向存储节点下发写请求,写请求携带写数据以及写数据的数据标识,数据标识随着时序增大;通过存储节点根据写数据的数据标识,有序存储写数据;在创建快照的情况下,通过计算节点获取对应写数据的最新数据标识,并将最新数据标识作为快照标识发送至存储节点,通过存储节点存储所述快照标识;通过存储节点保留数据标识小于或等于快照标识对应的写数据,作为快照对应的数据,以使在读取快照的情况下,读取快照对应的数据。
第一设备301,可以发送快照创建指令至第二设备302。
此外,第二设备302,通过存储节点获取小于或等于快照标识的目标数据标识,并保留目标数据标识中最大数据标识对应的写数据;删除目标数据标识中其它标数据识对应的写数据。
具体的,第二设备302,通过存储节点获取多个快照对应的多个快照标识,根据多个快照标识,删除目标数据标识中部分其它数据标识对应的写数据。
此外,第二设备302,通过计算节点获取读取快照的指令,通过存储节点根据读取快照的快照标识,获取与快照标识对应的写数据。
此外,第二设备302,通过计算节点获取待写入数据,以使对待写入数据写入至对应缓存页中;通过计算节点生成并存储待写入数据的写入操作的记录信息,每个记录信息对应有序列号,序列号随着时序增大;在创建快照的情况下,从记录信息中获取最后序列号,作为最新数据标识。
此外,第二设备302,通过计算节点将待写入数据写入对应缓存页中,以使对应缓存页进行存储,根据待写入数据在记录信息中的序列号,确定对应缓存页的序列号,以使对应写数据均具有对应的序列号;对于同一批量对应的记录信息通过选择相同的序列号作为对应的数据标识。
此外,第二设备302,通过计算节点获取数据读取指令,根据读取指令携带的指定序列号,通过存储节点读取小于或等于指定序列号对应的写数据。
此外,第二设备302,针对同一逻辑存储位置的不同序列号对应的写数据,通过存储节点根据不同物理存储位置存储对应的写数据;通过存储节点保留同一逻辑存储位置对应的最大序列号对应的写数据;通过存储节点获取同一逻辑存储位置对应的序列号,从对应的序列中获取小于或等于最后序列号的目标序列号,并保留目标序列号中最大序列号对应的写数据;通过存储节点从物理存储位置中删除未保留的其它序列号对应的写数据。
此外,第二设备302,通过计算节点确定创建快照后的后续待写入数据对应的数据标识,且该数据标识大于快照标识,以及后续待写入数据的数据标识相同。
此外,第二设备302,通过计算节点基于后续待写入数据的数据标识,将后续待写入数据写入至对应缓存页,并确定对应缓存页的标识。
此外,第二设备302,针对多个计算节点进行数据写入的情况下,通过计算节点确定当前快照标识,且该当前快照标识大于历史快照标识;确定的当前快照标识对应写数据的最大数据标识。
未能详尽的内容请参考前文所述,就不再赘述了。
在创建快照的场景中,用户可以通过第一设备301,如电脑通过本地的数据库应用程序,或者直接通过API(Application Programming Interface,应用程序接口)接口,来发送读写请求或者创建快照指令。如SQL(结构化查询语言,Structured Query Language)读写请求或者创建快照指令。如可以发送写请求,然后计算节点可以根据写请求中的待写入数据确定对应的数据标识,如数据版本号。然后通过下发写请求至存储节点,存储节点根据该请求中对应的写数据以及对应的数据版本号,进行数据的存储。
相似的,用户可以通过第一设备301,如电脑发送创建快照指令,即执行步骤311:发送创建快照请求,至第二设备302。如云服务器。在此处可以是云服务器接收到该快照创建指令后,具体的可以是数据库中的控制节点接收到该指令,然后通过控制节点触发计算节点去创建快照,或者接收控制节点发送的该指令。然后,计算节点根据该指令去获取写数据中的最新序列号,如计算节点可以从重做日志2021拿到最大的序列号,作为标识,或者说作为创建的快照的序列号或版本号。
云服务器中的计算节点在确定了快照的版本号后,将该版本号发送至存储节点,使得存储节点对该版本号进行存储。然后保留数据版本号小于或等于该版本号对应的写数据。以进行快照的生成。同时快照的精准时间是该版本号的写入时间。
在创建完快照后,云服务器还可以向用户电脑返回创建成功的结果。即执行步骤312:发送创建成功的结果,至用户的电脑。
此外,云服务器接收用户通过电脑发送的读写请求。如对应的SQL请求。云服务器的数据库中的存储引擎可以接收到发送的写请求。存储引擎可以获取到请求中的待写入数据。然后可以将该待写入数据对应的写入操作进行记录,记录在重做日志(redo log)中。该重做日志存储至存储系统中。在日志中是以日志条目进行记录的。每条日志条目具有对应的序列号LSN(Log Sequence Number),该序列号与日志条目可以是一一对应的关系。对于同一批量中的日志条目而言,可以是通过共享一个序列号作为这些日志条目的版本号。即可以是将批量的日志条目对应的序列号中的最大值作为该批量的日志条目的版本号。如,批量的日志条目对应的序列号可以是50-100,那么最终该批量的日志条目对应的版本号则为100。
可以在写入日志的同时,将待写入数据写入至缓存页中。也可以先执行写入日志,然后再写入至缓存页中。其中,在缓存池可以存在干净页,即该页中存储的数据已经被存储到存储系统中进行了数据持久化。而对于上述缓存页其属于脏页,即还未将其中的数据存储至存储系统中进行了数据持久化。但之后该脏页也需要进行存储至存储系统中进行了数据持久化。由此,该缓存页的标识可以为该待写入数据在对应日志条目中对应序列号,如87,其写入到存储系统中的写数据版本号也是87。对于同一批量对应的记录信息通过选择相同的序列号作为对应的标识,该同一批量的记录信息可以属于同一个请求。就不再赘述了。
此处未详细记载的内容可以参考前文所述的内容,就不再赘述。
在上述本实施例中,第一设备301、第二设备302进行网络连接。若第一设备301、第二设备302是通信连接,该移动网络的网络制式可以为2G(GSM)、2.5G(GPRS)、3G(WCDMA、TD-SCDMA、CDMA2000、UTMS)、4G(LTE)、4G+(LTE+)、WiMax、5G等中的任意一种。
图4为本申请一示例性实施例提供的一种快照的创建装置的结构框架示意图。该装置400可以应用于计算设备,如云服务器。该装置400包括:发送模块401、存储模块402、创建模块403以及保留模块404;以下针对各个模块的功能进行详细的阐述:
发送模块401,用于通过计算节点向存储节点下发写请求。
其中,写请求携带写数据以及写数据的数据标识,数据标识随着时序增大。
存储模块402,用于通过存储节点根据写数据的数据标识,有序存储写数据。
创建模块403,用于在创建快照的情况下,通过计算节点获取对应写数据的最新数据标识,并将最新数据标识作为快照标识发送至存储节点,通过存储节点存储快照标识。
保留模块404,用于通过存储节点保留数据标识小于或等于快照标识对应的写数据,作为快照对应的数据,以使在读取快照的情况下,读取快照对应的数据.
此外,保留模块404,用于通过存储节点获取小于或等于快照标识的目标数据标识,并保留目标数据标识中最大数据标识对应的写数据;该装置400还包括:删除模块,用于删除目标数据标识中其它数据标识对应的写数据。
具体的,删除模块,用于通过存储节点获取多个快照对应的多个快照标识,通过存储节点根据多个快照标识,删除目标数据标识中部分其它数据标识对应的写数据。
此外,该装置400还包括:读取模块,用于通过计算节点获取读取快照的指令,根据读取快照的快照标识,获取与快照标识对应的写数据。
此外,存储模块402,用于通过计算节点获取待写入数据,以使对待写入数据写入至对应缓存页中;该装置400还包括:生成模块,用于通过计算节点生成并存储待写入数据的写入操作的记录信息,每个记录信息对应有序列号,所述序列号随着时序增大;其中,发送模块401,用于在创建快照的情况下,从记录信息中获取最后序列号,作为最新数据标识。
此外,存储模块402,用于通过计算节点将待写入数据写入对应缓存页中,以使对应缓存页进行存储,根据待写入数据在记录信息中的序列号,确定对应缓存页的序列号,以使对应写数据均具有对应的序列号;该装置400还包括:选择模块,用于对于同一批量对应的记录信息通过选择相同的序列号作为对应的数据标识。
此外,读取模块,还用于通过计算节点获取数据读取指令,根据读取指令携带的指定序列号,通过存储节点读取小于或等于指定序列号对应的写数据。
此外,存储模块402,用于针对同一逻辑存储位置的不同序列号对应的写数据,通过存储节点根据不同物理存储位置存储对应的写数据;保留模块404,用于通过存储节点保留同一逻辑存储位置对应的最大序列号对应的写数据;保留模块404,用于通过存储节点获取同一逻辑存储位置对应的序列号,从对应的序列中获取小于或等于最后序列号的目标序列号,并保留目标序列号中最大序列号对应的写数据;删除模块,用于通过存储节点从物理存储位置中删除未保留的其它序列号对应的写数据。
此外,发送模块401,还用于通过计算节点确定创建快照后的后续待写入数据对应的数据标识,且该数据标识大于快照标识,以及后续待写入数据的数据标识相同。
此外,发送模块401,还用于通过计算节点基于后续待写入数据的数据标识,将后续待写入数据写入至对应缓存页,并确定对应缓存页的标识。
此外,发送模块401,还用于针对多个计算节点进行数据写入的情况下,通过计算节点确定当前快照标识,且该标识大于历史快照标识;确定的当前快照标识对应写数据的最大数据标识。
本装置400中未能详尽的内容请参考前文所述,就不再赘述。
以上描述了图4所示的装置400的内部功能和结构,在一个可能的设计中,图4所示的装置400的结构可实现为计算设备,如,服务器。如图5所示,该设备500可以包括:存储器501、处理器502;
存储器501,用于存储计算机程序。
处理器502,用于执行计算机程序,以用于:通过计算节点向存储节点下发写请求,写请求携带写数据以及写数据的数据标识,数据标识随着时序增大;通过存储节点根据写数据的数据标识,有序存储写数据;在创建快照的情况下,通过计算节点获取对应写数据的最新数据标识,并将最新数据标识作为快照标识发送至存储节点,通过存储节点存储快照标识;通过存储节点保留数据标识小于或等于快照标识对应的写数据,作为快照对应的数据,以使在读取快照的情况下,读取快照对应的数据。
此外,处理器502,还用于通过存储节点获取小于或等于快照标识的目标数据标识,并保留目标数据标识中最大数据标识对应的写数据;删除目标数据标识中其它数据标识对应的写数据。
具体的,处理器502,具体用于:通过存储节点获取多个快照对应的多个快照标识,根据多个快照标识,删除目标数据标识中部分其它数据标识对应的写数据。
此外,处理器502,还用于通过计算节点获取读取快照的指令,通过存储节点根据读取快照的快照标识,获取与快照标识对应的写数据。
此外,处理器502,还用于通过计算节点获取待写入数据,以使对待写入数据写入至对应缓存页中;通过计算节点生成并存储待写入数据的写入操作的记录信息,每个记录信息对应有序列号,序列号随着时序增大;具体的,处理器502,具体用于:在创建快照的情况下,从记录信息中获取最后序列号,作为最新数据标识。
此外,处理器502,还用于通过计算节点将待写入数据写入对应缓存页中,以使对应缓存页进行存储,根据待写入数据在记录信息中的序列号,确定对应缓存页的序列号,以使对应写数据均具有对应的序列号;对于同一批量对应的记录信息通过选择相同的序列号作为对应的数据标识。
此外,处理器502,还用于通过计算节点获取数据读取指令,根据读取指令携带的指定序列号,通过存储节点读取小于或等于指定序列号对应的写数据。
此外,处理器502,还用于针对同一逻辑存储位置的不同序列号对应的写数据,通过存储节点根据不同物理存储位置存储对应的写数据;通过存储节点保留同一逻辑存储位置对应的最大序列号对应的写数据;通过存储节点获取同一逻辑存储位置对应的序列号,从对应的序列中获取小于或等于最后序列号的目标序列号,并保留目标序列号中最大序列号对应的写数据;通过存储节点从物理存储位置中删除未保留的其它序列号对应的写数据。
此外,处理器502,还用于通过计算节点确定创建快照后的后续待写入数据对应的数据标识,且该数据标识大于快照标识,以及后续待写入数据的数据标识相同。
此外,处理器502,还用于通过计算节点基于后续待写入数据的数据标识,将后续待写入数据写入至对应缓存页,并确定对应缓存页的标识。
此外,处理器502,还用于针对多个计算节点进行数据写入的情况下,通过计算节点确定当前快照标识,且该当前快照标识大于历史快照标识;确定的当前快照标识对应写数据的最大数据标识。
本发明实施例提供了一种计算机存储介质,计算机程序被一个或多个处理器执行时,致使一个或多个处理器实现图1-图3方法实施例中一种快照的创建方法的步骤。就不再过多赘述了。
本发明实施例提供了一种计算机程序产品,包括计算机程序或指令,其中,当计算机程序被处理器执行时,致使处理器实现图1-图3方法实施例中一种快照的创建方法的步骤。
另外,在上述实施例及附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如101、102、103等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助加必需的通用硬件平台的方式来实现,当然也可以通过硬件和软件结合的方式来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以计算机产品的形式体现出来,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程多媒体数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程多媒体数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程多媒体数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程多媒体数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (14)
1.一种快照的创建方法,包括:
通过计算节点向存储节点下发写请求,所述写请求携带写数据以及写数据的数据标识,所述数据标识随着时序增大;
通过存储节点根据写数据的数据标识,有序存储写数据;
在创建快照的情况下,通过计算节点获取对应写数据的最新数据标识,并将所述最新数据标识作为快照标识发送至存储节点,通过存储节点存储所述快照标识;
通过存储节点保留数据标识小于或等于快照标识对应的写数据,作为快照对应的数据,以使在读取快照的情况下,读取快照对应的数据。
2.根据权利要求1所述的方法,所述方法还包括:
通过存储节点获取小于或等于所述快照标识的目标数据标识,并保留所述目标数据标识中最大数据标识对应的写数据;
删除所述目标数据标识中其它数据标识对应的写数据。
3.根据权利要求2所述的方法,所述删除所述目标数据标识中其它数据标识对应的写数据,包括:
通过存储节点获取多个快照对应的多个快照标识,根据所述多个快照标识,删除所述目标数据标识中部分其它数据标识对应的写数据。
4.根据权利要求1所述的方法,所述方法还包括:
通过计算节点获取读取快照的指令,通过存储节点根据读取快照的快照标识,获取与快照标识对应的写数据。
5.根据权利要求1所述的方法,所述方法还包括:
通过计算节点获取待写入数据,以使对待写入数据写入至对应缓存页中;
通过计算节点生成并存储待写入数据的写入操作的记录信息,每个记录信息对应有序列号,所述序列号随着时序增大;
其中,所述通过计算节点获取对应写数据的最新数据标识,包括:
在创建快照的情况下,从记录信息中获取最后序列号,作为最新数据标识。
6.根据权利要求5所述的方法,所述方法还包括:
通过计算节点将待写入数据写入对应缓存页中,以使对应缓存页进行存储,根据待写入数据在记录信息中的序列号,确定对应缓存页的序列号,以使对应写数据均具有对应的序列号;
对于同一批量对应的记录信息通过选择相同的序列号作为对应的数据标识。
7.根据权利要求5或6所述的方法,所述方法还包括:
通过计算节点获取数据读取指令,根据读取指令携带的指定序列号,通过存储节点读取小于或等于所述指定序列号对应的写数据。
8.根据权利要求5或6所述的方法,所述方法还包括:
针对同一逻辑存储位置的不同序列号对应的写数据,通过存储节点根据不同物理存储位置存储对应的写数据;
通过存储节点保留同一逻辑存储位置对应的最大序列号对应的写数据;
通过存储节点获取同一逻辑存储位置对应的序列号,从对应的序列中获取小于或等于最后序列号的目标序列号,并保留所述目标序列号中最大序列号对应的写数据;
通过存储节点从物理存储位置中删除未保留的其它序列号对应的写数据。
9.根据权利要求1所述的方法,所述方法还包括:
通过计算节点确定创建快照后的后续待写入数据对应的数据标识,且该数据标识大于快照标识,以及后续待写入数据的数据标识相同。
10.根据权利要求9所述的方法,所述方法还包括:
通过计算节点基于后续待写入数据的数据标识,将后续待写入数据写入至对应缓存页,并确定对应缓存页的标识。
11.根据权利要求1所述的方法,所述方法还包括:
针对多个计算节点进行数据写入的情况下,通过计算节点确定当前快照标识,且该当前快照标识大于历史快照标识;
确定的当前快照标识对应写数据的最大数据标识。
12.一种计算设备,包括:存储器、处理器;
所述存储器,用于存储计算机程序;
所述处理器,执行所述计算机程序,以用于:
通过计算节点向存储节点下发写请求,所述写请求携带写数据以及写数据的数据标识,所述数据标识随着时序增大;
通过存储节点根据写数据的数据标识,有序存储写数据;
在创建快照的情况下,通过计算节点获取对应写数据的最新数据标识,并将所述最新数据标识作为快照标识发送至存储节点,通过存储节点存储所述快照标识;
通过存储节点保留数据标识小于或等于快照标识对应的写数据,作为快照对应的数据,以使在读取快照的情况下,读取快照对应的数据。
13.一种存储有计算机程序的计算机可读存储介质,计算机程序被一个或多个处理器执行时,致使所述一个或多个处理器实现权利要求1-11任一项所述方法中的步骤。
14.一种计算机程序产品,包括计算机程序或指令,其中,当计算机程序被处理器执行时,致使处理器实现权利要求1-11任一项所述方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111627093.7A CN114328018A (zh) | 2021-12-28 | 2021-12-28 | 快照的创建方法、计算设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111627093.7A CN114328018A (zh) | 2021-12-28 | 2021-12-28 | 快照的创建方法、计算设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114328018A true CN114328018A (zh) | 2022-04-12 |
Family
ID=81015655
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111627093.7A Pending CN114328018A (zh) | 2021-12-28 | 2021-12-28 | 快照的创建方法、计算设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114328018A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116501264A (zh) * | 2023-06-25 | 2023-07-28 | 苏州浪潮智能科技有限公司 | 一种数据存储方法、装置、系统、设备及可读存储介质 |
-
2021
- 2021-12-28 CN CN202111627093.7A patent/CN114328018A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116501264A (zh) * | 2023-06-25 | 2023-07-28 | 苏州浪潮智能科技有限公司 | 一种数据存储方法、装置、系统、设备及可读存储介质 |
CN116501264B (zh) * | 2023-06-25 | 2023-09-15 | 苏州浪潮智能科技有限公司 | 一种数据存储方法、装置、系统、设备及可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8250033B1 (en) | Replication of a data set using differential snapshots | |
CN108460045B (zh) | 一种快照的处理方法及分布式块存储系统 | |
US20060047926A1 (en) | Managing multiple snapshot copies of data | |
CN113296696A (zh) | 一种数据的访问方法、计算设备及存储介质 | |
CN110018989B (zh) | 一种快照比对的方法和装置 | |
CN109598156B (zh) | 一种写时重定向引擎快照流方法 | |
CN107665219B (zh) | 一种日志管理方法及装置 | |
CN110597663A (zh) | 一种事务处理方法及装置 | |
KR101584760B1 (ko) | 순서 모드 저널링 파일 시스템을 위한 블록 그룹 단위 저널링 방법 및 장치 | |
CN106357703B (zh) | 集群切换方法与设备 | |
CN106104515A (zh) | 利用非易失性存储器的文件系统设计和故障恢复方法 | |
CN111506253A (zh) | 一种分布式存储系统及其存储方法 | |
CN115408411A (zh) | 数据写入方法、装置、电子设备及存储介质 | |
CN114741449A (zh) | 一种基于分布式数据库的对象存储方法及装置 | |
CN113434470B (zh) | 数据分布方法、装置及电子设备 | |
CN114328018A (zh) | 快照的创建方法、计算设备及存储介质 | |
CN111158858A (zh) | 一种虚拟机的克隆方法和装置,及计算机可读存储介质 | |
CN111858159A (zh) | 一种基于链式克隆特性实现的备份方法与系统 | |
US10452496B2 (en) | System and method for managing storage transaction requests | |
US9235349B2 (en) | Data duplication system, data duplication method, and program thereof | |
CN115658391A (zh) | 基于QianBase MPP数据库的WAL机制的备份恢复方法 | |
CN111399774B (zh) | 分布式存储系统下基于快照的数据处理方法和装置 | |
CN115391337A (zh) | 数据库分区的方法、装置、存储介质及电子设备 | |
CN115185458A (zh) | 一种数据写入方法、装置、存储介质和计算机设备 | |
CN114780043A (zh) | 基于多层缓存的数据处理方法及装置、电子设备 |
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 |