内存数据备份方法及内存数据备份系统技术方案

技术编号:8215551 阅读:146 留言:0更新日期:2013-01-17 13:05
本发明专利技术公开了一种内存数据备份方法及内存数据备份系统。该内存数据备份方法包括:接收数据更新命令,为数据更新命令分配游标;构建数据更新命令与分配的游标的映射关系,生成序列文件;将生成的序列文件输出,以使数据服务器根据接收的序列文件中的数据更新命令,更新数据;接收数据更新成功信息,存储数据更新成功的数据更新命令与游标的映射关系。应用本发明专利技术,可以避免数据丢失、提升数据的同步性能。

【技术实现步骤摘要】

本专利技术涉及数据存储技术,尤其涉及一种内存数据备份方法及内存数据备份系统
技术介绍
目前,内存数据持久化存储及备份主要采用纯内存存储引擎,主要通过远程字典服务器(Redis, Remote Dictionary Server)以及关系型数据库管理系统(Mysql)等构建主从结构的内存数据库系统,采用主从复制方式实现多机冗余的高可靠性(HA,HighAvailability),其中,Mysql的主从复制是通过增量备份(binlog)方式实现,binlog通过以二进制文件方式记录结构化查询语言(SQL, Structured Query Language)语句来进行数据备份,所有数据更新在主服务器上执行,在经过预先设置的时间周期后,即定期转储(dump)模式,定期将更新的内存数据批量写入,主服务器将数据更新的binlog发送到从服 务器,以使从服务器进行相同的数据更新,从而达到主从一致的目的,实现主服务器与从服务器的同步。Redis也采用主从方式进行内存数据备份,通过类似Mysql的binlog方式进行主从同步,主从同步实现机制与Mysql的binlog同步机制类似,不同的是,Redis通过构建不断添加模式(A0F, Append Only Mode)文件进行主从服务器同步。在进行内存数据备份时,现有技术通常采用读写分离的数据备份方式,在内存数据备份系统中,可以设置一台主服务器,并配置有多台从服务器,所有的数据更新业务逻辑访问主服务器,查询业务逻辑仅访问从服务器,也称为读写分离机制。图I为现有内存数据备份系统结构示意图。参见图1,该内存数据备份系统包括主服务器以及从服务器,较佳地,主服务器的数量为一台,从服务器的数量为一台或多台。数据更新业务逻辑将更新的数据写入主服务器,主服务器通过binlog方式存储更新的数据,经过预先设置的时间周期,将更新的数据通过binlog方式写入从服务器,实现内存数据备份,以使从服务器与主服务器保持数据同步,查询业务逻辑通过访问从服务器,获取查询所需的数据。现有的内存数据备份系统,采用当前主流的Mysql的读写分离机制方案,当主服务器宕机或故障发生异常时,根据预先设置的切换策略,触发从多个从服务器中,选择一个从服务器,并将其升级为主服务器,从而接替主服务器的业务功能,在发生异常的主服务器恢复正常后,再次触发升级为主服务器的从服务器,使其注销主服务器的业务功能,恢复为数据备份服务器。由上述可见,现有的内存数据备份系统,当主服务器宕机时,由于主服务器与从服务器之间存在的binlog同步延迟,即在两次时间周期期间发生的数据更新,由于主服务器还未能及时写入从服务器,将会全部丢失,从而无法保证主服务器中所有更新数据的binlog都能够同步到从服务器上,导致被升级为主服务器的从服务器中,其备份的数据不是最新的,与主服务器中的数据不同步,造成了部分更新数据的丢失,主从服务器同步性较差;对于Redis的主从同步方案,通过同步AOF文件实现主从服务器的数据同步,一方面,当主服务器与从服务器之间的连接暂时中断时,需要从服务器将主服务器的所有AOF文件从头再重新同步一遍,这对于日更新上亿次的重负荷内存数据备份系统,完全同步AOF文件成为很重的负担,包括网络流量上的和数据恢复时间上的负担;另一方面,同步AOF文件的数据同步机制,也存在与Mysql主从同步类似的问题,当主服务器宕机后,从服务器如果直接升级为主服务器,存在部分数据丢失的问题,使得主从服务器同步性较差。
技术实现思路
本专利技术的实施例提供一种内存数据备份方法,避免数据丢失、提升数据的同步性倉泛。本专利技术的实施例还提供一种内存数据备份系统,避免数据丢失、提升数据的同步性能。为达到上述目的,本专利技术实施例提供的一种内存数据备份方法,包括 接收数据更新命令,为数据更新命令分配游标;构建数据更新命令与分配的游标的映射关系,生成序列文件;将生成的序列文件输出,以使数据服务器根据接收的序列文件中的数据更新命令,更新数据;接收数据更新成功信息,存储数据更新成功的数据更新命令与游标的映射关系。其中,所述为数据更新命令分配游标包括判断当前接收的数据更新命令是否为接收的第一条数据更新命令,如果是,为接收的数据更新命令分配游标序列号,并记录分配的游标序列号信息;如果不是,将记录的游标序列号进行累加,为接收数据更新命令设置累加的游标序列号,记录累加的游标序列号信息。其中,所述为数据更新命令分配游标包括判断预先存储的不断添加模式AOF文件中是否存在写入的数据更新命令,如果不存在,为接收的数据更新命令分配游标序列号;如果存在,获取AOF文件中当前已写入的数据更新命令的游标序列号信息,对获取的游标序列号进行累加,为接收的数据更新命令设置累加的游标序列号。其中,所述序列文件采用轻量级的数据交换格式JSON生成,并按照行进行数据更新命令划分。其中,在所述将生成的序列文件输出的步骤之前,进一步包括根据生成的序列文件,查询存储的映射关系,获取与序列文件中游标序列号相匹配的数据服务器信息,将数据服务器信息携带在序列文件中。其中,在所述将生成的序列文件输出的步骤之后,进一步包括存储该序列文件并进行计时;如果在预先设置的计时时间内没有接收到数据服务器返回的数据更新成功信息,将当前存储的序列文件向所述数据服务器进行重传。其中,在所述更新数据的步骤之后,该方法进一步包括数据服务器存储数据更新成功的数据更新命令与游标的映射关系;在下一时间周期,所述数据服务器根据接收的序列文件中的数据更新命令,更新数据包括数据服务器接收序列文件,获取序列文件中包含的游标序列号,判断获取的游标序列号与存储的游标序列号;如果序列文件中包含的游标序列号与存储的游标序列号相同,或者,序列文件中包含中的游标序列号与存储的游标序列号相差两个以上累加单位,丢弃该序列文件,向游标分配器返回存储的游标序列号信息,以使游标分配器将接收的游标序列号之后的序列文件通过分发器向该数据服务器发送; 如果序列文件中包含的游标序列号大于存储的游标序列号一个累加单位,根据接收的序列文件中的数据更新命令,更新数据。其中,所述方法进一步包括监测到数据服务器重启服务后,获取存储的游标序列号,触发向游标分配器返回存储的游标序列号信息,以使游标分配器将接收的游标序列号之后的序列文件通过分发器向该数据服务器发送。一种内存数据备份系统,该内存数据备份系统包括接收服务器、游标分配器、分发器、游标存储器以及数据服务器,其中,接收服务器,用于接收数据更新命令,输出至游标分配器;游标分配器,用于为依序接收的数据更新命令分配相应的游标,构建数据更新命令与游标的映射关系,生成序列文件,输出至分发器;分发器,用于接收游标分配器输出的序列文件,将序列文件中的数据更新命令向数据服务器输出,在接收到数据更新成功信息后,将数据更新命令与游标的映射关系输出至游标存储器;游标存储器,用于以数据服务器为标识,存储数据更新成功的数据更新命令与游标的映射关系;数据服务器,用于根据接收的数据更新命令,更新数据,在数据更新成功之后,向分发器返回数据更新成功信息。所述游标分配器包括接收模块、判断模块、分配模块、累加模块、序列文件生成模块以及发送模块,其中,接收模块,用于接收数据更新命令本文档来自技高网
...

【技术保护点】
一种内存数据备份方法,该方法包括:接收数据更新命令,为数据更新命令分配游标;构建数据更新命令与分配的游标的映射关系,生成序列文件;将生成的序列文件输出,以使数据服务器根据接收的序列文件中的数据更新命令,更新数据;接收数据更新成功信息,存储数据更新成功的数据更新命令与游标的映射关系。

【技术特征摘要】

【专利技术属性】
技术研发人员:汤晓刚
申请(专利权)人:新浪网技术中国有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1