具体实施方式
为便于对本发明实施例的理解,下面将结合附图以几个具体实施例为例做进一步的解释说明,且各个实施例并不构成对本发明实施例的限定。
实施例一
本发明实施例的实施硬件上依赖于一个存储介质,该存储介质可以为:UKey或U盘等,其他部分全部由软件来实现。本发明实施例提供的一种数据备份和恢复方案的分层设计实现示意图如图1所示,其中,“业务数据层”表示本方案中待备份的两类数据:数据文件,包括数据库文件和其他数据文件,采用定时备份;数据表操作,包括数据表操作类型(增加、修改、删除)和操作数据,采用实时备份。“备份与恢复管理层”包括了备份与恢复操作相关的接口、实现、数据转换,以及数据的异常检查和备份介质的管理等。“介质层”则提供了对备份介质的通用读写访问接口,使得其之上的功能实现与硬件无关。图1中箭头的方向表示数据流向。
本发明实施例提供的一种数据备份和恢复的方法的处理流程示意图如图2所示,包括如下的处理步骤:
步骤21、当设定的定时备份条件满足后,对数据文件进行定时备份获取备份数据文件,将所述备份数据文件存储在存储介质中,所述数据文件包括数据库文件。
所述定时备份条件包括:定时时间到、定时事件发生或实时备份数据出现异常,上述定时时间可以为1天或者1周或1月等。备份数据文件的方式可以采用直接拷贝的方式,上述备份数据文件以原始文件格式存储在上述存储介质中。
在实际应用中,可以通过定时备份数据转换接口将数据文件转换为该数据文件对应的备份数据文件,上述定时备份数据转换接口可以为:
Int FileBackup(char*filename);//备份指定的数据文件。
步骤22、在对数据库中的数据表进行数据表操作后,对所述数据表操作进行实时备份获取数据表操作备份文件,将所述数据表操作备份文件存储在存储介质中。
备份“数据表操作”紧跟在各业务过程的数据表操作之后,即每执行一次数据表操作紧随一次“数据表操作”的备份操作,达到了实时备份的目的。
在实际应用中,可以通过实时备份数据转换接口将数据表操作对象转换为该数据表操作对应的数据表操作备份文件,上述实时备份数据转换接口可以为:
Int TabletoBakData(char*bakdata,int*length,void*table);//将数据表操作对象转换为备份文件格式,即写入备份文件。
Int AddRecord(void*table);//备份一次添加记录的数据表操作,调用TabletoBakData;
Int Update(char*sql);//备份一次修改记录的数据表操作
Int Delete(char*sql);//备份一次删除记录的数据表操作
所述数据表操作中的数据项如下述表1所示:
表1
实时备份的数据表操作备份文件以XML(可扩展标记语言,ExtensibleMarkup Language)文件、JASON文件或自定义的二进制文件存储在上述存储介质中,即实时备份文件可选择XML、JASON或自定义格式的一种。
上述数据表操作备份文件可以以记录为单位进行存储,每条记录对应一次数据表的操作。上述数据表操作备份文件的记录可以按照数据表名称进行分类,并且按照操作时间从先到后的顺序进行排序。
步骤23、对定时备份的备份数据文件进行恢复,获取数据库中的各个数据表信息,对实时备份的数据表操作备份文件进行恢复,获取各个数据表的数据表操作信息。
在进行数据恢复时,对定时备份的备份数据文件进行恢复,获取数据库中的各个数据表信息。
在实际应用中,可以通过定时恢复数据转换接口将数据文件对应的备份数据文件转换为数据文件,上述定时备份数据转换接口可以为:
Int FileRestore(char*filename);//恢复指定的数据文件
还需要对实时备份的数据表操作备份文件进行恢复,获取各个数据表的数据表操作信息。将恢复出来的数据表操作按照数据表的名称进行分类,并且按照操作时间从先到后的顺序进行排序。
在实际应用中,可以通过实时恢复数据转换接口将数据表操作对应的数据表操作备份文件转换为数据表操作,上述实时备份数据转换接口可以为:
Int Restore(int operation,char*bakData);//恢复一条数据表操作记录,调用BakDatatoTable;
然后,针对恢复出来的数据表,按照操作时间从先到后的顺序依次执行该数据表对应的恢复出来的数据表操作,依次对每个数据表进行上述操作,从而恢复出整个数据库的最终状态。
“数据文件”的备份和“数据表操作”的备份都是原子操作,应保证在备份过程中不发生断电等中断,否则将导致备份数据不完整。
在实际应该中,可以对数据表操作备份文件进行数据异常检查,数据异常检查指的是检查实时备份的数据是否正确完整。系统每次启动时对比数据库中的各个数据表的当前数据与备份介质中存储的对应的数据表操作备份文件之间有无偏差,如发现有不一致的情况,则强制执行一次“数据文件”的备份操作。一旦“数据文件”备份成功,则清除备份介质中存储的对应的数据表操作备份文件。
实施例二
该实施例提供的一种数据备份和恢复的装置的具体结构如图3所述,包括如下的模块:
定时备份模块31,用于当设定的定时备份条件满足后,对数据文件进行定时备份获取备份数据文件,所述数据文件包括数据库文件。
实时备份模块32,用于在对数据库中的数据表进行数据表操作后,对所述数据表操作进行实时备份获取数据表操作备份文件;
对实时备份的数据表操作备份文件按照数据表名称进行分类,并且按照操作时间从先到后的顺序进行排序,所述数据表操作包括:数据表名称、操作类型、操作时间、SQL条件字段、SQL修改值字段和数据对象,所述操作类型包括:添加、修改和删除。
存储介质33,用于存储所述备份数据文件和数据表操作备份文件。
恢复处理模块34,用于对定时备份的备份数据文件进行恢复,获取数据库中的各个数据表信息,对实时备份的数据表操作备份文件进行恢复,获取各个数据表的数据表操作信息;
针对恢复出来的数据表,按照操作时间从先到后的顺序依次执行该数据表对应的恢复出来的数据表操作,从而恢复出整个数据库的最终状态。
异常检测处理模块35,用于检查数据库中的各个数据表的当前数据与备份介质中存储的对应的数据表操作备份文件之间有无偏差,如果有偏差,则执行一次所述数据库中的数据文件的备份操作,该备份操作完成后,则清除备份介质中存储的对应的数据表操作备份文件。
本领域普通技术人员可以理解:附图只是一个实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域普通技术人员可以理解:实施例中的设备中的模块可以按照实施例描述分布于实施例的设备中,也可以进行相应变化位于不同于本实施例的一个或多个设备中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
用本发明实施例的装置进行数据备份和恢复的具体过程与前述方法实施例类似,此处不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
综上所述,本发明实施例采用了定时备份和实时备份相结合的方法,既保证了备份的完整性,又保证了备份的效率,做到了即损坏即恢复、恢复实现简单和恢复时间较短,可以实现对上述税控收款机、网络开票机等涉税终端设备有效地进行数据备份与恢复。
本发明实施例根据具体网络发票系统方案的要求,可使用网络开票机固有的UKey或U盘等通用介质做存储介质,将网络开票机中的数据库以及其他数据文件进行实时备份,一旦出现前述故障,即可通过UKey或U盘上的备份信息快速将备份数据恢复到另一台全新的备用网络开票机中,使其达到与原网络开票机完全相同的状态。
本发明实施例充分考虑到了中低性能嵌入式系统运行速度低的特点,以及备份不能耽误开票业务的要求,可及时满足用户开票需要。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。