CN116166614A - 一种日志归档的方法、装置、存储介质及电子设备 - Google Patents
一种日志归档的方法、装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN116166614A CN116166614A CN202310095814.7A CN202310095814A CN116166614A CN 116166614 A CN116166614 A CN 116166614A CN 202310095814 A CN202310095814 A CN 202310095814A CN 116166614 A CN116166614 A CN 116166614A
- Authority
- CN
- China
- Prior art keywords
- file
- length
- segmented
- log
- written
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/113—Details of archiving
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1469—Backup restoration techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/178—Techniques for file synchronisation in file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本说明书公开了一种日志归档的方法、装置、存储介质及电子设备,所述方法包括:在用于存储归档文件的存储空间中,确定已经存储到存储空间中的归档文件,从构成归档文件的各分片件中,确定待写入分片文件,再确定需要进行日志归档的日志,并判断待写入分片文件是否小于预设的阈值,当待写入分片文件小于阈值时,将日志写入到待写入分片文件中,当待写入分片文件不小于阈值时,在归档文件中创建新分片文件,并将日志写入到新分片文件中。通过这种将日志写入到分片文件中,再由各分片文件构成归档文件的方法进行日志归档,减少了日志归档的成本,避免了在存储空间中出现大量小文件的问题。
Description
技术领域
本说明书涉及计算机技术领域,尤其涉及一种日志归档的方法、装置、存储介质及电子设备。
背景技术
随着科技的发展,数据库得到了广泛的应用。其中,数据库的日志归档是数据库最重要的容灾手段之一,日志归档是通过实时或者周期性的将数据库的日志归档到本地或者远程存储介质,以达到对数据库的保护。
在分布式数据库中,每个分区是独立进行日志归档的,数据库的日志归档进度是由各分区的日志归档进度进行决定,比如当前时间为T1,在经过一段时间后,时间为T2,在T2时对各分区在T1到T2这段时间内产生的日志进行归档,但是由于分区1在这段时间内产生的日志非常少,对分区1的日志进行归档的成本比较高,故在T2时不对分区1的日志进行归档,因此,当前数据库的日志归档进度由在T1时的各分区的日志归档进度决定,也就是将在T1时各分区的日志归档进度作为当前数据库的日志归档进度,其中,分区是通过对数据集进行水平拆分,将拆分后的不同数据子集存放到不同的节点中,每个节点中存储着一个分区,而且分区可以分为热分区和冷分区两种,热分区是指包含经常访问和操作的热点数据的分区,而冷分区是指包含不经常访问和操作的数据的分区,因而冷分区产生的日志是非常少的。
因此,如何对分布式数据库的日志进行归档是一个亟待解决的问题。
发明内容
本说明书提供一种日志归档的方法、装置、存储介质及电子设备,以部分的解决现有技术存在的上述问题。
本说明书采用下述技术方案:
本说明书提供一种日志归档的方法,所述方法应用于分布式数据库中的节点,所述方法包括:
在用于存储归档文件的存储空间中,确定已经存储到所述存储空间中的归档文件;
从构成所述归档文件的各分片文件中,确定待写入分片文件;
确定需要进行日志归档的日志,并判断所述待写入分片文件是否小于预设的阈值;
若是,将所述日志写入到所述待写入分片文件中;
否则,在所述归档文件中创建新分片文件,并将所述日志写入到所述新分片文件中。
可选地,从构成所述归档文件的各分片文件中,确定待写入分片文件,具体包括:
根据构成所述归档文件的各分片文件对应的标识,确定分片文件序列;
根据所述分片文件序列,从各分片文件中,将位于所述分片文件序列末尾的分片文件作为待写入分片文件。
可选地,将所述日志写入到所述待写入分片文件中,具体包括:
读取所述待写入分片文件中的内容;
将所述日志和读取的内容合并,作为待写入的内容;
将所述待写入的内容写入到所述待写入分片文件中。
可选地,所述方法还包括:
当接收到所述归档文件的读取指令时,根据所述分片文件序列和所述读取指令,从所述归档文件中确定读取文件,并进行读取操作,其中,所述读取指令至少携带初始位置和长度。
可选地,根据所述分片文件序列和所述读取指令,从所述归档文件中确定读取文件,具体包括:
根据所述分片文件序列和所述读取指令中携带的初始位置,确定所述初始位置所在的分片文件以及偏移量,并将所述初始位置所在的分片文件作为起始文件;
确定从所述起始文件的所述偏移量位置开始到所述起始文件末尾的长度,作为读取长度;所述读取指令中携带的长度作为第一长度;
判断所述读取长度是否不小于所述第一长度;
若是,将从所述起始文件的所述偏移量位置开始经过所述第一长度的文件作为读取文件;
否则,将所述起始文件的下一个分片文件重新确定为起始文件,将重新确定为起始文件的文件长度与所述读取长度的和重新作为读取长度,继续判断读取长度是否不小于所述第一长度,直到读取长度不小于所述第一长度时,在起始文件中确定达到所述第一长度的位置,作为目标位置,将从所述初始位置所在的分片文件的所述偏移量位置到所述目标位置之间的文件作为读取文件。
可选地,所述方法还包括:
确定日志归档进度;
将所述日志归档进度同步给所述节点对应的备份节点,以使所述节点发生故障时,所述备份节点根据接收到的日志归档进度,继续进行日志归档。
可选地,已经存储到所述存储空间中的归档文件是所述节点创建的;
在所述归档文件中创建新分片文件,具体包括:
根据所述节点的标识,确定新分片文件的标识;
根据所述新分片文件的标识,在所述归档文件中创建所述新分片文件;
当所述节点发生故障时,所述备份节点根据接收到的日志归档进度,继续进行日志归档,具体包括:
所述备份节点在所述存储空间中创建新归档文件;
根据所述备份节点的标识,确定新分片文件的标识,并在所述新归档文件中创建所述标识对应的新分片文件。
本说明书提供了一种日志归档的装置,所述装置应用于分布式数据库中的节点,所述装置包括:
第一确定模块,用于在用于存储归档文件的存储空间中,确定已经存储到所述存储空间中的归档文件;
第二确定模块,用于从构成所述归档文件的各分片文件中,确定待写入分片文件;
写入模块,用于确定需要进行日志归档的日志,并判断所述待写入分片文件是否小于预设的阈值,若是,将所述日志写入到所述待写入分片文件中,否则,在所述归档文件中创建新分片文件,并将所述日志写入到所述新分片文件中。
可选地,所述第二确定模块具体用于,根据构成所述归档文件的各分片文件对应的标识,确定分片文件序列;根据所述分片文件序列,从各分片文件中,将位于所述分片文件序列末尾的分片文件作为待写入分片文件。
可选地,所述写入模块具体用于,读取所述待写入分片文件中的内容;将所述日志和读取的内容合并,作为待写入的内容;将所述待写入的内容写入到所述待写入分片文件中。
可选地,所述装置还包括:
读取模块,用于当接收到所述归档文件的读取指令时,根据所述分片文件序列和所述读取指令,从所述归档文件中确定读取文件,并进行读取操作,其中,所述读取指令至少携带初始位置和长度。
可选地,所述读取模块具体用于,根据所述分片文件序列和所述读取指令中携带的初始位置,确定所述初始位置所在的分片文件以及偏移量,并将所述初始位置所在的分片文件作为起始文件;确定从所述起始文件的所述偏移量位置开始到所述起始文件末尾的长度,作为读取长度;所述读取指令中携带的长度作为第一长度;判断所述读取长度是否不小于所述第一长度;若是,将从所述起始文件的所述偏移量位置开始经过所述第一长度的文件作为读取文件;否则,将所述起始文件的下一个分片文件重新确定为起始文件,将重新确定为起始文件的文件长度与所述读取长度的和重新作为读取长度,继续判断读取长度是否不小于所述第一长度,直到读取长度不小于所述第一长度时,在起始文件中确定达到所述第一长度的位置,作为目标位置,将从所述初始位置所在的分片文件的所述偏移量位置到所述目标位置之间的文件作为读取文件。
可选地,所述装置还包括:
同步模块,用于确定日志归档进度;将所述日志归档进度同步给所述节点对应的备份节点,以使所述节点发生故障时,所述备份节点根据接收到的日志归档进度,继续进行日志归档。
可选地,已经存储到所述存储空间中的归档文件是所述节点创建的;
所述写入模块具体用于,根据所述节点的标识,确定新分片文件的标识;根据所述新分片文件的标识,在所述归档文件中创建所述新分片文件;
所述同步模块具体用于,所述备份节点在所述存储空间中创建新归档文件;根据所述备份节点的标识,确定新分片文件的标识,并在所述新归档文件中创建所述标识对应的新分片文件。
本说明书提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述日志归档的方法。
本说明书提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述日志归档的方法。
本说明书采用的上述至少一个技术方案能够达到以下有益效果:
本说明书提供的日志归档的方法中,在用于存储归档文件的存储空间中,确定已经存储到存储空间中的归档文件,从构成归档文件的各分片件中,确定待写入分片文件,再确定需要进行日志归档的日志,并判断待写入分片文件是否小于预设的阈值,当待写入分片文件小于阈值时,将日志写入到待写入分片文件中,当待写入分片文件不小于阈值时,在归档文件中创建新分片文件,并将日志写入到新分片文件中。
从上述方法中可以看出,本方法中从构成归档文件的各分片文件中确定待写入分片文件,再判断待写入分片文件是否小于预设的阈值,当小于阈值时,才将日志写入到待写入分片文件中,否则,在归档文件中创建新分片文件,将日志写入到新分片文件中,通过这种将日志写入到分片文件中,再由各分片文件构成归档文件的方法进行日志归档,减少了日志归档的成本,避免了在存储空间中出现大量小文件的问题。
附图说明
此处所说明的附图用来提供对本说明书的进一步理解,构成本说明书的一部分,本说明书的示意性实施例及其说明用于解释本说明书,并不构成对本说明书的不当限定。在附
图中:
图1为本说明书中提供的一种日志归档的方法的流程示意图;
图2为本说明书中提供的一种分布式数据库的节点示意图;
图3为本说明书中提供的一种归档文件的示意图;
图4为本说明书提供的一种日志归档的装置的示意图;
图5为本说明书提供的对应于图1的电子设备示意图。
具体实施方式
为使本说明书的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本说明书技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本说明书保护的范围。
本说明书的实施例提供了一种日志归档的方法、装置、存储介质及电子设备,以下结合附图,详细说明本说明书各实施例提供的技术方案。
图1为本说明书中提供的一种日志归档的方法的流程示意图,具体包括以下步骤:
S100:在用于存储归档文件的存储空间中,确定已经存储到所述存储空间中的归档文件。
在分布式数据库中的节点中,每个节点可以存储多个分区,但是每个节点只能存储一个主分区,可以存储多个副分区,其中,副分区是主分区的备份分区,例如,如图2所示,图2为本说明书中提供的一种分布式数据库的节点示意图,图2中有三个节点,分别是节点1~3,有三个主分区和三个副分区,分别是主分区A、主分区B、主分区C、副分区a、副分区b和副分区c,每个副分区是主分区的备份分区,比如副分区a是主分区A的备份分区,每个节点存储可以有多个分区,但是只能有一个主分区,比如节点1存储着主分区A、副分区b和副分区c。
在本说明书中,用于进行日志归档的设备在用于存储归档文件的存储空间中,确定已经存储到所述存储空间中的归档文件。其中,上述用于进行日志归档的设备可以是分布式数据库中的任何类型的节点,为了方便说明,下面以节点为执行主体进行说明。
存储空间是节点进行日志归档时,存储归档文件的存储空间。而在进行日志归档时,存储介质的种类有很多,比如网络文件系统(Network File System,简称NFS)、基于简单存储服务(Simple Storage Service,简称S3)协议的对象存储等。本说明书中对于归档文件的存储介质不做具体限定,为了方便说明,下面均以存储空间进行说明。
具体的,节点在进行日志归档时是针对主分区产生的日志进行日志归档,先在用于存储归档文件的存储空间中,确定已经存储到存储空间中的归档文件,也就是节点中的主分区对应的归档文件,继续沿用上例,假设节点1在针对其自身存储的主分区A进行日志归档,节点1在用于存储归档文件的存储空间中,确定已经存储到存储空间中的归档文件,也就是节点1中的主分区A对应的归档文件1。
但当节点是第一次对自身存储的主分区进行归档时,用于存储归档文件的存储空间中是没有主分区对应的归档文件的,节点可以直接在存储空间中创建归档文件,将针对主分区的日志写入到归档文件中。
S102:从构成所述归档文件的各分片文件中,确定待写入分片文件。
节点从构成归档文件的各分片文件中,确定待写入分片文件。具体的,根据构成所述归档文件的各分片文件对应的标识,确定分片文件序列。再根据分片文件序列,从各分片文件中,将位于分片文件序列末尾的分片文件作为待写入分片文件。继续沿用上例,假设目前归档文件1是由分片文件1和分片文件2构成的,其中,分片文件1对应的标识为file1/part_1,分片文件2对应的标识为file1/part_2,根据分片文件1和分片文件2分别对应的标识,确定分片文件序列1,也就是分片文件序列1为分片文件1,分片文件2,节点1再根据分片文件序列1,从各分片文件中(即分片文件1和分片文件2),将位于分片文件序列1末尾的分片文件作为待写入分片文件,也就是将分片文件2作为待写入分片文件。
S104:确定需要进行日志归档的日志,并判断所述待写入分片文件是否小于预设的阈值,若是,执行步骤S106,否则,执行步骤S108。
节点确定需要进行日志归档的日志,并判断待写入分片文件是否小于预设的阈值,若是,执行步骤S106,否则执行步骤S108。具体的,节点确定针对主分区需要进行日志归档的日志,再判断待写入分片文件是否小于预设的阈值,当小于阈值时,执行步骤S106,当不小于阈值时,执行步骤S108。继续沿用上例,假设预设的阈值为64K,分片文件1为64K,分片文件2为2K,节点1确定针对主分区A需要进行日志归档的日志1,判断待写入分片文件(即分片文件2)是否小于预设的阈值(即64K),当小于阈值时,执行步骤S106,当不小于阈值时,执行步骤S108,显然2K小于64K,执行步骤S106。
S106:将所述日志写入到所述待写入分片文件中。
当待写入分片文件小于预设的阈值时,节点将日志写入到待写入分片文件。具体的,当待写入分片文件小于预设的阈值时,节点先读取待写入分片文件中的内容,再将日志和读取的内容进行合并,作为待写入的内容,之后将待写入的内容写入到待写入分片文件中。由于将待写入的内容写入到待写入分片文件中,故待写入的内容覆盖了之前待写入分片文件中的内容。
继续沿用上例,假设日志1为2K,当待写入分片文件(即分片文件2)小于预设的阈值(即64K)时,节点1先读取分片文件2中的内容,再将日志1和读取的内容进行合并,作为待写入的内容,也就是将读取出的2K的内容与2K的日志进行合并,得到4K的待写入的内容,之后将4K的待写入的内容写入到分片文件2中,之前分片文件2中的2K的内容被4K的待写入的内容覆盖,此时,分片文件2为4K。
S108:在所述归档文件中创建新分片文件,并将所述日志写入到所述新分片文件中。
当待写入分片文件不小于预设的阈值时,节点在归档文件中创建新的分片文件,并将日志写入到新分片文件中。具体的,当待写入分片文件不小于预设的阈值时,节点在归档文件中创建新的分片文件,并将日志写入到新分片文件中,其中,新的分片文件为待写入分片文件的下一个分片文件,也就是在分片文件序列中,新的分片文件在待写入分片文件之后,作为各分片文件中新的末尾的分片文件。
继续沿用上例,假设分片文件2为64K,分片文件2不小于预设的阈值(即64K),节点1在归档文件1中创建新的分片文件,假设新的分片文件为分片文件3,将日志1写入到新的分片文件中,也就是将日志1写入到分片文件3中,此时,分片文件3为2K,并且分片文件3为分片文件2的下一个分片文件,分片文件序列1为分片文件1,分片文件2,分片文件3。
从上述方法中可以看出,本方法中节点在进行日志归档时,节点在用于存储归档文件的存储空间中,确定已经存储到存储空间中的归档文件,根据分片文件序列,从构成归档文件的各分片件中,确定待写入分片文件,再确定需要进行日志归档的日志,并判断待写入分片文件是否小于预设的阈值,若是,先读取待写入分片文件中的内容,再将日志和读取到的内容合并,将合并后的内容写入到待写入分片文件中,覆盖之前的待写入分片文件中内容,否则,在归档文件中创建新分片文件,并将日志写入到新分片文件中,通过这种将日志写入到分片文件中,再由各分片文件构成归档文件的方法进行日志归档,减少了日志归档的成本,避免了在存储空间中出现大量小文件的问题,使得存储空间的利用率提高。
在本说明书中当节点接收到归档文件的读取指令时,节点根据分片文件序列和读取指令,从归档文件中确定读取文件,并进行读取操作,其中,读取指令至少携带初始位置和长度,读取指令还可以携带归档文件的标识。
具体的,当接收到归档文件的读取指令,节点根据分片文件序列和读取指令中携带的初始位置,确定初始位置所在的分片文件以及偏移量,并将初始位置所在的分片文件作为起始文件,确定从起始文件的偏移量位置开始到起始文件末尾的长度,作为读取长度,读取指令中携带的长度作为第一长度,判断读取长度是否不小于第一长度,若是,将从起始文件的偏移量位置开始经过第一长度的文件作为读取文件,否则,将起始文件的下一个分片文件重新确定为起始文件,将重新确定为起始文件的文件长度与读取长度的和重新作为读取长度,继续判断读取长度是否不小于第一长度,直到读取长度不小于第一长度时,在起始文件中确定达到第一长度的位置,作为目标位置,将从初始位置所在的分片文件的偏移量位置到目标位置之间的文件作为读取文件。之后,节点对读取文件进行读取操作。
继续沿用上例,结合图3,图3为本说明书中提供的一种归档文件的示意图,图3所示的归档文件为由64K的分片文件1、64K的分片文件2和2K的分片文件3组成的归档文件1,假设节点1接收到的归档文件1的读取指令中携带的初始位置为80K,长度为50K,节点1根据分片文件序列1(即分片文件1,分片文件2,分片文件3)和读取指令中携带的初始位置(即80K),确定初始位置所在的分片文件以及偏移量,也就是由于分片文件1和分片文件2均为64K,而初始位置为80K,故初始位置所在的分片文件为分片文件2,并且偏移量为16K,将分片文件2作为起始文件,确定从分片文件2的偏移量(即16K)位置(即图3中80所在的位置)开始到分片文件2末尾的长度(即图3中80到128之间的长度),作为读取长度,也就是将48K作为读取长度,将读取指令中携带的长度作为第一长度,也就是将50K作为第一长度,判断读取长度是否不小于第一长度,若是,将从分片文件2的偏移量位置开始经过第一长度的文件作为读取文件,否则,将分片文件2的下一个分片文件重新确定为起始文件,将重新确定为起始文件的文件长度与读取长度的和重新作为读取长度,继续判断读取长度是否不小于第一长度,直到读取长度不小于第一长度时,在起始文件中确定达到第一长度的位置,作为目标位置,将从初始位置所在的分片文件的偏移量位置到目标位置之间的文件作为读取文件。显然,48K小于50K,将分片文件2的下一个分片文件重新确定为起始文件,也就是将分片文件3作为起始文件,将分片文件3的文件长度(即2K)和读取长度(即48K)的和重新作为读取长度(即图3中80到130之间的长度),也就是读取长度变为50K,再次判断读取长度是否不小于50K,由于读取长度为50K,故在起始文件(即分片文件3)中确定达到第一长度的位置,作为目标位置(即图3中130所在的位置),将从分片文件2的偏移量位置开始到目标位置之间的文件作为读取文件,也就是将分片文件2从偏移量16K开始长度为48K的文件和2K的分片文件3构成的文件作为读取文件,即图3中黑色方框标注的部分,之后,节点1对读取文件进行读取操作。
本说明书中当节点发生故障时,节点对应的备份节点需要继续进行日志归档,故节点可以确定日志归档进度,并将日志归档进度同步给备份节点,以使当节点发生故障时,备份节点根据接收到的日志归档进度,继续进行日志归档。其中,备份节点为存储主分区所对应的副分区的节点,在分布式数据库中备份节点可能有很多个,需要从其中选择一个备份节点作为继续进行日志归档的节点,在选择继续进行日志归档的节点时,可以随机从各备份节点中选取,也可以按照预设的规则选取,本说明书不做具体限定,只需能够选取出继续进行日志归档的节点。继续沿用上例,节点1确定日志归档进度,将日志归档进度同步给备份节点,也就是节点2和节点3,当节点1发生故障时,备份节点(即节点2和节点3中的一个节点)根据接收到的日志归档进度,继续进行日志归档。
本说明书中在节点发生故障,需要备份节点继续进行日志归档时,由于故障节点可能不知道备份节点接替其继续进行日志归档,故障节点还在继续进行日志归档,这就会导致备份节点进行日志归档时,写入的内容可能会被故障节点写入的内容覆盖,使得归档文件的准确性降低,比如备份节点先写入归档文件中的分片文件的内容为1,而故障节点后写入归档文件中的分片文件的内容为2,由于二者写入的是同一个分片文件,导致故障节点后写入的内容覆盖了之前备份节点写入的内容,降低了归档文件的准确性,故为了避免由于故障节点写入的内容覆盖备份节点写入的内容导致归档文件的准确性降低的问题,本说明书中的分片文件对应的标识可以根据节点的标识进行确定,比如由节点创建的分片文件对应的标识为file1/version_1/part_1,其中,file1表示归档文件1,version_1表示节点的标识为1,part_1表示分片文件1,而由备份节点创建的分片文件对应的标识为file1/version_2/part_1,其中,file1表示归档文件1,version_2表示节点的标识为2,part_1表示分片文件1。
基于此,在上述步骤S100中,已经存储到存储空间中的归档文件是节点(即故障节点)创建的。在上述步骤S108中,在归档文件中创建新分片文件时,节点根据自身的标识,确定新分片文件的标识,再根据新分片文件的标识,在归档文件中创建新分片文件。
但当节点发生故障,由备份节点根据接收到的日志归档进度,继续进行日志归档时,备份节点在存储空间中创建新归档文件,再根据备份节点的标识,确定新分片文件的标识,并在新归档文件中创建标识对应的新分片文件。
以上为本说明书的一个或多个实施例提供的日志归档的方法,基于同样的思路,本说明书还提供了相应的日志归档的装置,如图4所示。
图4为本说明书提供的一种日志归档的装置示意图,具体包括:
第一确定模块200,用于在用于存储归档文件的存储空间中,确定已经存储到所述存储空间中的归档文件;
第二确定模块202,用于从构成所述归档文件的各分片文件中,确定待写入分片文件;
写入模块204,用于确定需要进行日志归档的日志,并判断所述待写入分片文件是否小于预设的阈值,若是,将所述日志写入到所述待写入分片文件中,否则,在所述归档文件中创建新分片文件,并将所述日志写入到所述新分片文件中。
可选地,所述第二确定模块202具体用于,根据构成所述归档文件的各分片文件对应的标识,确定分片文件序列;根据所述分片文件序列,从各分片文件中,将位于所述分片文件序列末尾的分片文件作为待写入分片文件。
可选地,所述写入模块204具体用于,读取所述待写入分片文件中的内容;将所述日志和读取的内容合并,作为待写入的内容;将所述待写入的内容写入到所述待写入分片文件中。
可选地,所述装置还包括:
读取模块206,用于当接收到所述归档文件的读取指令时,根据所述分片文件序列和所述读取指令,从所述归档文件中确定读取文件,并进行读取操作,其中,所述读取指令至少携带初始位置和长度。
可选地,所述读取模块206具体用于,根据所述分片文件序列和所述读取指令中携带的初始位置,确定所述初始位置所在的分片文件以及偏移量,并将所述初始位置所在的分片文件作为起始文件;确定从所述起始文件的所述偏移量位置开始到所述起始文件末尾的长度,作为读取长度;所述读取指令中携带的长度作为第一长度;判断所述读取长度是否不小于所述第一长度;若是,将从所述起始文件的所述偏移量位置开始经过所述第一长度的文件作为读取文件;否则,将所述起始文件的下一个分片文件重新确定为起始文件,将重新确定为起始文件的文件长度与所述读取长度的和重新作为读取长度,继续判断读取长度是否不小于所述第一长度,直到读取长度不小于所述第一长度时,在起始文件中确定达到所述第一长度的位置,作为目标位置,将从所述初始位置所在的分片文件的所述偏移量位置到所述目标位置之间的文件作为读取文件。
可选地,所述装置还包括:
同步模块208,用于确定日志归档进度;将所述日志归档进度同步给所述节点对应的备份节点,以使所述节点发生故障时,所述备份节点根据接收到的日志归档进度,继续进行日志归档。
可选地,已经存储到所述存储空间中的归档文件是所述节点创建的;
所述写入模块204具体用于,根据所述节点的标识,确定新分片文件的标识;根据所述新分片文件的标识,在所述归档文件中创建所述新分片文件;
所述同步模块208具体用于,所述备份节点在所述存储空间中创建新归档文件;
根据所述备份节点的标识,确定新分片文件的标识,并在所述新归档文件中创建所述标识对应的新分片文件。
本说明书还提供了一种计算机可读存储介质,该存储介质存储有计算机程序,计算机程序可用于执行上述图1所示的日志归档的方法。
本说明书还提供了图5所示的电子设备的示意结构图。如图5所述,在硬件层面,该电子设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,以实现上述图1所示的日志归档的方法。
当然,除了软件实现方式之外,本说明书并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。
Claims (16)
1.一种日志归档的方法,所述方法应用于分布式数据库中的节点,所述方法包括:
在用于存储归档文件的存储空间中,确定已经存储到所述存储空间中的归档文件;
从构成所述归档文件的各分片文件中,确定待写入分片文件;
确定需要进行日志归档的日志,并判断所述待写入分片文件是否小于预设的阈值;
若是,将所述日志写入到所述待写入分片文件中;
否则,在所述归档文件中创建新分片文件,并将所述日志写入到所述新分片文件中。
2.如权利要求1所述的方法,从构成所述归档文件的各分片文件中,确定待写入分片文件,具体包括:
根据构成所述归档文件的各分片文件对应的标识,确定分片文件序列;
根据所述分片文件序列,从各分片文件中,将位于所述分片文件序列末尾的分片文件作为待写入分片文件。
3.如权利要求1所述的方法,将所述日志写入到所述待写入分片文件中,具体包括:
读取所述待写入分片文件中的内容;
将所述日志和读取的内容合并,作为待写入的内容;
将所述待写入的内容写入到所述待写入分片文件中。
4.如权利要求2所述的方法,所述方法还包括:
当接收到所述归档文件的读取指令时,根据所述分片文件序列和所述读取指令,从所述归档文件中确定读取文件,并进行读取操作,其中,所述读取指令至少携带初始位置和长度。
5.如权利要求4所述的方法,根据所述分片文件序列和所述读取指令,从所述归档文件中确定读取文件,具体包括:
根据所述分片文件序列和所述读取指令中携带的初始位置,确定所述初始位置所在的分片文件以及偏移量,并将所述初始位置所在的分片文件作为起始文件;
确定从所述起始文件的所述偏移量位置开始到所述起始文件末尾的长度,作为读取长度;所述读取指令中携带的长度作为第一长度;
判断所述读取长度是否不小于所述第一长度;
若是,将从所述起始文件的所述偏移量位置开始经过所述第一长度的文件作为读取文件;
否则,将所述起始文件的下一个分片文件重新确定为起始文件,将重新确定为起始文件的文件长度与所述读取长度的和重新作为读取长度,继续判断读取长度是否不小于所述第一长度,直到读取长度不小于所述第一长度时,在起始文件中确定达到所述第一长度的位置,作为目标位置,将从所述初始位置所在的分片文件的所述偏移量位置到所述目标位置之间的文件作为读取文件。
6.如权利要求1所述的方法,所述方法还包括:
确定日志归档进度;
将所述日志归档进度同步给所述节点对应的备份节点,以使所述节点发生故障时,所述备份节点根据接收到的日志归档进度,继续进行日志归档。
7.如权利要求6所述的方法,已经存储到所述存储空间中的归档文件是所述节点创建的;
在所述归档文件中创建新分片文件,具体包括:
根据所述节点的标识,确定新分片文件的标识;
根据所述新分片文件的标识,在所述归档文件中创建所述新分片文件;
当所述节点发生故障时,所述备份节点根据接收到的日志归档进度,继续进行日志归档,具体包括:
所述备份节点在所述存储空间中创建新归档文件;
根据所述备份节点的标识,确定新分片文件的标识,并在所述新归档文件中创建所述标识对应的新分片文件。
8.一种日志归档的装置,所述装置应用于分布式数据库中的节点,所述装置包括:
第一确定模块,用于在用于存储归档文件的存储空间中,确定已经存储到所述存储空间中的归档文件;
第二确定模块,用于从构成所述归档文件的各分片文件中,确定待写入分片文件;
写入模块,用于确定需要进行日志归档的日志,并判断所述待写入分片文件是否小于预设的阈值,若是,将所述日志写入到所述待写入分片文件中,否则,在所述归档文件中创建新分片文件,并将所述日志写入到所述新分片文件中。
9.如权利要求8所述的装置,所述第二确定模块具体用于,根据构成所述归档文件的各分片文件对应的标识,确定分片文件序列;根据所述分片文件序列,从各分片文件中,将位于所述分片文件序列末尾的分片文件作为待写入分片文件。
10.如权利要求8所述的装置,所述写入模块具体用于,读取所述待写入分片文件中的内容;将所述日志和读取的内容合并,作为待写入的内容;将所述待写入的内容写入到所述待写入分片文件中。
11.如权利要求9所述的装置,所述装置还包括:
读取模块,用于当接收到所述归档文件的读取指令时,根据所述分片文件序列和所述读取指令,从所述归档文件中确定读取文件,并进行读取操作,其中,所述读取指令至少携带初始位置和长度。
12.如权利要求11所述的装置,所述读取模块具体用于,根据所述分片文件序列和所述读取指令中携带的初始位置,确定所述初始位置所在的分片文件以及偏移量,并将所述初始位置所在的分片文件作为起始文件;确定从所述起始文件的所述偏移量位置开始到所述起始文件末尾的长度,作为读取长度;所述读取指令中携带的长度作为第一长度;判断所述读取长度是否不小于所述第一长度;若是,将从所述起始文件的所述偏移量位置开始经过所述第一长度的文件作为读取文件;否则,将所述起始文件的下一个分片文件重新确定为起始文件,将重新确定为起始文件的文件长度与所述读取长度的和重新作为读取长度,继续判断读取长度是否不小于所述第一长度,直到读取长度不小于所述第一长度时,在起始文件中确定达到所述第一长度的位置,作为目标位置,将从所述初始位置所在的分片文件的所述偏移量位置到所述目标位置之间的文件作为读取文件。
13.如权利要求8所述的装置,所述装置还包括:
同步模块,用于确定日志归档进度;将所述日志归档进度同步给所述节点对应的备份节点,以使所述节点发生故障时,所述备份节点根据接收到的日志归档进度,继续进行日志归档。
14.如权利要求13所述的装置,已经存储到所述存储空间中的归档文件是所述节点创建的;
所述写入模块具体用于,根据所述节点的标识,确定新分片文件的标识;根据所述新分片文件的标识,在所述归档文件中创建所述新分片文件;
所述同步模块具体用于,所述备份节点在所述存储空间中创建新归档文件;根据所述备份节点的标识,确定新分片文件的标识,并在所述新归档文件中创建所述标识对应的新分片文件。
15.一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述权利要求1~7任一项所述的方法。
16.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述权利要求1~7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310095814.7A CN116166614A (zh) | 2023-01-18 | 2023-01-18 | 一种日志归档的方法、装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310095814.7A CN116166614A (zh) | 2023-01-18 | 2023-01-18 | 一种日志归档的方法、装置、存储介质及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116166614A true CN116166614A (zh) | 2023-05-26 |
Family
ID=86421488
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310095814.7A Pending CN116166614A (zh) | 2023-01-18 | 2023-01-18 | 一种日志归档的方法、装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116166614A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117785816A (zh) * | 2024-01-05 | 2024-03-29 | 柏域信息科技(上海)有限公司 | 文件分片存储的方法、装置、设备及存储介质 |
-
2023
- 2023-01-18 CN CN202310095814.7A patent/CN116166614A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117785816A (zh) * | 2024-01-05 | 2024-03-29 | 柏域信息科技(上海)有限公司 | 文件分片存储的方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107038206B (zh) | Lsm树的建立方法、lsm树的数据读取方法和服务器 | |
CN108628688B (zh) | 一种消息处理方法、装置及设备 | |
CN109033127B (zh) | 一种同步数据校验方法、装置以及设备 | |
CN110807013B (zh) | 用于分布式数据存储集群的数据迁移方法和装置 | |
CN115328924B (zh) | 一种创建表空间的方法、装置、存储介质及电子设备 | |
CN116048800A (zh) | 一种数据处理的方法、装置、存储介质及电子设备 | |
CN110633096B (zh) | 节点控制方法及装置、版本控制方法及装置、分布式系统 | |
CN116166614A (zh) | 一种日志归档的方法、装置、存储介质及电子设备 | |
CN111459724B (zh) | 节点切换方法、装置、设备及计算机可读存储介质 | |
CN115374117A (zh) | 一种数据处理方法、装置、可读存储介质及电子设备 | |
CN110895545B (zh) | 共享数据同步方法及装置 | |
CN110908429B (zh) | 一种定时器操作方法及装置 | |
CN116048977B (zh) | 一种基于数据还原的测试方法及装置 | |
CN109901914B (zh) | 事务处理方法、装置及设备 | |
CN116010419A (zh) | 一种创建唯一索引和优化逻辑删除的方法及装置 | |
CN112084171B (zh) | 基于Cassandra数据库的操作日志写入方法、装置、设备及介质 | |
CN109614388B (zh) | 一种预算扣减方法和装置 | |
CN109753351B (zh) | 一种限时任务处理方法、装置、设备及介质 | |
CN116089434B (zh) | 一种数据存储方法、装置、存储介质及电子设备 | |
CN117743472B (zh) | 一种存储任务断点同步方法、装置、介质及设备 | |
CN116204584A (zh) | 一种写入日志的方法、装置、可读存储介质及电子设备 | |
CN117041980B (zh) | 一种网元管理方法、装置、存储介质及电子设备 | |
CN116743550B (zh) | 一种分布式存储集群的故障存储节点的处理方法 | |
CN117555697B (zh) | 一种面向分布式训练的缓存加载系统、方法、装置及设备 | |
CN110175020B (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 |