具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
除非上下文另有特定清楚的描述,本发明中的元件和组件,数量既可以单个的形式存在,也可以多个的形式存在,本发明并不对此进行限定。本发明中的步骤虽然用标号进行了排列,但并不用于限定步骤的先后次序,除非明确说明了步骤的次序或者某步骤的执行需要其他步骤作为基础,否则步骤的相对次序是可以调整的。可以理解,本文中所使用的术语“和/或”涉及且涵盖相关联的所列项目中的一者或一者以上的任何和所有可能的组合。
如图1所示,在一个实施例中,提供了一种分布式数据备份方法,包括:
步骤102,调度服务器获取服务器集群的配置信息。
服务器集群是为处理相同任务模型而部署的通用服务器的集合以及多个集合的超集,服务器集群将很多个服务器集中起来进行同一种服务,能够实现并行处理从而提高处理速度。为了保证数据的完整性以及为防止数据意外丢失,需要对服务器集群中的服务器进行数据备份。
本实施例中,预先可设置服务器集群的配置信息,该配置信息中记录需备份的服务器列表。比如,配置信息包括服务器地址、是否备份、备份时间段和备份周期等字段,根据服务器集群的配置信息则能得到哪些服务器需要备份数据以及备份的时间。服务器集群的配置信息可存储在调度服务器中或者存储在配置中心,因此调度服务器可从本地或者配置中心获取到服务器集群的配置信息。
步骤104,调度服务器根据配置信息获取需备份的服务器列表,根据需备份的服务器列表生成备份任务并派发到至少一个备份服务器。
本实施例中,调度服务器根据需备份的服务器列表生成的备份任务可指定需备份的服务器和备份时间,比如,调度服务器生成的备份任务中包含需备份的服务器地址和对应的备份周期(如每日备份)和备份时间段(如每日的8点整至12点整)。备份服务器是备份服务器集群中的服务器,备份服务器集群是为了处理备份任务而部署的很多个备份服务器的集合。进一步的,调度服务器对于每一个需备份的服务器都生成对应的备份任务并根据预先设置的任务调度方式将备份任务派发到至少一个备份服务器。
步骤106,接收到备份任务的备份服务器向备份任务中指定的服务器打开数据传输端口,接收指定的服务器传输的备份数据并存储。
备份任务中可包含需备份的服务器地址,则接收到备份任务的备份服务器可根据备份任务中的服务器地址向与该服务器地址对应的服务器打开数据传输端口,通过数据传输端口接收服务器传输的备份数据并存储。
本实施例中,备份服务器只有在执行备份任务时才打开数据传输端口,能够防止服务器被入侵后通过备份通道盗取备份服务器上的数据,因此能够提高安全性。另外,通过配置需备份的服务器列表,使得备份服务器只能向事先配置好的服务器打开数据传输端口,从而拒绝了其它服务器的连接,进一步降低了安全隐患,提高了安全性。
在一个实施例中,备份任务中包含备份时间段和需备份的服务器地址,则步骤106包括:接收到备份任务的备份服务器在备份时间段内打开数据传输端口,在备份时间段内接收对应需备份的服务器地址对应的服务器传输的备份数据并存储。进一步的,备份任务中还可包括备份周期,则接收到备份任务的备份服务器在每个备份周期内的备份时间段内打开数据传输端口。比如,备份周期为每日备份,备份时间段为8:00~9:00,则备份服务器在每天的8点整至9点整的时间段内打开数据传输端口,在其它时间段则关闭数据传输端口。
在一个实施例中,服务器集群中的每台服务器都可存储配置文件,该配置文件中记录了要备份的目录列表和备份时间点,其中,目录列表中包含要备份的路径和对应生成的打包文件名。例如,目录列表中记录:/home home.tar.gz,表示需要对路径为/home下的数据打包成文件名为home.tar.gz的数据包。备份时间点为生成数据包的时间,例如,备份时间为15:00,表示每天下午3点需要对指定路径下的数据进行打包。
进一步的,服务器生成数据包后,采用摘要算法对生成的数据包进行运算,生成数据包的校验码,将生成的数据包和对应的校验码一起通过文件传输协议(File Transfer Protocol,FTP)传输到对应打开数据传输端口的备份服务器。该备份服务器与服务器可对摘要算法进行约定,备份服务器接收到数据包和校验码后,采用与服务器约定的摘要算法对接收到的数据包进行运算,从而得到校验码进而与接收到的校验码进行比对,如果两者相同,则说明数据包未被篡改,校验通过。
在一个实施例中,如图2所示,接收到备份任务的备份服务器执行备份任务的流程包括:
步骤202,接收到备份任务的备份服务器检测备份任务中指定的服务器中的备份数据是否已生成,若是,则进入步骤204,否则执行步骤206。
步骤204,接收指定的服务器传输的备份数据并存储。
本实施例中,如果备份服务器检测到指定的服务器中的备份数据都已生成,则该服务器直接通过文件传输协议向备份服务器传输备份数据。
步骤206,增加失败次数。
本实施例中,如果备份服务器检测到指定的服务器中的备份数据还未生成,则说明该服务器中的备份数据还未打包完成,增加一次失败次数并记录增加后的失败次数。
步骤208,备份服务器执行完一轮备份任务。
步骤210,判断是否记录有失败次数,若是则进入步骤212,否则执行步骤214。
步骤212,备份服务器完成备份任务并退出。
如果所有接收到备份任务的备份服务器执行完一轮备份任务,比如将当天所有备份任务执行过一轮后,这些备份服务器再检测是否记录有失败次数,如果记录有失败次数,则说明备份任务并没有执行完成,如果没有记录有失败次数,则说明备份任务已执行完成。
步骤214,判断记录的失败次数是否达到阈值,若是,则进入步骤216,否则返回步骤202。
步骤216,备份服务器执行备份任务失败并退出。
该阈值为预设最大失败次数,如果备份服务器检测到记录的失败次数达到了阈值,则进入步骤216,备份服务器执行备份任务失败,向调度服务器返回任务失败通知。如果记录的失败次数没有达到阈值,则返回步骤202继续检测指定的服务器中的备份数据是否已生成。
本实施例中,由于备份服务器在执行备份任务时可能指定的服务器并没有将备份数据准备好,通过记录失败次数,在预设最大失败次数的范围内,备份服务器可以多次检测指定的服务器是否已准备好备份数据,从而尽可能的在预设最大失败次数的范围内获取到服务器传输的备份数据并存储,提高了数据备份的成功率。
在一个实施例中,步骤106中接收指定的服务器传输的备份数据并存储的步骤包括:备份服务器接收指定的服务器传输的备份数据,对备份数据进行加密后存储。具体的,备份服务器接收到指定的服务器传输的备份数据,可采用本地存储的密钥对备份数据进行加密后再存储。本实施例中,备份服务器通过对接收到的数据进行加密,从而能够实现对服务器备份的一些敏感数据或重要数据进行加密存储,防止数据被盗取或篡改,进一步提高了安全性。
进一步的,在需要使用到加密后的备份数据时需要对加密的备份数据进行数据恢复(即解密),如图3所示,备份服务器实现数据解密的流程包括:
步骤302,备份服务器接收备份数据恢复请求,根据备份数据恢复请求生成密钥获取请求,并将密钥获取请求发送给至少两个终端。
本实施例中,可预先对解密的密钥进行拆分,拆分成至少两个部分密钥,且不同的部分密钥保存在不同的终端上,或者不同的部分密钥由不同的便携式存储装置中,且由不同的人员进行管理。当备份服务器接收到备份数据恢复请求时,该备份数据恢复请求中携带了备份数据的数据标识。进一步的,备份服务器根据备份数据的数据标识查找到预存的与该数据标识对应的部分密钥存放地址,根据部分密钥存放地址生成向不同终端发送的密钥获取请求,该密钥获取请求中携带了备份数据的数据标识。
步骤304,备份服务器接收至少两个终端发送的部分密钥,根据部分密钥生成完整密钥,根据该完整密钥对备份数据进行解密。
具体的,终端接收到密钥获取请求后,可获取备份数据的数据标识。进一步的,终端可根据备份数据的数据标识查找对应存储的部分密钥,或者由管理部分密钥的人员将存储了部分密钥的便携式存储装置接入终端,终端根据备份数据的数据标识读取到对应的便携式存储装置中的部分密钥。终端得到部分密钥后将该部分密钥发送至备份服务器,备份服务器接收到所有终端发送的部分密钥后,将部分密钥组合成完整密钥,进而根据完整密钥对备份数据进行解密。
本实施例中,由于密钥被事先拆分成了至少两个部分密钥,且不同的部分密钥存放在不同的终端或者由不同的人员来管理。当需要对备份数据进行解密时,则需要存放密钥的终端或者管理不同部分密钥的人员都操作才能使得备份服务器得到完整密钥。这样,降低了密钥被非法获取的可能,从而进一步提高了安全性。
在一个实施例中,在备份服务器根据完整密钥对备份数据进行解密之后,还包括:备份服务器生成解密成功通知并发送至请求恢复备份数据的终端,该解密成功通知携带有解密后的备份数据的存放位置。终端获取该解密成功通知后,即可根据解密后的备份数据的存放位置获取存储的解密后的备份数据。
进一步的,备份服务器还可销毁完整密钥和部分密钥。在备份数据解密后销毁完整密钥和部分密钥,能有效防止密钥被非法获取,从而提高了安全性。
在一个实施例中,在调度服务器根据需备份的服务器列表生成备份任务并派发到至少一个备份服务器的步骤之后,还包括:接收到备份任务的备份服务器检测本地剩余资源和本地存储的前一次备份记录,根据本地剩余资源和前一次备份记录判断是否能执行备份任务,若是则执行备份任务,否则拒绝执行。
本地剩余资源,包括本地剩余的存储资源、计算资源和网络资源等,其中存储资源可为磁盘存储空间,计算资源可为CPU处理能力,网络资源可为网络带宽等。例如,接收到备份任务的备份服务器检测本地剩余的存储资源和本地存储的前一次备份记录,获取前一次备份记录所占用的存储资源,判断本地剩余的存储资源是否能够达到前一次备份记录所占用的存储资源,如果是,则说明该备份服务器能执行备份任务,否则拒绝执行。
进一步的,在根据需备份的服务器列表生成备份任务并派发到至少一个备份服务器的步骤之后,还包括:接收到备份任务的备份服务器如果检测不到前一次备份记录,则判断本地剩余资源是否大于最低资源额度,若是,则执行备份任务,否则拒绝执行。本实施例中,当备份服务器检测不到本地的前一次备份记录时,则直接判断本地剩余资源是否大于最低资源额度,例如,判断本地的剩余磁盘空间是否大于设定的预置,如30GB,等,如果是,则表明备份服务器的剩余资源还能够执行备份任务,否则拒绝执行。
下面以一个具体的应用场景来详细阐述分布式数据备份方法的原理。如图4所示,本实施例中,服务器集群的配置信息存储在配置中心402中,备份服务器集群406是为了处理备份任务而部署的很多个备份服务器406a的集合,服务器集群408是为了处理业务而部署的很多个服务器408a的集合。调度服务器404从配置中心402获取服务器集群的配置信息,根据其中的需备份的服务器列表生成备份任务并派发到备份服务器集群406,接收到备份任务的备份服务器406a向备份任务中服务器地址打开数据传输端口,并检测该服务器地址对应的服务器408a中的备份数据是否已准备好,如果已准备好,则接收该服务器408a传输的备份数据,对接收到的备份数据进行加密后存储。
参见图5,进一步的,当用户需要使用加密的备份数据时则请求恢复备份数据。用户可通过数据恢复平台502提交申请,数据恢复平台502将备份数据恢复请求发送至备份服务器504,该备份数据恢复请求中携带有需恢复的备份数据的数据标识(如备份文件名)和备份时间(如备份时间段)等信息。备份数据恢复请求也可先提交到管理员所在终端,由管理员进行审核,确认用户具有权限获取备份数据且有备份数据存储在备份服务器504后,备份数据恢复请求再发送至备份服务器504。备份服务器504获取需恢复的备份数据的数据标识,查找到与该数据标识对应的部分密钥存放地址。本实施例中,以部分密钥为两个进行举例说明,备份服务器504根据部分密钥存放地址向第一终端506和第二终端508发送密钥获取请求,密钥获取请求中携带了备份数据的数据标识。
管理部分密钥的人员使用第一终端506通过网页平台提交终端本地或者便携式存储装置中存储的部分密钥,另一个管理部分密钥的人员使用第二终端508通过网页平台提交终端本地或便携式存储装置中存储的部分密钥,备份服务器504接收到两个部分密钥,将这两个部分密钥组合成完整密钥,再根据完整密钥对加密的备份数据进行解密。然后,备份服务器504将解密成功通知发送至数据恢复平台502,该解密成功通知携带解密后的备份数据的存放位置。则用户可通过该存放位置获取到存储的解密后的备份数据。
如图6所示,在一个实施例中,还提供了一种分布式数据备份***,包括:
调度服务器602,用于获取服务器集群的配置信息。
调度服务器602还用于根据配置信息获取需备份的服务器列表,根据需备份的服务器列表生成备份任务并派发到至少一个备份服务器。
至少一个备份服务器604,用于接收备份任务,向备份任务中指定的服务器打开数据传输端口,接收指定的服务器传输的备份数据并存储。
本实施例中,预先可设置服务器集群的配置信息,该配置信息中记录需备份的服务器列表。比如,配置信息包括服务器地址、是否备份、备份时间段和备份周期等字段,根据服务器集群的配置信息则能得到哪些服务器需要备份数据以及备份的时间。服务器集群的配置信息可存储在调度服务器602中或者存储在配置中心,因此调度服务器602可用于从本地或者配置中心获取到服务器集群的配置信息。
调度服务器602根据需备份的服务器列表生成的备份任务可指定需备份的服务器和备份时间,比如,调度服务器602生成的备份任务中包含需备份的服务器地址和对应的备份周期(如每日备份)和备份时间段(如每日的8点整至12点整)。进一步的,调度服务器602对于每一个需备份的服务器都生成对应的备份任务并根据预先设置的任务调度方式将备份任务派发到至少一个备份服务器604。备份任务中可包含需备份的服务器地址,则接收到备份任务的备份服务器604可根据备份任务中的服务器地址向与该服务器地址对应的服务器打开数据传输端口,通过数据传输端口接收服务器传输的备份数据并存储。
在一个实施例中,如图7所示,备份服务器604包括:
备份数据检测模块604a,用于检测指定的服务器中的备份数据是否已生成。
备份数据存储模块604b,用于如果备份数据检测模块检测到指定的服务器中的备份数据已生成,则接收指定的服务器传输的备份数据并存储。
备份失败次数记录模块604c,用于如果备份数据检测模块检测不到指定的服务器中的备份数据已生成,则增加备份失败次数。
备份失败次数检测模块604d,用于在备份服务器执行完一轮备份任务后,检测是否记录有备份失败次数。
备份数据检测模块604a还用于如果检测到记录有备份失败次数,则再次检测指定的服务器中的备份数据是否已生成。
备份数据存储模块604b还用于如果备份数据已生成,则接收指定的服务器传输的备份数据并存储。
备份失败次数记录模块604c还用于如果备份数据没有生成,则增加备份失败次数,直到记录的备份失败次数达到阈值。
在另一个实施例中,如图8所示,备份任务包括备份时间段和需备份的服务器地址。备份服务器604包括:
端口设置模块604e,用于在备份时间段内打开数据传输端口。
备份数据存储模块604b,用于在备份时间段内接收对应需备份的服务器地址传输的备份数据并存储。
进一步的,备份任务中还可包括备份周期,则接收到备份任务的备份服务器604的端口设置模块604e用于在每个备份周期内的备份时间段内打开数据传输端口。
在另一个实施例中,如图9所示,备份服务器604还包括:
数据加密模块604f,用于在存储前对接收到的指定服务器传输的备份数据进行加密。
密钥请求模块604g,用于接收备份数据恢复请求,根据备份数据恢复请求生成密钥获取请求,并将密钥获取请求发送给至少两个终端。
密钥组合模块604h,用于接收至少两个终端发送的部分密钥,根据部分密钥生成完整密钥。
数据解密模块604i,用于根据完整密钥对所述备份数据进行解密。
解密通知模块604j,用于生成解密成功通知并发送至请求恢复备份数据的终端,该解密成功通知携带有解密后的备份数据的存放位置。
密钥销毁模块604k,用于销毁完整密钥和部分密钥。
本实施例中,可预先对解密的密钥进行拆分,拆分成至少两个部分密钥,且不同的部分密钥保存在不同的终端上,或者不同的部分密钥由不同的便携式存储装置中,且由不同的人员进行管理。当备份服务器604接收到备份数据恢复请求时,该备份数据恢复请求中携带了备份数据的数据标识。进一步的,密钥请求模块604g根据备份数据的数据标识查找到预存的与该数据标识对应的部分密钥存放地址,根据部分密钥存放地址生成向不同终端发送的密钥获取请求,该密钥获取请求中携带了备份数据的数据标识。
具体的,终端接收到密钥获取请求后,可获取备份数据的数据标识。进一步的,终端可根据备份数据的数据标识查找对应存储的部分密钥,或者由管理部分密钥的人员将存储了部分密钥的便携式存储装置接入终端,终端根据备份数据的数据标识读取到对应的便携式存储装置中的部分密钥。终端得到部分密钥后将该部分密钥发送至备份服务器604,备份服务器604的密钥组合模块604g接收到所有终端发送的部分密钥后,将部分密钥组合成完整密钥,进而数据解密模块604i根据完整密钥对备份数据进行解密。
在一个实施例中,备份服务器604还可包括任务执行判断模块(图中未示出),用于检测本地剩余资源和本地存储的前一次备份记录,根据本地剩余资源和前一次备份记录判断是否能执行备份任务,若是则执行备份任务,否则拒绝执行。
进一步的,任务执行判断模块还用于如果检测不到前一次备份记录,则判断所述本地剩余资源是否大于最低资源额度,若是,则执行备份任务,否则拒绝执行。
本地剩余资源,包括本地剩余的存储资源、计算资源和网络资源等,其中存储资源可为磁盘存储空间,计算资源可为CPU处理能力,网络资源可为网络带宽等。例如,任务执行判断模块检测本地剩余的存储资源和本地存储的前一次备份记录,获取前一次备份记录所占用的存储资源,判断本地剩余的存储资源是否能够达到前一次备份记录所占用的存储资源,如果是,则说明该备份服务器604能执行备份任务,否则拒绝执行。
进一步的,当任务执行判断模块检测不到本地的前一次备份记录时,则直接判断本地剩余资源是否大于最低资源额度,例如,判断本地的剩余磁盘空间是否大于设定的预置,如30GB,等,如果是,则表明备份服务器的604剩余资源还能够执行备份任务,否则拒绝执行。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述程序可存储于计算机可读取存储介质中,如该程序可存储于计算机***的存储介质中,并被该计算机***中的至少一个处理器执行,以实现包括如上述各方法的实施例的流程。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。