[发明专利]一种内存数据的备份方法和装置有效
申请号: | 201210041910.5 | 申请日: | 2012-02-23 |
公开(公告)号: | CN103294570A | 公开(公告)日: | 2013-09-11 |
发明(设计)人: | 朱建平;时冰川;吴悦;钟超宇;谢明 | 申请(专利权)人: | 深圳市腾讯计算机系统有限公司 |
主分类号: | G06F11/14 | 分类号: | G06F11/14;G06F12/02 |
代理公司: | 北京德琦知识产权代理有限公司 11018 | 代理人: | 张玉波;宋志强 |
地址: | 518057 广东省深圳市南*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 内存 数据 备份 方法 装置 | ||
技术领域
本发明涉及计算机技术领域,尤其涉及一种内存数据的备份方法和装置。
背景技术
在现代互联网分布式数据存储系统中,通常数据最终存储于磁盘中,包括IDE,SATA,SCSI,SAS磁盘等。这些磁盘只能支持有限的的随机磁盘IO读写次数,而在互联网应用中,用户产生的数据量大,对数据的访问量大,而在磁盘上的大量的读写容易导致磁盘IO能力出现瓶颈。
为了降低磁盘IO负载,通常在将数据存储到磁盘之前,在前端模块增加内存模块,用于缓存用户产生的数据,然后由内存模块将缓存的数据写入到磁盘中。内存模块的访问速度是磁盘访问速度的10000倍以上,这样能大幅提高系统的处理能力。并且,利用内存模块,能有效的合并对磁盘的IO操作,降低磁盘的IO负载。但是,内存模块在断电后就丢失了数据,这对于任何关注数据安全的服务来说都是不可接受的,特别是如果内存模块中还有未写入到磁盘中的数据,后果会非常严重。
为了保证数据安全,一般采用备份数据(dump)+流水日志(binlog)的方式来保证内存数据在机器掉电后仍能恢复,即将内存模块中尚未写入磁盘中的数据进行备份,并将备份数据写入到磁盘中,然后再记录对内存模块操作的流水日志,一旦机器掉电,则能根据内存模块最近一次的备份数据和内存模块的流水日志进行恢复。
具体地,现有采用的内存数据的备份方法是,定时全量备份内存数据,即在设置的时间点到来之后,对内存块中的所有数据进行全量扫描,并将内存块中的所有数据写入到备份文件(dump文件)中,即进行dump操作。并且,有的备份方法在内存块中的所有数据都扫描完毕并写入到备份文件后,清理该内存块原有的流水日志,并开始记录新的流水日志,还有的备份方法在备份时间点到来时,就清理该内存块原有的流水日志,并开始记录新的流水日志。
当机器掉电后,内存块中的数据丢失,此时,需要根据dump文件和流水日志(binlog文件)恢复内存块中丢失的数据。
目前,恢复内存块中丢失的数据的方法具体包括:
首先读取dump文件,将其中的相关数据重新设置到内存中,之后再读取binlog文件,在当前内存数据基础上根据binlog文件所记录的操作,来重复以前的行为,从而恢复内存块中丢失的数据。
可见,目前内存数据的备份方法中,由于是定时对内存块中的数据进行备份(dump),在进行dump的时间点到来后,原有binlog文件会被归零,并开始记录新的binlog文件,即将新的操作流水不断写入到新的binlog文件中,利用新的binlog文件覆盖原有的binlog文件。
可见,在两次的dump期间,binlog文件大小会一直增长,存在把磁盘分区容量耗尽的风险,在这种情况下,新的操作流水实质上没有写入到binlog文件中。如果新的操作流水没有写入到binlog文件中,而下一dump时间点又没有到来,那么一旦此时机器掉电,将会造成数据丢失。因此,现有的内存数据备份方法,仍然存在着数据安全隐患。
另外,现有的某些内存数据备份方法中,在内存数据的备份时间点到来时,会马上将原有的操作流水归零,然后开始记录新的操作流水,但是,由于内存数据的备份过程也需要一段时间才能完成,如果在备份过程中,出现了掉电情况,则原有的内存数据未能成功备份,即dump文件不完整,而原有的操作流水又已经被归零,因此,将导致无法进行数据恢复,最终导致数据丢失,存在着另一处数据安全隐患。
再者,目前的内存数据备份方法,采用的是一次全量备份的方法。具体请参见图1。
图1是目前的内存数据的组织结构图。
如图1所示,现有的内存数据采用hash方式进行组织,节点(Node)存储了数据索引(key),chunk中存储了数据key对应的实际数据。不同的数据key被hash函数均匀的分布到不同的桶(bucket)中,每个bucket中的node通过链指针进行串连。
服务的主进程在进行dump数据时,会根据内存中记录的bucket数,遍历所有的桶,其中,对每个bucket,遍历落入该bucket中的node,根据node获取数据key及value,然后保存到dump文件中,如此直到所有的桶都遍历完毕。
可见,现有的一次性全量备份内存数据的方法,还存在着一个问题:当内存数据较多时,遍历bucket及node的过程可能会持续数分钟,在数分钟内,由于服务的主进程被占用,导致主进程阻塞,即处于一种不可中断的等待状态,影响主进程进行业务响应,导致了服务不可用。
发明内容
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳市腾讯计算机系统有限公司,未经深圳市腾讯计算机系统有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210041910.5/2.html,转载请声明来源钻瓜专利网。
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置