1.本发明涉及云计算技术领域,具体涉及一种分布式中间件的备份方法和系统。
背景技术:2.在云原生不断发展下,越来越多的云平台公司提供了基于云原生的上云服务。企业上云是未来的趋势,通过将企业的应用部署到云平台上,可以提高企业的竞争力。与此同时,伴随云平台的发展,许多中间件产品也开始适配云原生环境。
3.应用中间件(application middleware),又称为中间件,是一种独立的系统软件或服务程序,是连接两个独立应用程序或独立系统的应用。目前,常见的中间件产品按照功能分类,可分为数据库、缓存类、消息中间件。而大多数中间件运行,选用存储十分严苛,高性能是必要条件。因此,本地存储成为了中间件的首选存储。
4.中间件上云,自身可实现分布式,保证应用层面高可用。但存储层面却缺乏数据安全保护,在没有备份数据的情况下,一旦磁盘损坏(或服务器损坏),数据将无法恢复。为防止这类问题的发生、提高存储的高可用,大多数存储企业会在磁盘上做独立冗余磁盘阵列(raid),主流的商业化硬件数据保护有raid10、raid50、raid60等。同时,也会采取非标准的方式进行数据保护,如:数据缓存引擎等,最终通过与硬件进行打包销售。商业化的存储为数据保驾护航,但也提高了企业的采购成本。
技术实现要素:5.针对现有技术中存在的上述技术问题,本发明提供一种分布式中间件的备份方法和系统,通过对中间件的存储数据进行备份,提高中间件的高可用性。
6.本发明公开了一种分布式中间件的备份方法,所述方法包括:对中间件的本地存储数据进行备份,获得备份数据;判断所述中间件的第一实例是否损坏;若是,删除所述中间件的第一实例后,重建实例,获得第二实例;将所述备份数据恢复到所述第二实例的存储空间;将所述第二实例恢复到中间件的分布式集群中。
7.优选的,根据恢复资源对象进行实例恢复的方法:
8.监测到第一实例损坏后,删除第一实例及其本地存储数据;
9.建立恢复资源对象,所述恢复资源对象包括第一实例的实例信息、中间件钩子信息和备份数据;
10.根据实例信息重建实例,获得第二实例,并建立第二实例的存储空间;
11.根据备份数据,获得第二实例的恢复数据,并将所述恢复数据恢复到所述存储空间;
12.根据所述中间件钩子信息,建立第二实例与分布式集群的连接;
13.所述第二实例通过分布式集群进行数据同步。
14.优选的,所述备份数据包括中间件配置信息、日志和业务数据。
15.优选的,对中间件的业务数据进行备份的方法包括:
16.对中间件进行写入锁定后,创建快照;
17.快照创建后,解除中间件的写入锁定;
18.根据所述快照,进行增量备份,获得备份数据。
19.优选的,对所述备分数据进行压缩、加密后,传输到分布式存储系统中。
20.优选的,对中间件进行日志清理、记录备份状态,生成备份记录。
21.优选的,根据备份资源对象对中间件的业务数据进行备份的方法包括:
22.创建备份资源对象,所述备份资源对象包括备份的定时信息、中间件的实例信息、锁定和解锁信息;
23.根据所述定时信息,对相应的中间件实例进行定期备份;
24.根据锁定信息,对所述中间件的本地存储数据进行写入锁定后,创建快照;
25.快照创建后,根据解锁信息,解除中间件的写入锁定;
26.根据所述快照进行增量备份。
27.本发明还提供一种用于实现上述备份方法的系统,包括备份模块、监听模块和恢复模块,
28.所述备份模块用于对中间件进行备份,获得备份数据;
29.所述监听模块用于监听中间件,若所述中间件的第一实例损坏,调用恢复模块;
30.所述恢复模块用于删除所述中间件的第一实例后,重建实例,获得第二实例;将所述备份数据恢复到所述第二实例的存储空间;并将所述第二实例恢复到中间件的分布式集群中。
31.优选的,所述备份模块还用于监听备份资源对象,所述备份资源对象包括备份的定时信息、中间件的实例信息、锁定和解锁信息;
32.根据所述定时信息,对相应的中间件实例进行定期备份;
33.根据锁定信息,对所述中间件实例的本地存储数据进行写入锁定后,创建快照;
34.快照创建后,根据解锁信息,解除中间件实例的写入锁定;
35.根据所述快照进行增量备份。
36.优选的,所述恢复模块用于根据恢复资源对象进行实例恢复:
37.中间件第一实例损坏后,删除第一实例及其本地存储数据,并建立恢复资源对象,所述恢复资源对象包括第一实例的实例信息、中间件钩子信息和备份数据;
38.根据实例信息重建实例,获得第二实例,并建立第二实例的存储空间;
39.根据备份数据,获得第二实例的恢复数据,并将所述恢复数据恢复到所述存储空间;
40.根据所述中间件钩子信息,建立第二实例与分布式集群的连接;
41.所述第二实例通过分布式集群进行数据同步。
42.与现有技术相比,本发明的有益效果为:对中间件的本地存储数据进行备份,在中间件损坏时,根据备份数据重建、恢复相应的实例,并将该实例连接到分布式集群中,提高中间件的高可用性;有效解决因磁盘损坏导致数据无法恢复的问题;另外,在经济效益上,能够降低中间件备份的成本,提高产品的综合实力。
附图说明
43.图1是本发明的分布式中间件的备份方法流程图;
44.图2是实施例1中的mysql中间件备份的方法流程图;
45.图3是实施例2的系统框图。
具体实施方式
46.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
47.下面结合附图对本发明做进一步的详细描述:
48.一种分布式中间件的备份方法,如图1所示,所述方法包括:
49.步骤101:对中间件的本地存储数据进行备份,获得备份数据。
50.其中,中间件为数据库、缓存类有数据落盘的应用;即中间件的业务数据保存在中间件所在虚拟机或工作节点的本地存储空间中,即中间件具有本地存储数据。所述备份数据可以包括中间件配置信息、日志和业务数据。
51.步骤102:判断所述中间件的第一实例是否损坏。
52.若是,执行步骤101:删除所述中间件的第一实例后,重建实例,获得第二实例,执行步骤103。删除第一实例后,数据处于丢失状态;分布式集群中仍具有冗余实例可以正常提供服务。
53.若否,执行步骤102:持续监听所述中间件。
54.步骤103:将所述备份数据恢复到所述第二实例的存储空间。
55.其中,重建的第二实例可以与第一实例在同一个工作节点中,也可以将第二实例调度到分布式集群的其它工作节点中。
56.步骤104:将所述第二实例恢复到中间件的分布式集群中。
57.对中间件的本地存储数据进行备份,在中间件损坏时,根据备份数据重建、恢复相应的实例,并将该实例连接到分布式集群中,提高中间件的高可用性;有效解决因磁盘损坏导致数据无法恢复的问题;另外,在经济效益上,能够降低中间件备份的成本,提高产品的综合实力。
58.步骤101中,可以通过写入锁定机制,对中间件的业务数据进行备份的包括:
59.步骤111:对中间件实例进行写入锁定后,创建快照。
60.步骤112:快照创建后,解除中间件实例的写入锁定。
61.在写入锁定中,中间件提供的服务仍然保持可用。可以通过指令、tcp和http访问方式,完成对中间件实例无侵入的数据写入权锁定与解锁。
62.步骤113:根据所述快照,进行增量备份,获得备份数据。
63.在中间件数据量大的情况,全量备份是十分低效的,而增量备份加上数据压缩,能为用户节省很多时间。通用快照备份和恢复,能在极短时间内完成备份与恢复操作,对中间件提供的服务影响极小;能有效提升数据完整性,保证数据安全。应当指出的是备份可以在服务数据流量较小的情况下进行。
64.增量备份中,可以通过对本地存储数据与分布式存储系统的备份数据进行比对,记录相同数据点位,得到数据差异,最终对差异数据进行备份。在一个具体实施例中,首次备份时进行全量备份,二次备份时进行增量备份。
65.步骤114:对所述备分数据进行压缩、加密后,传输到分布式存储系统中。减少备份的存储空间、并提高备份数据的安全性。可以通过分布式存储系统的协议和接口进行数据传输。
66.步骤115:传输结束后,对中间件进行日志清理、记录备份状态,生成备份记录。
67.备份时,通过写入锁定,在短时间内抑制数据写入,避免快照和备份过程中出现数据错漏。其中,写入锁定时:中间件所接收到的写入数据,可以进行缓存,解锁后,将缓存的数据进行写入。但不限于此。
68.在原有分布式集群的中间件服务可用情况下,数据恢复仅针对已损坏的中间件实例;第二实例重启后,通过分布式集群的同步能力,使第二实例具有最新数据。
69.在原有中间件服务(中间件所有实例都损坏)不可用的情况下,重新创建中间件的所有实例、并进行数据恢复;中间件服务可用后,对原有中间件的实例进行清理。
70.实施例1
71.以mysql中间件为例进行说明:
72.如图2所示,根据备份资源对象对中间件的业务数据进行备份的流程:
73.步骤201:创建备份资源对象,所述备份资源对象包括备份的定时信息、mysql中间件的实例信息、锁定和解锁信息。
74.步骤202:根据所述定时信息,对相应的mysql中间件实例进行定期备份。备份数据包括本地存储数据中的业务数据、中间件配置和日志。
75.步骤203:根据锁定信息,对所述中间件实例的本地存储数据进行写入锁定后,创建快照。即mysql全表增加写锁,可以通过向中间件发送写锁的指令增加写入锁定。
76.步骤204:快照创建后,根据解锁信息,解除中间件实例的写入锁定。即解除mysql全表写锁。
77.步骤205:根据所述快照进行增量备份。数据备份包括中间件配置文件、业务数据及日志信息等。
78.通过备份资源对象定义备份的对象、时间以及写入锁定和解锁的方式,方便进行数据备份的控制;数据备份和恢复仅需完成资源对象内容的填写,备份与恢复简单易上手。
79.备份过程可以自动化实现,备份是否完成,可以在定时备份定义结果中体现。定时备份定时器设置,一般设置在流量较小的时间段,尽可能对中间件产生较小影响。定时备份期间,可随时关闭备份。
80.在一个具体实施例中,锁定的方式包括:在执行写入锁定前,对缓存数据进行落盘处理,缓存数据处理完成后,生成日志数据,立即进行写入锁定操作。但不限于此,也可以通过持续归档的方式进行数据备份:在快照数据备份的基础上,对未落盘的缓存数据进行日志持续归档,即便是也能通过持续归档完成,例如postgresql中间件。在备份资源对象中可以对锁定方式进行自定义。
81.根据恢复资源对象进行实例恢复:
82.步骤211:监测到中间件第一实例损坏后,删除第一实例及其本地存储数据。
83.步骤212:建立恢复资源对象,所述恢复资源对象包括第一实例的实例信息、中间件钩子信息和备份数据。
84.步骤213:根据实例信息重建实例,获得第二实例,并建立第二实例的存储空间。mysql中间件为有状态应用(statefulset),删除中间件实例后,分布式集群会重建第二实例,并创建本地存储卷空间(lv)。
85.步骤214:根据备份数据,获得第二实例的恢复数据,并将所述恢复数据恢复到所述存储空间。
86.步骤215:根据所述中间件钩子信息,建立第二实例与分布式集群的连接。其中,恢复中间件钩子主要用来第二实例重新加入分布式集群中,即建立第二实例与分布式集群管理平台的连接,分布式集群中提供相应的服务、触发数据同步。中间件钩子信息包括钩子执行命令,同时支持自定义设置,例如通过指令、tcp和http访问方式,在实例重启前完成钩子信息的执行。其中,第一实例和中间件钩子信息可以通过分布式集群的管理平台中获得。
87.步骤216:所述第二实例通过分布式集群进行数据同步。
88.通过恢复资源对象,对中间件实例重建、数据恢复、中间件钩子的过程进行定义,便于自动完成中间件数据恢复。
89.实施例2
90.本实施例提供一种用于实现上述备份方法的系统,如图3所示,包括备份模块1、监听模块2和恢复模块3,
91.备份模块1用于对中间件进行备份,获得备份数据;
92.监听模块2用于监听中间件,若所述中间件的第一实例损坏,调用恢复模块;
93.恢复模块3用于删除所述中间件的第一实例后,重建实例,获得第二实例;将所述备份数据恢复到所述第二实例的存储空间;并将所述第二实例恢复到中间件的分布式集群中。
94.其中,备份模块1还用于监听备份资源对象,所述备份资源对象包括备份的定时信息、中间件的实例信息、锁定和解锁信息;根据所述定时信息,对相应的中间件实例进行定期备份;根据锁定信息,对所述中间件实例的本地存储数据进行写入锁定后,创建快照;快照创建后,根据解锁信息,解除中间件实例的写入锁定;根据所述快照进行增量备份。
95.恢复模块3用于根据恢复资源对象进行实例恢复:中间件第一实例损坏后,删除第一实例及其本地存储数据,并建立恢复资源对象,所述恢复资源对象包括第一实例的实例信息、中间件钩子信息和备份数据;根据实例信息重建实例,获得第二实例,并建立第二实例的存储空间;根据备份数据,获得第二实例的恢复数据,并将所述恢复数据恢复到所述存储空间;根据所述中间件钩子信息,建立第二实例与分布式集群的连接;所述第二实例通过分布式集群进行数据同步。
96.其中,第二实例可以与第一实例在同一工作节点a中,也可以部署在另一工作节点n中。由于第一实例受损,可能是由于工作节点a的环境造成,则部署在工作节点n中,可以降低发生再次损坏的风险。
97.本发明实现了中间件的高可用性,提高备份的稳定性。
98.以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、
等同替换、改进等,均应包含在本发明的保护范围之内。