CN116467118A - 一种对象存储增量备份方法、系统、设备及介质 - Google Patents
一种对象存储增量备份方法、系统、设备及介质 Download PDFInfo
- Publication number
- CN116467118A CN116467118A CN202310421001.2A CN202310421001A CN116467118A CN 116467118 A CN116467118 A CN 116467118A CN 202310421001 A CN202310421001 A CN 202310421001A CN 116467118 A CN116467118 A CN 116467118A
- Authority
- CN
- China
- Prior art keywords
- storage
- minio
- kafka
- file
- changed
- 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
- 238000000034 method Methods 0.000 title claims abstract description 44
- 238000012544 monitoring process Methods 0.000 claims abstract description 24
- 238000012790 confirmation Methods 0.000 claims description 12
- 230000000977 initiatory effect Effects 0.000 claims description 10
- 238000012545 processing Methods 0.000 claims description 9
- 238000004590 computer program Methods 0.000 claims description 6
- 230000011218 segmentation Effects 0.000 claims description 3
- 238000012546 transfer Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000012550 audit Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 241000750004 Nestor meridionalis Species 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- ZLIBICFPKPWGIZ-UHFFFAOYSA-N pyrimethanil Chemical compound CC1=CC(C)=NC(NC=2C=CC=CC=2)=N1 ZLIBICFPKPWGIZ-UHFFFAOYSA-N 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- 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/1448—Management of the data involved in backup or backup restore
- G06F11/1451—Management of the data involved in backup or backup restore by selection of backup contents
-
- 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/1464—Management of the backup or restore process for networked environments
-
- 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/1734—Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
-
- 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
Abstract
本发明涉及对象存储技术领域,具体地说,涉及一种对象存储增量备份方法、系统、设备及介质;该方法通过FTP服务器与现有的Minio对象存储进行同步保存文件对象,在原始的Minio的存储对象做增删改动时监听文件变动,将变动的存储对象信息通过顺序消息的方式投递到Kafka消息队列中,备份服务通过监听Kafka中的顺序消息,调用Minio API将原始的Minio中变动的存储对象下载后,使用FTP API实时同步到备份FTP服务器中,同时向Kafka确认存储对象变动消息消费成功,并记录到ElasticSearch中,解决了对象存储Minio文件实时复制到FTP的问题,保证了实时性以及低开销的需求。
Description
技术领域
本发明涉及对象存储技术领域,具体地说,涉及一种对象存储增量备份方法、系统、设备及介质。
背景技术
在涉及存储技术方案切换的业务场景中,如涉及用户上传文件的业务系统中,业务系统的存储需要从Minio对象存储迁移到FTP中进行存储,系统切换过程中,存在新的业务系统和老业务系统同时在线运行逐步切换的情况,需要将老业务系统中写入Minio的文件实时传输到FTP中,保证了同一用户在切换到FTP存储的新系统使用中能看到自己传输到老业务系统写入到Minio的文件,同时解决系统平稳逐步切换的体验问题,因此迫切地需要解决Minio存储实时增量备份到FTP的需求。
为解决Minio对象存储备份至FTP中的问题,现有的一些技术解决方案通过定时扫描Minio存储的文件目录,对比FTP存储的文件目录中的文件目录树,对比文件路径以及文件名以及文件的修改时间、文件MD5值进行对比是否存在相同文件或者是否被覆盖更新,如果FTP中不存在此文件或者文件MD5值不一致时,拷贝Minio中的文件至FTP中,扫描以及拷贝完成之后等待固定时间间隔后再次重复对比扫描。
虽然现有技术通过对Minio和FTP的存储文件目录树和文件元数据信息进行对比进行传输解决Minio存储文件备份至FTP的技术问题,但是这种对比方式涉及每次全量扫描Minio和FTP的文件目录树以及对部分同名文件进行MD5值进行计算,导致了每次扫描需要遍历大量的文件目录,同时进行MD5值计算时会对当前服务器带来CPU较大开销,并且会因为文件过多导致每次扫描再备份耗费大量时间,Minio新上传文件备份至FTP中可能会存在较大时延。
发明内容
本发明针对上述对象存储Minio文件不能实时复制到FTP服务器的问题,提出一种对象存储增量备份方法、系统、设备及介质,通过FTP服务器与现有的Minio对象存储进行同步保存文件对象,在原始的Minio的存储对象做增删改动时监听文件变动,将变动的存储对象信息通过顺序消息的方式投递到Kafka消息队列中,备份服务通过监听Kafka中的顺序消息,调用Minio API将原始的Minio中变动的存储对象下载后,使用FTPAPI实时同步到备份FTP服务器中,确保Minio存储文件实时备份至FTP文件服务器中,同时向Kafka确认存储对象变动消息消费成功,同时记录存储文件变更记录到ElasticSearch中,解决了对象存储Minio文件实时复制到FTP的问题,保证了实时性以及低开销的需求。
本发明具体实现内容如下:
一种对象存储增量备份方法,首先获取原始的Minio对象存储中变动的存储对象信息,并通过顺序消息的方式投递至Kafka消息队列中,然后监听所述Kafka消息队列中的顺序信息,调用Minio API下载原始的Minio对象存储中变动的存储对象,并调用FTP API将所述变动的存储对象同步至备份FTP服务器中,最后向Kafka平台发起存储对象变动确认请求,并将所述变动的存储对象记录在ElasticSearch中;所述Kafka消息队列用于接收Minio对象存储的存储对象变更事件。
为了更好地实现本发明,进一步地,具体包括以下步骤:
步骤1:搭建Kafka消息队列,将备份工具服务与Kafka平台、FTP服务器、Minio对象存储、ElasticSearch服务器建立连接;
步骤2:监听Minio对象存储,将变动的存储对象信息通过顺序消息的方式投递到所述Kafka消息队列中;
步骤3:监听Kafka平台中的所述顺序消息,调用Minio API下载Minio对象存储中变动的存储对象,并调用FTP API将所述变动的存储对象同步至备份FTP服务器中;
步骤4:向Kafka平台发起存储对象变动确认请求,并将所述变动的存储对象记录在ElasticSearch服务器中。
为了更好地实现本发明,进一步地,步骤1中所述将备份工具服务与Kafka平台、FTP服务器、Minio对象存储、ElasticSearch服务器建立连接的具体操作为:在备份工具服务上配置Kafka平台的地址、Kafka平台的用户名密码、FTP服务器的地址、FTP服务器的用户名密码、Minio对象存储的地址和Minio对象存储的用户名密码;
根据Kafka Java SDK将备份工具服务与Kafka平台建立第一连接;所述第一连接,用于监听变动的存储对象信息;
根据FTP Java SDK将备份工具服务与FTP服务器建立第二连接;所述第二连接用于传输变动的存储对象信息;
根据Minio Java SDK将备份工具服务与Minio对象存储建立第三连接;所述第三连接用于同步变动的存储对象信息。
为了更好地实现本发明,进一步地,所述步骤2具体包括以下步骤:
步骤21:将存储对象变更事件发送至所述Kafka消息队列中,并调用Minio对象存储的cli工具配置与所述存储对象变更事件对应的存储对象变更通知事件;
步骤22:监听Minio对象存储,将变动的存储对象信息通过顺序消息的方式投递到所述Kafka消息队列中。
为了更好地实现本发明,进一步地,所述步骤3具体包括以下步骤:
步骤31:通过Java Kafka SDK,监听Kafka平台中的Minio对象存储的存储对象变更通知事件的topic;
步骤32:获取到变动的文件信息,记录信息中包括操作记录的事件类型、操作的存储桶和存储对象的key;
步骤33:判断所述事件的类型,若为文件新增事件或编辑事件,则备份工具通过Java Minio SDK调用minioClient的getObject方法从原始的Minio对象存储中获得当前存储对象的文件流,将所述文件流通过已经建立的FTP连接调用ftpClient的changeWorkingDirectory方法切换到同目录路径,在调用ftpClient的storeFile及相关方法写入文件流;若所述事件为文件删除事件,则通过所述第二连接调用ftpClient的deleteFile方法删除同目录路径下的文件,写入或删除完成后确认移动Kafka平台中的消费位点,若拷贝或删除文件失败,则重试再次进行处理。
为了更好地实现本发明,进一步地,所述步骤4具体包括以下步骤:
步骤41:向Kafka平台发起存储对象变动确认请求;
步骤42:将原始的Minio对象存储的存储对象变更事件通知信息通过JavaElasticSearch API存储到ElasticSearch服务器中;
步骤43:根据ElasticSearch服务器中存储的存储对象变更事件进行审计,调用Java ElasticSearch API分词查询Minio对象存储中的存储桶、Minio对象存储的存储对象变更事件。
基于上述提出的AA,为了更好地实现本发明,进一步地,提出一种对象存储增量备份系统,包括采集单元、处理单元、同步单元;
所述采集单元,用于获取原始的Minio对象存储中变动的存储对象信息,并通过顺序消息的方式投递至Kafka消息队列中;所述Kafka消息队列用于接收Minio对象存储的存储对象变更事件;
所述处理单元,用于监听所述Kafka消息队列中的顺序信息,调用Minio API下载原始的Minio对象存储中变动的存储对象,并调用FTP API将所述变动的存储对象同步至备份FTP服务器中;
所述同步单元,用于向Kafka平台发起存储对象变动确认请求,并将所述变动的存储对象记录在ElasticSearch中。
基于上述提出的AA,为了更好地实现本发明,进一步地,提出一种电子设备,包括存储器、处理器;
所述存储器,用于存储计算机程序;当所述处理器执行所述计算机程序时,实现上述的对象存储增量备份方法。
基于上述提出的AA,为了更好地实现本发明,进一步地,提出一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机指令;
当所述计算机指令在上述的处理器上执行时,执行上述的对象存储增量备份方法。
本发明具有以下有益效果:
(1)本发明通过Minio对象存储的Bucket Notification事件监听下载文件,并存储到FTP服务器中,解决了对象存储Minio文件实时复制到FTP服务器的问题,保证了同步的实时性以及低开销的需求。
(2)本发明解决了业务系统从对象存储Minio切换到FTP文件服务存储时需要实时同步的问题,通过实时增量同步改动文件到FTP服务器中,不会多次遍历所有的文件目录,减少了任务扫描时造成的大量开销,提高了实时性。
附图说明
图1为本申请实施例提供的AA的流程示意框图。
图2为本申请实施例提供的AA的时序示意图。
具体实施方式
为了更清楚地说明本发明实施例的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,应当理解,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例,因此不应被看作是对保护范围的限定。基于本发明中的实施例,本领域普通技术工作人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“设置”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;也可以是直接相连,也可以是通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
本实施例中涉及的专业术语及英文缩写对应的完整英文解释如下:
Minio:MinIO是在GNU Affero通用公共许可证v3.0下发布的高性能对象存储。它是与AmazonS3云存储服务兼容的API。使用MinIO为机器学习、分析和应用程序数据工作负载构建高性能基础架构。
对象存储:对象存储也称为基于对象的存储,是一种计算机数据存储架构,旨在处理大量非结构化数据。与其他架构不同,它将数据指定为不同的单元,并捆绑元数据和唯一标识符,用于查找和访问每个数据单元。这些单元或对象可以存储在本地,但通常存储在云端,以便于从任何地方轻松访问数据。
Kafka:Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。 该项目的目标是为处理实时数据提供一个统一、高吞吐、低延迟的平台。其持久化层本质上是一个“按照分布式事务日志架构的大规模发布/订阅消息队列”,这使它作为企业级基础设施来处理流式数据非常有价值。
增量备份:增量备份是指备份上一次备份后变化或者修改过的数据空间。上一次备份可以是全量备份或者增量备份。在对某个目标进行增量备份前,对该目标必须进行过一次全量备份。使用增量备份的最大优点是备份速度:它比完全备份快得多。
ElasticSearch:Elasticsearch是一个分布式的免费开源搜索和分析引擎,适用于包括文本、数字、地理空间、结构化和非结构化数据等在内的所有类型的数据。
FTP:FTP是文件传输协议File Transfer Protocol的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序Application。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。
MD5:MD5即信息-摘要算法第5版Message-Digest Algorithm 5,用于确保信息传输完整一致。每个文件都可以用MD5验证程序算出一个固定的MD5码来。MD5在论坛上、软件发布时经常用,是为了保证文件的正确性,防止一些人盗用程序,加些木马或者篡改版权,设计的一套验证系统。
实施例1:
本实施例提出一种对象存储增量备份方法,首先获取原始的Minio对象存储中变动的存储对象信息,并通过顺序消息的方式投递至Kafka消息队列中,然后监听所述Kafka消息队列中的顺序信息,调用Minio API下载原始的Minio对象存储中变动的存储对象,并调用FTP API将所述变动的存储对象同步至备份FTP服务器中,最后向Kafka平台发起存储对象变动确认请求,并将所述变动的存储对象记录在ElasticSearch中;所述Kafka消息队列用于接收Minio对象存储的存储对象变更事件。
进一步地,以步骤的形式进行详细说明。
步骤1:搭建Kafka消息队列,将备份工具服务与Kafka平台、FTP服务器、Minio对象存储、ElasticSearch服务器建立连接。
进一步地,步骤1中所述将备份工具服务与Kafka平台、FTP服务器、Minio对象存储、ElasticSearch服务器建立连接的具体操作为:在备份工具服务上配置Kafka平台的地址、Kafka平台的用户名密码、FTP服务器的地址、FTP服务器的用户名密码、Minio对象存储的地址和Minio对象存储的用户名密码;
根据Kafka Java SDK将备份工具服务与Kafka平台建立第一连接;所述第一连接,用于监听变动的存储对象信息;
根据FTP Java SDK将备份工具服务与FTP服务器建立第二连接;所述第二连接用于传输变动的存储对象信息;
根据Minio Java SDK将备份工具服务与Minio对象存储建立第三连接;所述第三连接用于同步变动的存储对象信息。
步骤2:监听Minio对象存储,将变动的存储对象信息通过顺序消息的方式投递到所述Kafka消息队列中。
进一步地,所述步骤2具体包括以下步骤:
步骤21:将存储对象变更事件发送至所述Kafka消息队列中,并调用Minio对象存储的cli工具配置与所述存储对象变更事件对应的存储对象变更通知事件;
步骤22:监听Minio对象存储,将变动的存储对象信息通过顺序消息的方式投递到所述Kafka消息队列中。
步骤3:监听Kafka平台中的所述顺序消息,调用Minio API下载Minio对象存储中变动的存储对象,并调用FTP API将所述变动的存储对象同步至备份FTP服务器中。
进一步地,所述步骤3具体包括以下步骤:
步骤31:通过Java Kafka SDK,监听Kafka平台中的Minio对象存储的存储对象变更通知事件的topic;
步骤32:获取到变动的文件信息,记录信息中包括操作记录的事件类型、操作的存储桶和存储对象的key;
步骤33:判断所述事件的类型,若为文件新增事件或编辑事件,则备份工具通过Java Minio SDK调用minioClient的getObject方法从原始的Minio对象存储中获得当前存储对象的文件流,将所述文件流通过已经建立的FTP连接调用ftpClient的changeWorkingDirectory方法切换到同目录路径,在调用ftpClient的storeFile及相关方法写入文件流;若所述事件为文件删除事件,则通过所述第二连接调用ftpClient的deleteFile方法删除同目录路径下的文件,写入或删除完成后确认移动Kafka平台中的消费位点,若拷贝或删除文件失败,则重试再次进行处理。
步骤4:向Kafka平台发起存储对象变动确认请求,并将所述变动的存储对象记录在ElasticSearch服务器中。
进一步地,所述步骤4具体包括以下步骤:
步骤41:向Kafka平台发起存储对象变动确认请求;
步骤42:将原始的Minio对象存储的存储对象变更事件通知信息通过JavaElasticSearch API存储到ElasticSearch服务器中;
步骤43:根据ElasticSearch服务器中存储的存储对象变更事件,调用JavaElasticSearch API分词查询Minio对象存储中的存储桶、Minio对象存储的存储对象变更事件。
工作原理:本实施例通过FTP服务器与现有的Minio对象存储进行同步保存文件对象,在原始的Minio的存储对象做增删改动时监听文件变动,将变动的存储对象信息通过顺序消息的方式投递到Kafka消息队列中,备份服务通过监听Kafka中的顺序消息,调用MinioAPI将原始的Minio中变动的存储对象下载后,使用FTPAPI实时同步到备份FTP服务器中,确保Minio存储文件实时备份至FTP文件服务器中,同时向Kafka确认存储对象变动消息消费成功,同时记录存储文件变更记录到ElasticSearch中,解决了对象存储Minio文件实时复制到FTP的问题,保证了实时性以及低开销的需求。
实施例2:
本实施例在上述实施例1的基础上,如图1所述,以一个具体的实施例进行详细说明。
步骤1:搭建一个Kafka消息队列,用于接收Minio的存储对象变更事件。
步骤2:在备份工具上配置Kafka的地址以及用户名密码、FTP服务的地址以及用户名密码、Minio的地址和用户名密码,备份工具通过Kafka Java SDK与Kafka建立连接准备消息监听,通过FTP Java SDK与FTP以主动模式建立连接准备传输,通过 Minio Java SDK使用MinioClient.builder建立与Minio的连接。
步骤3:在现有的Minio对象存储服务器上配置存储对象变更通知事件,将存储对象变更事件发送到Kafka消息队列中,使用minio的cli工具进行配置对应的通知事件,mcadmin config set myminio nofify_mqtt:1 broker="tcp://localhost:1883"password=""username=""topic="notify_topic",并使用 Minio启用存储桶通知。
步骤4:通过Java Kafka SDK,监听Kafka中的Minio变动通知的topic即"notify_topic",获取到变动的文件信息记录,记录信息中包含操作记录的事件类型比如"s3:ObjectCreated:Put",同时也包含操作的存储桶和存储对象的key,若为文件新增、编辑事件则备份工具通过Java Minio SDK调minioClient的getObject方法从原Minio中获得此存储对象的文件流,将文件流通过已经建立的FTP连接调用ftpClient的changeWorkingDirectory 方法切换到同目录路径,在调用ftpClient的storeFile及相关方法写入文件流,若为文件删除事件则通过建立的FTP连接调用ftpClient的deleteFile方法删除同目录路径下的此文件,写入或删除完成后确认移动Kafka中的消费位点,表明此变更记录消息消费完成,若拷贝或删除文件失败,将进行重试再次进行处理。
步骤5:将原Minio存储对象变更事件通知信息通过Java ElasticSearch API将变更信息记录存储到ElasticSearch中,用于Minio文件存储对象的变更审计。
步骤6:基于ElasticSearch中现有的存储对象变更的事件进行审计,通过JavaElasticSearch API分词查询Minio中的存储桶、存储对象的变更事件。
工作原理:本实施例为解决对象存储Minio服务在部分业务场景下需要将增量文件实时快速同步至FTP服务的需求,本申请从确保对象存储Minio存储文件上传、覆盖、删除实时增量同步至FTP的角度出发,通过Minio的Bucket Notification事件监听并下载文件并存储到FTP中,以解决对象存储Minio文件实时复制到FTP的问题,保证实时性以及低开销的需求。
本实施例通过FTP与现有的Minio存储进行同步保存文件对象,在原Minio存储对象做增删改动时监听文件变动,将变动的存储对象信息通过顺序消息的方式投递到Kafka消息队列中,备份服务通过监听Kafka中的顺序消息,调用Minio API 将原Minio中变动的存储对象下载后,使用FTPAPI实时同步到备份FTP服务器中,确保Minio存储文件实时备份至FTP文件服务器中,同时向Kafka确认存储对象变动消息消费成功,同时记录存储文件变更记录到ElasticSearch中,可用于后续的存储文件的审计。
本实施例的其他部分与上述实施例1相同,故不再赘述。
实施例3:
本实施例在上述实施例1-实施例2任一项的基础上,如图2所示,以时序方式进行详细说明。
步骤1:当前Minio存储业务服务中用户存储的文件如业务系统的用户的头像、用户上传的文件比如私人文档等存储文件对象,当业务系统决策将底层依赖的文件存储系统从Minio替换为FTP时需要对业务系统的存储读写实现进行改造,当改造完成之后需要灰度放量新的业务系统实现,这时新老业务系统都需要同时在线运行且需要保障业务正常运行。
步骤2:配置Minio的存储文件变动以消息方式写入到Kafka中。
步骤3:将Kafka、FTP、Minio、ElasticSearch的配置写入到备份工具服务中,建立Kafka、FTP、Minio、ElasticSearch的连接,备份工具服务监听Kafka对应的消息事件。
步骤4:对现有的Minio存储文件进行依次全量磁盘拷贝到FTP中,这时用户A来到老的业务系统中写入自己新的文件,老业务系统将文件写入到Minio中,这时Minio会向Kafka中发送一条新的文件写入事件消息,备份工具服务监听消息事件根据对应的文件key下载Minio中对应的文件,写入到新的存储FTP中,向Kafka返回消息消费成功,完成实时同步文件到新的存储FTP中,这时用户A登录到新的业务系统中也能看到刚才自己在老业务系统中上传的文件,对用户业务平滑无损。
步骤5:管理员可以根据ElasticSearch中写入的文件拷贝记录,用于后续审计操作。
本实施例解决了业务系统从对象存储Minio切换到FTP文件服务存储时需要实时同步的问题,如果从简单的定时任务扫描会造成大量的浪费开销,并且实时性不高,如果采用此技术方案可以实时增量同步改动文件到FTP中,不会多次遍历所有的文件目录。
本实施例的其他部分与上述实施例1-实施例2任一项相同,故不再赘述。
实施例4:
本实施例在上述实施例1-实施例3任一项的基础上,提出一种BB,包括采集单元、处理单元、同步单元。
所述采集单元,用于获取原始的Minio对象存储中变动的存储对象信息,并通过顺序消息的方式投递至Kafka消息队列中;所述Kafka消息队列用于接收Minio对象存储的存储对象变更事件。
所述处理单元,用于监听所述Kafka消息队列中的顺序信息,调用Minio API下载原始的Minio对象存储中变动的存储对象,并调用FTPAPI将所述变动的存储对象同步至备份FTP服务器中。
所述同步单元,用于向Kafka平台发起存储对象变动确认请求,并将所述变动的存储对象记录在ElasticSearch中。
本实施例还提出一种电子设备,包括存储器、处理器;
所述存储器,用于存储计算机程序;当所述处理器执行所述计算机程序时,实现上述的对象存储增量备份方法。
本实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机指令;
当所述计算机指令在上述的处理器上执行时,执行上述的对象存储增量备份方法。
本实施例的其他部分与上述实施例1-实施例3任一项相同,故不再赘述。
以上所述,仅是本发明的较佳实施例,并非对本发明做任何形式上的限制,凡是依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化,均落入本发明的保护范围之内。
Claims (9)
1.一种对象存储增量备份方法,其特征在于,首先获取原始的Minio对象存储中变动的存储对象信息,并通过顺序消息的方式投递至Kafka消息队列中,然后监听所述Kafka消息队列中的顺序信息,调用Minio API下载原始的Minio对象存储中变动的存储对象,并调用FTP API将所述变动的存储对象同步至备份FTP服务器中,最后向Kafka平台发起存储对象变动确认请求,并将所述变动的存储对象记录在ElasticSearch中;所述Kafka消息队列用于接收Minio对象存储的存储对象变更事件。
2.根据权利要求1所述的一种对象存储增量备份方法,其特征在于,具体包括以下步骤:
步骤1:搭建Kafka消息队列,将备份工具服务与Kafka平台、FTP服务器、Minio对象存储、ElasticSearch服务器建立连接;
步骤2:监听Minio对象存储,将变动的存储对象信息通过顺序消息的方式投递到所述Kafka消息队列中;
步骤3:监听Kafka平台中的所述顺序消息,调用Minio API下载Minio对象存储中变动的存储对象,并调用FTP API将所述变动的存储对象同步至备份FTP服务器中;
步骤4:向Kafka平台发起存储对象变动确认请求,并将所述变动的存储对象记录在ElasticSearch服务器中。
3.根据权利要求2所述的一种对象存储增量备份方法,其特征在于,步骤1中所述将备份工具服务与Kafka平台、FTP服务器、Minio对象存储、ElasticSearch服务器建立连接的具体操作为:在备份工具服务上配置Kafka平台的地址、Kafka平台的用户名密码、FTP服务器的地址、FTP服务器的用户名密码、Minio对象存储的地址和Minio对象存储的用户名密码;
根据Kafka Java SDK将备份工具服务与Kafka平台建立第一连接;所述第一连接,用于监听变动的存储对象信息;
根据FTP Java SDK将备份工具服务与FTP服务器建立第二连接;所述第二连接用于传输变动的存储对象信息;
根据Minio Java SDK将备份工具服务与Minio对象存储建立第三连接;所述第三连接用于同步变动的存储对象信息。
4.根据权利要求3所述的一种对象存储增量备份方法,其特征在于,所述步骤2具体包括以下步骤:
步骤21:将存储对象变更事件发送至所述Kafka消息队列中,并调用Minio对象存储的cli工具配置与所述存储对象变更事件对应的存储对象变更通知事件;
步骤22:监听Minio对象存储,将变动的存储对象信息通过顺序消息的方式投递到所述Kafka消息队列中。
5.根据权利要求4所述的一种对象存储增量备份方法,其特征在于,所述步骤3具体包括以下步骤:
步骤31:通过Java Kafka SDK,监听Kafka平台中的Minio对象存储的存储对象变更通知事件的topic;
步骤32:获取到变动的文件信息,记录信息中包括操作记录的事件类型、操作的存储桶和存储对象的key;
步骤33:判断所述事件的类型,若为文件新增事件或编辑事件,则备份工具通过JavaMinio SDK调用minioClient的getObject方法从原始的Minio对象存储中获得当前存储对象的文件流,将所述文件流通过已经建立的FTP连接调用ftpClient的changeWorkingDirectory方法切换到同目录路径,在调用ftpClient的storeFile及相关方法写入文件流;若所述事件为文件删除事件,则通过所述第二连接调用ftpClient的deleteFile方法删除同目录路径下的文件,写入或删除完成后确认移动Kafka平台中的消费位点,若拷贝文件或删除文件失败,则重试再次进行处理。
6.根据权利要求5所述的一种对象存储增量备份方法,其特征在于,所述步骤4具体包括以下步骤:
步骤41:向Kafka平台发起存储对象变动确认请求;
步骤42:将原始的Minio对象存储的存储对象变更事件通知信息通过JavaElasticSearch API存储到ElasticSearch服务器中;
步骤43:根据ElasticSearch服务器中存储的存储对象变更事件进行审计,调用JavaElasticSearch API分词查询Minio对象存储中的存储桶、Minio对象存储的存储对象变更事件。
7.一种对象存储增量备份系统,其特征在于,包括采集单元、处理单元、同步单元;
所述采集单元,用于获取原始的Minio对象存储中变动的存储对象信息,并通过顺序消息的方式投递至Kafka消息队列中;所述Kafka消息队列用于接收Minio对象存储的存储对象变更事件;
所述处理单元,用于监听所述Kafka消息队列中的顺序信息,调用Minio API下载原始的Minio对象存储中变动的存储对象,并调用FTP API将所述变动的存储对象同步至备份FTP服务器中;
所述同步单元,用于向Kafka平台发起存储对象变动确认请求,并将所述变动的存储对象记录在ElasticSearch中。
8.一种电子设备,其特征在于,包括存储器、处理器;
所述存储器,用于存储计算机程序;当所述处理器执行所述计算机程序时,实现如权利要求1-6任一项所述的对象存储增量备份方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机指令;
当所述计算机指令在如权利要求8所述的处理器上执行时,执行如权利要求1-6任一项所述的对象存储增量备份方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310421001.2A CN116467118A (zh) | 2023-04-19 | 2023-04-19 | 一种对象存储增量备份方法、系统、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310421001.2A CN116467118A (zh) | 2023-04-19 | 2023-04-19 | 一种对象存储增量备份方法、系统、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116467118A true CN116467118A (zh) | 2023-07-21 |
Family
ID=87181902
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310421001.2A Pending CN116467118A (zh) | 2023-04-19 | 2023-04-19 | 一种对象存储增量备份方法、系统、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116467118A (zh) |
-
2023
- 2023-04-19 CN CN202310421001.2A patent/CN116467118A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11356509B2 (en) | Service and APIs for remote volume-based block storage | |
CN106250270B (zh) | 一种云计算平台下的数据备份方法 | |
CN106156359B (zh) | 一种云计算平台下的数据同步更新方法 | |
US8055937B2 (en) | High availability and disaster recovery using virtualization | |
JP4446738B2 (ja) | コンピュータファイルを効率的にバックアップするシステムと方法 | |
US7908339B2 (en) | Transaction based virtual file system optimized for high-latency network connections | |
WO2013086842A1 (zh) | 一种文件同步方法和装置 | |
CN102495772B (zh) | 一种基于特征的终端程序云备份及恢复方法 | |
CN102360321A (zh) | 一种基于云架构的终端程序快速备份及恢复方法 | |
US8751455B2 (en) | Item level recovery | |
KR101429956B1 (ko) | 가상 nas를 이용한 클라우드 스토리지 서버, 시스템 및 방법 | |
CN108352995B (zh) | 一种smb业务故障处理方法和存储设备 | |
Da Silva et al. | The amanda network backup manager | |
CN115878138B (zh) | 应用预下载方法、装置、计算机、存储介质 | |
CN116560904A (zh) | Nas数据备份容灾方法、系统、终端及存储介质 | |
CN110958293A (zh) | 基于云服务器的文件传输方法、系统、服务器及存储介质 | |
CN116467118A (zh) | 一种对象存储增量备份方法、系统、设备及介质 | |
CN1889418B (zh) | 一种网络存储方法与网络存储系统 | |
WO2020256797A1 (en) | Object storage system with meta object replication | |
CN112416878A (zh) | 一种基于云平台的文件同步管理方法 | |
WO2017039538A1 (en) | Systems and methods for unified storage services | |
CN117459544A (zh) | 镜像同步方法、装置、设备及存储介质 | |
CN117194101A (zh) | 数据备份方法及系统 | |
CN113906382A (zh) | 用于数据保护的设备和方法 | |
CN117850812A (zh) | 一种基于代理的分布式应用动态部署和升级方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |