CN104765652B - 一种数据备份和数据恢复方法及装置 - Google Patents
一种数据备份和数据恢复方法及装置 Download PDFInfo
- Publication number
- CN104765652B CN104765652B CN201410009383.9A CN201410009383A CN104765652B CN 104765652 B CN104765652 B CN 104765652B CN 201410009383 A CN201410009383 A CN 201410009383A CN 104765652 B CN104765652 B CN 104765652B
- Authority
- CN
- China
- Prior art keywords
- backup
- data
- cache server
- slab
- item
- 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.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供一种数据备份和数据恢复方法及装置,应用于Memcache系统的缓存服务器集群。数据备份方法包括:利用命令脚本与缓存服务器集群中的缓存服务器连接;其中,命令脚本用于操作缓存服务器的系统;对已成功连接的缓存服务器进行数据备份。数据恢复方法包括:利用命令脚本与缓存服务器集群中的缓存服务器连接;根据数据恢复请求从已成功连接的缓存服务器中确定出恢复对象;将备份数据导入至所述恢复对象。本发明的方案能够十分简单地对Memcache系统的缓存服务器进行数据备份,并高效地完成缓存服务器的数据恢复工作。
Description
技术领域
本发明涉及数据处理领域和电子通信领域,特别是一种数据备份和数据恢复方法及装置。
背景技术
随着互联网技术的发展,特别是电信领域,每天用户都会产生海量的信息访问请求。因此,若用户直接访问运营商的数据库会带来巨大的负担。为解决这类问题,如图1所示,业内通用的做法就是设置Memcache系统(分布式内存对象缓存系统)的缓存服务器集群。Memcache是一个高性能的分布式的内存对象缓存系统,其维护一个巨大的Hash表,以用于存储运营商后台数据库中的数据。这些数据可以包括图像、视频、文件以及数据库检索的结果等。维护人员在每天凌晨定时对缓存服务器集群中每个缓存服务器进行数据更新操作,即从后台的数据库中读取数据并加载到缓存服务器中。用户向CRM(CustomerRelationship Management,客户关系管理)系统发起业务数据查询请求,CRM系统通过缓存服务器来获取手机号对应的业务数据,并回复至用户。通过缓存服务器的设置使用户不再直接向数据库获取业务数据,从而降低了数据库的负担。
虽然运营商采用缓存服务器集群来避免单点故障,保证系统的高可用性,但无法避免数据逻辑故障。在以下情况下加载了错误数据到缓存服务器会导致逻辑故障:1)数据配置错误,导致数据异常;2)将数据库中的数据导入缓存服务器的过程中发生误操作,造成数据错误或丢失;3)由于某些原因,数据库中的一部分数据本身就是错误的,致使向缓存服务器导入了错误的数据。在发生以上问题后,维护人员常的处理流程是:1)定位故障原因;2)进行数据修复;3)重新将数据库中的数据加载到缓存服务器。
现有的数据备份和数据恢复方法并不能完全适于通信领域的缓存服务器。特别是到目前为止,还没有针对Memcache系统的数据备份和数据恢复方法,因此对故障定位和数据修复没有明确性。当数据库中的数据发生错误时,光是排除缓存服务器发生故障并定位到数据库的过程就需要消耗很多时间。在此之后,还需要通过磁带备份技术先对数据库进行恢复,然后才能轮到缓存服务器进行恢复。由于数据库出错,整个缓存服务器集群也无法幸免,所以造成整个通信系统的长时间中断,这对用户体验来说是不可接受的。
发明内容
本发明要解决的技术问题是提供一种数据备份和数据恢复方法及装置,能够十分简单地对Memcache系统的缓存服务器进行数据备份,并高效地完成缓存服务器的数据恢复工作。
为解决上述技术问题,本发明的实施例提供一种数据备份方法,应用于Memcache系统的缓存服务器集群,包括:
利用命令脚本与缓存服务器集群中的缓存服务器连接;其中,所述命令脚本用于操作缓存服务器的系统;
对已成功连接的缓存服务器进行数据备份。
优选地,对已成功连接的缓存服务器进行数据备份的步骤包括:
从已成功连接的缓存服务器中选取一个缓存服务器作为备份对象;
对所述备份对象进行数据备份。
优选地,对所述备份对象进行数据备份的步骤包括:
判断所述备份对象是否存在需要备份的数据;
当所述备份对象不存在需要备份的数据时,则重新选出一个备份对象进行数据备份;
当所述备份对象存在需要备份的数据时,则判断所述备份对象是否正常运行;
若判断出所述备份对象正常运行,则对所述备份对象进行数据备份;
若判断出所述备份对象没有正常运行,则重新选出一个备份对象进行数据备份。
优选地,判断所述备份对象是否存在需要备份的数据的步骤具体包括:
通过curr_items代码判断所述备份对象是否存在需要备份的数据;其中,当curr_items代码大于等于1时,所述备份对象存在需要备份的数据。
优选地,判断所述备份对象是否正常运行的步骤包括:
通过IsReady代码判断所述备份对象是否正常运行;其中,当IsReady代码对应的value值为OK时,所述备份对象正常运行。
优选地,对所述备份对象进行数据备份的步骤包括:
步骤S1:确定所述备份对象中所有slab分配器;
步骤S2:从所有slab分配器中不重复选出一个目标slab分配器;
步骤S3:逐一读取目标slab分配器中的item;
步骤S4:获取步骤S3已读取到的item的key-value键值;
步骤S5:制作并保存步骤S4已获取到的key-value键值的添加指令;其中,添加指令用于将key-value键值添加至对应item中;
步骤S6:判断目标slab分配器的所有item是否全部被读取完毕;是,则执行步骤S7;否,则回到步骤S3;
步骤S7:判断所有slab分配器是否都被选作为目标slab分配器;是,则进行步骤S8,否,则回到步骤S2;
步骤S8:将已保存的所有添加指令作为备份数据;
优选地,所述步骤S8具体包括:
步骤S81:对已保存的所有添加指令进行校验;
步骤S82:若校验正确,则将该已保存的所有添加指令作为备份数据;
步骤S83:若校验错误,则发出用于表示备份失败的告警。
本发明的实施例还提供一种数据恢复方法,应用于Memcache系统的缓存服务器集群,包括:
利用命令脚本与缓存服务器集群中的缓存服务器连接;其中,所述命令脚本用于操作缓存服务器的系统;
根据数据恢复请求从已成功连接的缓存服务器中确定出恢复对象;
将备份数据导入至所述恢复对象;其中,所述备份数据是利用所述命令脚本对已成功连接的缓存服务器进行数据备份所得到的。
优选地,利用所述命令脚本将备份数据导入至所述恢复对象的步骤包括:
关闭所述恢复对象的运行状态;
清空所述恢复对象的缓存数据。
将备份数据导入至所述恢复对象;
开启所述恢复对象的运行状态。
优选地,所述备份数据由多个添加指令组成;添加指令用于向恢复对象的slab分配器中item添加key-value键值;
其中,将备份数据导入至所述恢复对象的步骤包括:
逐一执行完所述备份数据中的所有添加指令。
优选地,开启所述恢复对象的运行状态的步骤包括:
对已导入所述恢复对象的备份数据进行校验;
若校验正确,则开启所述恢复对象的运行状态。
本发明的实施例还提供一种数据备份装置,应用于Memcache系统的缓存服务器集群,包括:
第一连接模块,用于利用命令脚本与缓存服务器集群中的缓存服务器连接;其中,所述命令脚本用于操作缓存服务器的系统;
备份模块,用于对已成功连接的缓存服务器进行数据备份。
优选地,所述备份模块包括:
选取子模块,用于利用所述命令脚本从已成功连接的缓存服务器中选取一个缓存服务器作为备份对象;
备份子模块,用关于对所述备份对象进行数据备份。
优选地,所述备份子模块包括:
第一判断单元,用于判断所述备份对象是否存在需要备份的数据;
重选取单元,用于当所述备份对象不存在需要备份的数据时,则重新选出一个备份对象进行数据备份;
第二判断单元,用于当所述备份对象存在需要备份的数据时,则判断所述备份对象是否正常运行;
备份单元,用于若所述第二判断单元判断出所述备份对象正常运行,则对所述备份对象进行数据备份;
若所述第二判断单元判断出所述备份对象没有正常运行,则重新选出一个备份对象进行数据备份。
优选地,第一判断单元具体用于:
通过curr_items代码判断所述备份对象是否存在需要备份的数据;其中,当curr_items代码大于等于1时,所述备份对象存在需要备份的数据。
优选地,第二判断单元具体用于:
通过IsReady代码判断所述备份对象是否正常运行;其中,当IsReady代码对应的value值为OK时,所述备份对象正常运行。
优选地,所述备份子模块包括:
确定子单元,用于确定所述备份对象中所有slab分配器;
选取子单元,用于从所有slab分配器中不重复选出一个目标slab分配器;
读取子单元,用于逐一读取目标slab分配器中的item;
获取子单元,用于获取所述读取子单元已读取到的item的key-value键值;
命令生成单元,用于制作并保存所述获取子单元已获取到的key-value键值的添加指令;其中,添加指令用于将key-value键值添加至对应item中;
第一判断子单元:用于判断目标slab分配器的所有item是否全部被读取完毕;当目标slab分配器的所有item没有全部被读取完毕时,使所述读取子单元继续读取item;当目标slab分配器的所有item全部被读取完毕时,使第二判断子单元执行判断工作;
第二判断子单元,用于判断所有slab分配器是否都被选作为目标slab分配器;当所有slab分配器未都被选作为目标slab分配器时,则使所述选取子单元继续选出一个目标slab分配器;当所有slab分配器都被选作为目标slab分配器时,则将已保存的所有添加指令作为备份数据。
优选地,所述第二判断子单元具体用于:
对已保存的所有添加指令进行校验;当校验正确时,则将该已保存的所有添加指令作为备份数据;当校验错误时,则输出用于表示备份失败的告警。
本发明还提供一种数据恢复装置,应用于Memcache系统的缓存服务器集群,包括:
第二连接模块,用于利用命令脚本与缓存服务器集群中的缓存服务器连接;其中,所述命令脚本用于操作缓存服务器的系统;
确定模块,用于根据数据恢复请求从已成功连接的缓存服务器中确定出恢复对象;
恢复模块,用于将备份数据导入至所述恢复对象;其中,所述备份数据是利用所述命令脚本对已成功连接的缓存服务器进行数据备份所得到的。
优选地,所述恢复模块包括:
关闭子模块,用于关闭所述恢复对象的运行状态;
清空子模块,用于清空所述恢复对象的缓存数据。
导入子模块,用于将备份数据导入至所述恢复对象;
开启子模块,用于开启所述恢复对象的运行状态。
优选地,所述备份数据由多个添加指令组成;添加指令用于向恢复对象的slab分配器中item添加key-value键值;
其中,导入子模块具体用于逐一执行完所述备份数据中的所有添加指令。
优选地,所述开启子模块包括:
校验子模块,用于对已导入所述恢复对象的备份数据进行校验;
开启子模块,用于若校验正确,则开启所述恢复对象的运行状态。
本发明的上述技术方案的有益效果如下:
本发明的备份数据是利用命令脚本对已成功连接的缓存服务器进行数据备份所得到的。因此在积累了一定时间段的备份数据时,如果数据库出现数据错误,致使向缓存服务器导入了错误数据,则可针对性地选择相应时间的备份数据来对缓存服务器进行恢复。与现有的需要先等待数据库恢复后,再将数据库中的数据导入缓存服务器的恢复方法相比,本方法效率更高。
附图说明
图1为通信领域中数据系统的构架图;
图2为本发明的数据备份方法的步骤示意图;
图3为本发明的数据备份方法的详细步骤图;
图4为本发明的数据恢复方法的详细步骤图;
图5为本发明的数据备份装置的结构示意图;
图6为本发明的数据恢复装置的结构示意图。
具体实施方式
为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
如图2所示,本发明的实施例提供一种数据备份方法,应用于Memcache系统的缓存服务器集群,包括:
步骤10,利用命令脚本与缓存服务器集群中的缓存服务器连接;其中,所述命令脚本用于操作缓存服务器的系统;
步骤11,对已成功连接的缓存服务器进行数据备份。
本发明首次提出了针对Memcache系统的缓存服务器进行数据备份的方法,通过脚本与缓存服务器进行连接,从而操作缓存服务器的系统,进而对缓存服务器进行数据备份。显然,本发明的方法操作简单、效率高。
需要说明的,在缓存服务器集群中,所有缓存服务器中的缓存数据在正常情况下是相同的,因此只需要对其中一台进行数据备份。即在本发明的上述实施例中,步骤11包括:
步骤111,从已成功连接的缓存服务器中选取一个缓存服务器作为备份对象;
步骤112,对所述备份对象进行数据备份。
当然,由于一些无法预料到的因素,使得原先给缓存服务器加载数据库中的数据时,发生异常状况,造成有些缓存服务器无法正常工作,或者是缓存服务器根本没有缓存上数据。所以可以了解到的,为保证数据备份工作的成功执行,因尽量避免将上述这类缓存服务器作为备份对象,即上述步骤112还包括:
步骤1121,判断所述备份对象是否存在需要备份的数据;
步骤1122,当所述备份对象不存在需要备份的数据时,则重新选出一个备份对象进行数据备份;
步骤1123,当所述备份对象存在需要备份的数据时,则判断所述备份对象是否正常运行;
步骤1124,若判断出所述备份对象正常运行,则对所述备份对象进行数据备份,得到备份数据;
步骤1125,若判断出所述备份对象没有正常运行,则重新选出一个备份对象进行数据备份。
下面对步骤1121和步骤1122的具体实施进行详细介绍:
需要给予说明的是,目前Memcache系统均采用slab分配器来管理缓存的key-value键值,slab分配器适用于小数据的分配,能够避免了常见的碎片问题;对于Memcache系统的缓存服务器来说,其curr_items代码表示缓存服务器当前缓存的item数量,即所有slab分配器中的Item数量。Item代表着缓存服务器保存数据的项目。例如curr_items=72820表示缓存服务器缓存有72820项的数据。因此,在对备份对象进行数据备份前,可直接查询其curr_items代码来判断备份对象是否缓存有数据,即是否有需要备份的数据。若curr_items代码大于等于1时,则认定备份对象存在需要备份的数据。当然,若curr_items代码小于1时,则认定现在该缓存服务器不适合作为备份对象,则在集群中重新选出一个缓存服务器作为备份对象来完成数据备份工作。
下面对步骤1124和步骤1125的具体实施进行详细介绍:
在Memcache系统中还存在IsReady代码,其表示缓存服务器是否已经准备好运行工作。即IsReady代码对应的value值为“OK”时表示着缓存服务器正常工作,否则表示缓存服务器中的运行异常,无法正常工作。因此在缓存服务器无法正常工作时,应在集群中重新选出一个缓存服务器作为备份对象来完成数据备份工作。
需要给予说明的是,Memcache系统的缓存服务器所维护的哈希表相当于数据访问的索引,而其具体保存的key-value键值可看成是访问数据的地址。因此,缓存服务器最核心的部分其实是key-value键值。为此,本发明提供了一种针对key-value键值的数据备份方法,如图3所示,包括:
步骤S1:确定所述备份对象中所有slab分配器;需要给予说明的是,目前Memcache系统均采用slab分配器来管理缓存的key-value键值,slab分配器适用于小数据的分配,能够避免了常见的碎片问题;
步骤S2:从所有slab分配器中重复选出一个目标slab分配器;
步骤S3:逐一读取目标slab分配器中的item;
步骤S4:获取步骤S3已读取到的item的key-value键值;
步骤S5:制作并保存步骤S4已获取到的key-value键值的添加指令;其中,添加指令用于将key-value键值添加至对应item中;
步骤S6:判断目标slab分配器的所有item是否全部被读取完毕;是,则执行步骤S7;否,则回到步骤S3;
步骤S7:判断所有slab分配器是否都被选作为目标slab分配器;是,则进行步骤S8,否,则回到步骤S2;
步骤S8:将已保存的所有添加指令作为备份数据;
由此可见,本发明的数据备份方法先确定缓存key-value键值的位置,在获取各位置上的key-value键值,并生成key-value键值的添加命令,添加命令用于将获取到的key-value键值添加至对应的位置上,即本发明的备份数据实际上就是这些添加命令组成,在后续的数据恢复过程中,直接运行这些添加命令即可将key-value键值加载至需要数据恢复的缓存服务器中。
此外,为进一步保证得到备份数据的可靠性,在上述实施例基础之上,步骤S8具体包括:
步骤S81:对已保存的所有添加指令进行校验;
步骤S82:若校验正确,则将该已保存的所有添加指令作为备份数据
步骤S83:若校验错误,则发出用于表示备份失败的告警。
由此可见,本方明的数据备份方法完全可以由命令脚本自动完成,当无法得到正确的备份数据时,可进行告警提示,提醒维护人员执行后续补救措施。
下面以一个由命令脚本自动完成数据备份的实施例,对本发明的数据备份方法进行详细介绍,在本实施例中,命令脚本执行以下步骤:
A)每天凌晨通过Crontab命令执行数据备份任务;其中,Crontab命令用于设置周期性被执行的指令,该命令放于命令脚本的“Crontab”文件中,以供之后读取和执行;而凌晨时段,用户访问缓存服务器的请求相对较少,适合进行数据备份;
B)连接到Memcache系统的缓存服务器,并执行stats命令,判断缓存服务器的系统是否能够访问,如果不能访问则给予错误提示并输出告警。
C)通过stats命令,统计curr_items数量是否小于1,确认缓存服务器中是否有需要备份的数据,如果没有则给予提示,不进行备份;
D)执行get命令以获取IsReady对应的Value,判断Value是否为OK,如果不是则认为该缓存服务器有问题,不能进行备份,给予错误提示并输出告警,之后重新选取一个缓存服务器执行步骤2);
E)以上检查都通过后开始进行数据备份,备份采用遍历方式,将缓存服务器的每条Key-Value键对读取出来并保存到备份文件中,操作步骤如下:
E.1)通过stats items命令获得所有slab分配器的items个数;
E.2)通过stats cachedump[slab]0命令获得对应slab下面的所有item的key值;
E.3)使用get[key]命令获得该key对应的value;
E.4)通过循环将该slab下的key-value键对以“add[key][value]”格式写入备份文件;“add[key][value]”即上文所述添加命令;
E.5)通过上述步骤将所有slab的下面的item全部导出写入备份文件;
F)根据业务规则进行数据校验,校验备份是否成功,如果没有成功则给予错误提示并输出告警。
综上所述,本发明对正常运行的缓存服务器进行数据备份,由于备份工作可以由命令脚本周期性执行,因此,当发现当数据库中的数据发生错误时,可根据时间来选择对应的备份数据,完成缓存服务器的数据恢复工作。
此外,如图4所示,本发明还提供一种数据恢复方法,应用于Memcache系统的缓存服务器集群,包括:
步骤30,利用命令脚本与缓存服务器集群中的缓存服务器连接;其中,所述命令脚本用于操作缓存服务器的系统;
步骤31,根据数据恢复请求从已成功连接的缓存服务器中确定出恢复对象;
步骤32,将备份数据导入至所述恢复对象;其中,所述备份数据是利用所述命令脚本对已成功连接的缓存服务器进行数据备份所得到的。
在本发明的数据恢复方法中,备份数据是利用命令脚本对已成功连接的缓存服务器进行数据备份所得到的。因此在积累了一定时间段的备份数据时,如果数据库出现数据错误,致使向缓存服务器导入了错误数据,则可针对性地选择相应时间的备份数据来对缓存服务器进行恢复。与现有的需要先等待数据库恢复后,再将数据库中的数据导入缓存服务器的恢复方法相比,本方法效率更高。
此外,由于恢复对象代表着缓存有错误的数据,为了避免恢复对象继续错误工作,上述实施例基础之上,步骤32具体包括
步骤321,关闭所述恢复对象的运行状态;
步骤322,清空所述恢复对象的缓存数据。
步骤323,将备份数据导入至所述恢复对象;
步骤324,开启所述恢复对象的运行状态。
具体地,在本发明的上述实施例中。所述备份数据由多个添加指令组成;添加指令用于向恢复对象的slab分配器中item添加key-value键值;
其中,将备份数据导入至所述恢复对象的步骤包括:
逐一执行完所述备份数据中的所有添加指令。
由此可见,本发明的恢复方法十分简单,其备份数据直接由添加命令组成,在对恢复对象导入正确的key-value键值时,只需要逐条执行添加指令即可。
此外,为了确保恢复对象能够的正确运行,在上述是实施例的基础之上,步骤324包括:
步骤3241,对已导入所述恢复对象的备份数据进行校验;
步骤3242,若校验正确,则开启所述恢复对象的运行状态。
下面以一个命令脚本自动为恢复对象进行数据恢复的实施例,对本发明的数据恢复方法进行详细介绍,在本实施例中,命令脚本执行以下步骤:
A')维护人员选择的恢复对象和备份数据,并启动恢复流程;
B')判断恢复对象是否能够访问,如果不能访问则给予错误提示并输出告警;
C')执行set命令将validate.IsReady标志设置为OFF,即关闭恢复对象的运行状态;
D')执行flush命令清空缓存服务器所缓存的数据;其中,缓存服务器所缓存的数据即上文提到的Key-Value键值;
E')以上操作完成后开始进行数据恢复,通过循环方式逐行备份数据中的每条添加命令,将Key-Value键值加载到缓存服务器中;
F')加载完成后根据业务规则进行数据校验,如果校验异常则中断恢复,给予错误提示并输出告警;
G')校验正常则执行set命令将validate.IsReady标志设置为OK,即开启恢复对象的运行状态,从而使CRM系统访问的是正确的数据。
综上所述,从实际应用出发,结合本发明的数据备份方法以及数据恢复方法,可以得到以下有以效果:
每天定时将集群中一个缓存服务器的数据备份到制定文件中,根据设置可以保存最近几天的备份数据,并在缓存服务器出现异常时,启动缓存服务器的数据恢复工作,可以根据需要选择不同时间的备份数据进行快速恢复,大大缩短业务中断时间,保证缓存服务器的正常使用。
此外,如图5所示,本发明的实施例还提供一种数据备份装置,应用于Memcache系统的缓存服务器集群,包括:
第一连接模块,用于利用命令脚本与缓存服务器集群中的缓存服务器连接;其中,所述命令脚本用于操作缓存服务器的系统;
备份模块,用于对已成功连接的缓存服务器进行数据备份。
本发明首次提出了针对Memcache系统的缓存服务器进行数据备份的装置,本装置通过脚本与缓存服务器进行连接,从而操作缓存服务器的系统,进而对缓存服务器进行数据备份。
具体地,在本发明的上述实施例中,所述备份模块包括:
选取子模块,用于利用所述命令脚本从已成功连接的缓存服务器中选取一个缓存服务器作为备份对象;
备份子模块,用关于对所述备份对象进行数据备份。
具体地,在本发明的上述实施例中,所述备份子模块包括:
第一判断单元,用于判断所述备份对象是否存在需要备份的数据;
重选取单元,用于当所述备份对象不存在需要备份的数据时,则重新选出一个备份对象进行数据备份;
第二判断单元,用于当所述备份对象存在需要备份的数据时,则判断所述备份对象是否正常运行;
备份单元,用于若所述第二判断单元判断出所述备份对象正常运行,则对所述备份对象进行数据备份;
若所述第二判断单元判断出所述备份对象没有正常运行,则重新选出一个备份对象进行数据备份。
此外,在本发明的上述实施例中,第一判断单元具体用于:
通过curr_items代码判断所述备份对象是否存在需要备份的数据;其中,当curr_items代码大于等于1时,所述备份对象存在需要备份的数据。
此外,在本发明的上述实施例中,第二判断单元具体用于:
通过IsReady代码判断所述备份对象是否正常运行;其中,当IsReady代码对应的value值为OK时,所述备份对象正常运行。
具体地,在本发明的上述实施例中,所述备份子模块包括:
确定子单元,用于确定所述备份对象中所有slab分配器;
选取子单元,用于从所有slab分配器中不重复选出一个目标slab分配器;
读取子单元,用于逐一读取目标slab分配器中的item;
获取子单元,用于获取所述读取子单元已读取到的item的key-value键值;
命令生成单元,用于制作并保存所述获取子单元已获取到的key-value键值的添加指令;其中,添加指令用于将key-value键值添加至对应item中;
第一判断子单元:用于判断目标slab分配器的所有item是否全部被读取完毕;当目标slab分配器的所有item没有全部被读取完毕时,使所述读取子单元继续读取item;当目标slab分配器的所有item全部被读取完毕时,使第二判断子单元执行判断工作;
第二判断子单元,用于判断所有slab分配器是否都被选作为目标slab分配器;当所有slab分配器未都被选作为目标slab分配器时,则使所述选取子单元继续选出一个目标slab分配器;当所有slab分配器都被选作为目标slab分配器时,则将已保存的所有添加指令作为备份数据。
具体地,在本发明的上述实施例中,所述第二判断子单元具体用于:
对已保存的所有添加指令进行校验;当校验正确时,则将该已保存的所有添加指令作为备份数据;当校验错误时,则输出用于表示备份失败的告警。
显然以上装置与本发明中的数据备份方法相对应,该方法能够达到的技术效果,本装置同样也能达到。此外,以上装置是以功能划分为各种模块、单元进行描述的,因此,在实施本发明时可以把各模块、单元的功能在同一个或多个软件和/或硬件中实现。
此外,如图6所示,本发明的实施例还提供一种数据恢复装置,应用于Memcache系统的缓存服务器集群,包括:
第二连接模块,用于利用命令脚本与缓存服务器集群中的缓存服务器连接;其中,所述命令脚本用于操作缓存服务器的系统;
确定模块,用于根据数据恢复请求从已成功连接的缓存服务器中确定出恢复对象;
恢复模块,用于将备份数据导入至所述恢复对象;其中,所述备份数据是利用所述命令脚本对已成功连接的缓存服务器进行数据备份所得到的。
在本发明的数据恢复装置中,备份数据是利用命令脚本对已成功连接的缓存服务器进行数据备份所得到的。因此在积累了一定时间段的备份数据时,如果数据库出现数据错误,致使向缓存服务器导入了错误数据,则可针对性地选择相应时间的备份数据来对缓存服务器进行恢复。与现有的需要先等待数据库恢复后,再将数据库中的数据导入缓存服务器的恢复方案相比,本装置效率更高。
具体地,在本发明的上述实施例中,所述恢复模块包括:
关闭子模块,用于关闭所述恢复对象的运行状态;
清空子模块,用于清空所述恢复对象的缓存数据。
导入子模块,用于将备份数据导入至所述恢复对象;
开启子模块,用于开启所述恢复对象的运行状态。
具体地,在本发明的上述实施例中,所述备份数据由多个添加指令组成;添加指令用于向恢复对象的slab分配器中item添加key-value键值;
其中,导入子模块具体用于逐一执行完所述备份数据中的所有添加指令。
具体地,在本发明的上述实施例中,所述开启子模块包括:
校验子模块,用于对已导入所述恢复对象的备份数据进行校验;
开启子模块,用于若校验正确,则开启所述恢复对象的运行状态。
显然以上装置与本发明中的数据恢复方法相对应,该方法能够达到的技术效果,本装置同样也能达到。此外,以上装置是以功能划分为各种模块进行描述的,因此,在实施本发明时可以把各模块功能在同一个或多个软件和/或硬件中实现。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (14)
1.一种数据备份方法,应用于分布式内存对象缓存Memcache系统的缓存服务器集群,其特征在于,包括:
利用命令脚本与缓存服务器集群中的缓存服务器连接;其中,所述命令脚本用于操作缓存服务器的系统;
对已成功连接的缓存服务器进行数据备份,包括:从已成功连接的缓存服务器中选取一个缓存服务器作为备份对象,对所述备份对象进行数据备份;
其中,对所述备份对象进行数据备份的步骤包括:
步骤S1:确定所述备份对象中所有slab分配器;
步骤S2:从所有slab分配器中不重复选出一个目标slab分配器;
步骤S3:逐一读取目标slab分配器中的item;
步骤S4:获取步骤S3已读取到的item的key-value键值;
步骤S5:制作并保存步骤S4已获取到的key-value键值的添加指令;其中,添加指令用于将key-value键值添加至对应item中;
步骤S6:判断目标slab分配器的所有item是否全部被读取完毕;是,则执行步骤S7;否,则回到步骤S3;
步骤S7:判断所有slab分配器是否都被选作为目标slab分配器;是,则进行步骤S8,否,则回到步骤S2;
步骤S8:将已保存的所有添加指令作为备份数据。
2.根据权利要求1所述的数据备份方法,其特征在于,对所述备份对象进行数据备份的步骤包括:
判断所述备份对象是否存在需要备份的数据;
当所述备份对象不存在需要备份的数据时,则重新选出一个备份对象进行数据备份;
当所述备份对象存在需要备份的数据时,则判断所述备份对象是否正常运行;
若判断出所述备份对象正常运行,则对所述备份对象进行数据备份;
若判断出所述备份对象没有正常运行,则重新选出一个备份对象进行数据备份。
3.根据权利要求2所述的数据备份方法,其特征在于,判断所述备份对象是否存在需要备份的数据的步骤具体包括:
通过curr_items代码判断所述备份对象是否存在需要备份的数据;其中,当curr_items代码大于等于1时,所述备份对象存在需要备份的数据。
4.根据权利要求2所述的数据备份方法,其特征在于,判断所述备份对象是否正常运行的步骤包括:
通过IsReady代码判断所述备份对象是否正常运行;其中,当IsReady代码对应的value值为OK时,所述备份对象正常运行。
5.根据权利要求1所述的数据备份方法,其特征在于,所述步骤S8具体包括:
步骤S81:对已保存的所有添加指令进行校验;
步骤S82:若校验正确,则将该已保存的所有添加指令作为备份数据
步骤S83:若校验错误,则发出用于表示备份失败的告警。
6.一种数据恢复方法,应用于分布式内存对象缓存Memcache系统的缓存服务器集群,其特征在于,包括:
利用命令脚本与缓存服务器集群中的缓存服务器连接;其中,所述命令脚本用于操作缓存服务器的系统;
根据数据恢复请求从已成功连接的缓存服务器中确定出恢复对象;
将备份数据导入至所述恢复对象;其中,所述备份数据是利用所述命令脚本对已成功连接的缓存服务器进行数据备份所得到的,包括:关闭所述恢复对象的运行状态;清空所述恢复对象的缓存数据;将备份数据导入至所述恢复对象;开启所述恢复对象的运行状态;
所述备份数据由多个添加指令组成;添加指令用于向恢复对象的slab分配器中item添加key-value键值;
其中,将备份数据导入至所述恢复对象的步骤包括:
逐一执行完所述备份数据中的所有添加指令。
7.根据权利要求6所述的数据恢复方法,其特征在于,开启所述恢复对象的运行状态的步骤包括:
对已导入所述恢复对象的备份数据进行校验;
若校验正确,则开启所述恢复对象的运行状态。
8.一种数据备份装置,应用于Memcache系统的缓存服务器集群,其特征在于,包括:
第一连接模块,用于利用命令脚本与缓存服务器集群中的缓存服务器连接;其中,所述命令脚本用于操作缓存服务器的系统;
备份模块,用于对已成功连接的缓存服务器进行数据备份,包括:选取子模块,用于利用所述命令脚本从已成功连接的缓存服务器中选取一个缓存服务器作为备份对象;备份子模块,用于对所述备份对象进行数据备份;
其中,所述备份子模块包括:
确定子单元,用于确定所述备份对象中所有slab分配器;
选取子单元,用于从所有slab分配器中不重复选出一个目标slab分配器;
读取子单元,用于逐一读取目标slab分配器中的item;
获取子单元,用于获取所述读取子单元已读取到的item的key-value键值;
命令生成单元,用于制作并保存所述获取子单元已获取到的key-value键值的添加指令;其中,添加指令用于将key-value键值添加至对应item中;
第一判断子单元:用于判断目标slab分配器的所有item是否全部被读取完毕;当目标slab分配器的所有item没有全部被读取完毕时,使所述读取子单元继续读取item;当目标slab分配器的所有item全部被读取完毕时,使第二判断子单元执行判断工作;
第二判断子单元,用于判断所有slab分配器是否都被选作为目标slab分配器;当所有slab分配器未都被选作为目标slab分配器时,则使所述选取子单元继续选出一个目标slab分配器;当所有slab分配器都被选作为目标slab分配器时,则将已保存的所有添加指令作为备份数据。
9.根据权利要求8所述的数据备份装置,其特征在于,所述备份子模块包括:
第一判断单元,用于判断所述备份对象是否存在需要备份的数据;
重选取单元,用于当所述备份对象不存在需要备份的数据时,则重新选出一个备份对象进行数据备份;
第二判断单元,用于当所述备份对象存在需要备份的数据时,则判断所述备份对象是否正常运行;
备份单元,用于若所述第二判断单元判断出所述备份对象正常运行,则对所述备份对象进行数据备份;
若所述第二判断单元判断出所述备份对象没有正常运行,则重新选出一个备份对象进行数据备份。
10.根据权利要求9所述的数据备份装置,其特征在于,第一判断单元具体用于:
通过curr_items代码判断所述备份对象是否存在需要备份的数据;其中,当curr_items代码大于等于1时,所述备份对象存在需要备份的数据。
11.根据权利要求9所述的数据备份装置,其特征在于,第二判断单元具体用于:
通过IsReady代码判断所述备份对象是否正常运行;其中,当IsReady代码对应的value值为OK时,所述备份对象正常运行。
12.根据权利要求8所述的数据备份装置,其特征在于,所述第二判断子单元具体用于:
对已保存的所有添加指令进行校验;当校验正确时,则将该已保存的所有添加指令作为备份数据;当校验错误时,则输出用于表示备份失败的告警。
13.一种数据恢复装置,应用于Memcache系统的缓存服务器集群,其特征在于,包括:
第二连接模块,用于利用命令脚本与缓存服务器集群中的缓存服务器连接;其中,所述命令脚本用于操作缓存服务器的系统;
确定模块,用于根据数据恢复请求从已成功连接的缓存服务器中确定出恢复对象;
恢复模块,用于将备份数据导入至所述恢复对象;其中,所述备份数据是利用所述命令脚本对已成功连接的缓存服务器进行数据备份所得到的,包括:关闭子模块,用于关闭所述恢复对象的运行状态;清空子模块,用于清空所述恢复对象的缓存数据;导入子模块,用于将备份数据导入至所述恢复对象;开启子模块,用于开启所述恢复对象的运行状态;
其中,所述备份数据由多个添加指令组成;添加指令用于向恢复对象的slab分配器中item添加key-value键值。
14.根据权利要求13所述的数据恢复装置,其特征在于,所述开启子模块包括:
校验子模块,用于对已导入所述恢复对象的备份数据进行校验;
开启子模块,用于若校验正确,则开启所述恢复对象的运行状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410009383.9A CN104765652B (zh) | 2014-01-08 | 2014-01-08 | 一种数据备份和数据恢复方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410009383.9A CN104765652B (zh) | 2014-01-08 | 2014-01-08 | 一种数据备份和数据恢复方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104765652A CN104765652A (zh) | 2015-07-08 |
CN104765652B true CN104765652B (zh) | 2018-12-04 |
Family
ID=53647497
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410009383.9A Active CN104765652B (zh) | 2014-01-08 | 2014-01-08 | 一种数据备份和数据恢复方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104765652B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105373450A (zh) * | 2015-11-30 | 2016-03-02 | 国网北京市电力公司 | 数据备份的方法及装置 |
CN108710546A (zh) * | 2018-04-25 | 2018-10-26 | 江苏联旺信息科技有限公司 | 数据备份方法及其数据备份服务器 |
CN108614750A (zh) * | 2018-04-27 | 2018-10-02 | 中国联合网络通信集团有限公司 | 宕机数据的恢复方法及装置 |
CN110413449B (zh) * | 2019-06-29 | 2022-02-18 | 苏州浪潮智能科技有限公司 | 一种基于文件存储系统的元数据备份与恢复方法 |
CN112214479B (zh) * | 2020-12-01 | 2021-07-13 | 陕西亚创医软信息科技有限公司 | 基于大数据的医疗数据管理系统及方法 |
CN112328435B (zh) * | 2020-12-07 | 2023-09-12 | 武汉绿色网络信息服务有限责任公司 | 目标数据备份和恢复的方法、装置、设备及存储介质 |
CN113467994B (zh) * | 2021-07-01 | 2022-12-23 | 建信金融科技有限责任公司 | 一种数据备份方法、系统及电子设备、存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102117309B (zh) * | 2010-01-06 | 2013-04-17 | 卓望数码技术(深圳)有限公司 | 一种数据缓存系统和数据查询方法 |
US8725951B2 (en) * | 2010-04-12 | 2014-05-13 | Sandisk Enterprise Ip Llc | Efficient flash memory-based object store |
CN102693170A (zh) * | 2011-03-21 | 2012-09-26 | 北京千橡网景科技发展有限公司 | 用于内存管理的方法和设备 |
CN102693168B (zh) * | 2011-03-22 | 2014-12-31 | 中兴通讯股份有限公司 | 一种数据备份恢复的方法、系统和服务节点 |
CN103166997A (zh) * | 2011-12-15 | 2013-06-19 | 同程网络科技股份有限公司 | memcache分布式缓存方法 |
-
2014
- 2014-01-08 CN CN201410009383.9A patent/CN104765652B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN104765652A (zh) | 2015-07-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104765652B (zh) | 一种数据备份和数据恢复方法及装置 | |
CN103562904B (zh) | 在服务的次要位置重放作业 | |
CN107844386A (zh) | 一种数据备份、恢复方法及装置 | |
CN111274077A (zh) | 一种磁盘阵列可靠性测试方法、系统、终端及存储介质 | |
CN110807064A (zh) | Rac分布式数据库集群系统中的数据恢复装置 | |
CN109144789A (zh) | 一种重启osd的方法、装置及系统 | |
CN111309524A (zh) | 分布式存储系统故障恢复方法、装置、终端及存储介质 | |
CN110347590A (zh) | 业务系统的接口测试控制方法及装置 | |
CN104793981B (zh) | 一种虚拟机集群的在线快照管理方法及装置 | |
CN113515316A (zh) | 一种新型边缘云操作系统 | |
CN109450724A (zh) | 一种nfs内存优化功能的测试方法及相关装置 | |
CN113064755A (zh) | 数据恢复方法、装置、设备、介质及程序产品 | |
CN105988885B (zh) | 基于补偿回滚的操作系统故障自恢复方法 | |
CN104407806A (zh) | 独立磁盘冗余阵列组硬盘信息的修改方法和装置 | |
CN109992388A (zh) | 一种用于核电厂安全级设备软件多任务管理系统 | |
CN115604086A (zh) | 监控报警故障自愈方法、装置、设备、介质和程序产品 | |
CN114996955A (zh) | 一种云原生混沌工程实验的靶场环境构建方法及装置 | |
CN110287066B (zh) | 一种服务器分区迁移方法及相关装置 | |
CN113238950A (zh) | 一种分布式系统测试的系统及方法、存储介质、电子设备 | |
CN111752911A (zh) | 一种基于Flume的数据传输方法、系统、终端及存储介质 | |
JP2004295272A (ja) | トランザクション制御方法 | |
CN111459556A (zh) | 一种基于客户现场的服务器bmc批量配置方法及系统 | |
RU2187835C1 (ru) | Способ ремонтного обслуживания компьютеров и система для его осуществления | |
CN111209139B (zh) | 基于版本控制管理系统的容灾方法及装置 | |
CN109446212A (zh) | 一种双活主机系统切换方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |