本发明涉及数据处理技术领域,尤其涉及一种数据备份的方法和装置。
背景技术:
随着终端技术的快速发展,各种类型的终端不断涌现,如台式机、笔记本电脑、手机、平板电脑等,这些终端已经成为人们日常工作和生活的重要工具,被人们使用的频率越来越高。用户在使用终端的过程中,会在终端中产生各种各样的数据,比如照片、视频文件、联系人等数据。随着时间的积累,终端中存储的数据越来越多,而终端的存储容量是有限的,所以,很多用户通过云服务将终端中的数据进行备份。为了防止数据丢失,目前大多数云服务已具备数据自动备份的功能,云服务会定期将系统数据库中的数据备份到备份数据库中。但是,目前云服务是将系统数据库中的全部数据整体备份到备份数据库中,而很多系统数据库中的数据未经过修改,不需要备份到备份数据库中,采用整体备份的方式不仅会导致备份过程的耗时过长,还会降低数据备份效率。
技术实现要素:
本发明的主要目的在于提出一种数据备份方法和装置,选择性的进行数据备份,较少数据备份的时间,提高数据备份的效率。
为实现上述目的,本发明提供的一种数据备份的装置,包括:
设置模块,用于在云服务的系统数据库中设置备份记录表,并在所述备份记录表中添加需要备份的用户记录;
获取模块,用于从所述备份记录表中获取未备份的用户记录,并从所述系统数据库中获取与所述用户记录相对应的备份数据;
备份模块,用于将所述备份数据存储到所述云服务中的备份数据库中。
进一步的,所述备份记录表中的每条用户记录包括:用户账号、数据类型和备份标识;
所述备份标识用于区分用户记录是否已备份。
进一步的,所述获取模块,具体包括:
第一获取单元,用于按照设定时间间隔,定期从所述备份记录表中获取未备份的用户记录,形成备份集合;
记录加锁单元,用于逐一判断所述备份集合中的每条用户记录是否加锁,若是,则将所述用户记录从所述备份集合中删除;若否,则对所述用户记录进行加锁处理;
第二获取单元,用于根据所述备份集合中的每条用户记录中的用户账号和数据类型,从所述系统数据库中获取与每条用户记录相对应的备份数据。
进一步的,所述装置还包括:
解锁模块,用于在所述备份数据存储到所述云服务中的备份数据库中之前,对与所述备份数据相对应的用户记录进行解锁操作。
进一步的,所述系统数据库为MySQL数据库,所述备份数据库为MongoDB数据库。
此外,为实现上述目的,本发明还提出一种数据备份的方法,包括:
在云服务的系统数据库中设置备份记录表,并在所述备份记录表中添加需要备份的用户记录;
从所述备份记录表中获取未备份的用户记录,并从所述系统数据库中获取与所述用户记录相对应的备份数据;
将所述备份数据存储到所述云服务中的备份数据库中。
进一步的,所述备份记录表中的每条用户记录包括:用户账号、数据类型和备份标识;
所述备份标识用于区分用户记录是否已备份。
进一步的,所述从所述备份记录表中获取未备份的用户记录,并从所述系统数据库中获取与所述用户记录相对应的备份数据,包括:
按照设定时间间隔,定期从所述备份记录表中获取未备份的用户记录,形成备份集合;
逐一判断所述备份集合中的每条用户记录是否加锁,若是,则将所述用户记录从所述备份集合中删除;若否,则对所述用户记录进行加锁处理;
根据所述备份集合中的每条用户记录中的用户账号和数据类型,从所述系统数据库中获取与每条用户记录相对应的备份数据。
进一步的,在所述备份数据存储到所述云服务中的备份数据库中之前,所述方法,还包括:
对与所述备份数据相对应的用户记录进行解锁操作。
进一步的,所述系统数据库为MySQL数据库,所述备份数据库为MongoDB数据库。
本发明提出的数据备份的方法和装置,可以通过备份记录表中的备份标识,选择性的将未备份的数据进行备份,和现有的将数据进行整体备份相比,本发明的备份方式可以较少数据备份的时间,提高数据备份的效率。此外,通过在备份过程中对数据进行加锁,以保证数据在备份过程中的一致性。备份数据库中的数据便于用户恢复系统数据库中丢失的数据,如果系统数据库中的数据发生了丢失现象,通过备份数据库中的备份数据可以将系统数据库中的数据恢复到任一备份节点时的数据。
附图说明
图1为本发明第一实施例的数据备份的装置的组成结构示意图;
图2为本发明第二实施例的数据备份的装置的组成结构示意图;
图3为本发明第三实施例的数据备份的方法的流程图;
图4为本发明第四实施例的数据备份的方法的流程图;
图5为本发明第五实施例的数据备份的方法的流程图;
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,本发明第一实施例提出一种数据备份的装置,具体包括以下组成部分:
设置模块101,用于在云服务的系统数据库中设置备份记录表,并在所述备份记录表中添加需要备份的用户记录。
具体的,所述系统数据库为云服务的一个数据库,用于存储所述云服务的各个用户的各种数据类型的最新版本的数据信息。所述备份记录表设置在所述系统数据库中,所述备份记录表包括需要备份的用户记录。
所述备份记录表中的每条用户记录包括:用户账号、数据类型和备份标识;
所述备份标识用于区分用户记录是否已备份。
所述数据类型包括:联系人、通话记录、短信、记事本、闹铃、日历和书签。当所述云服务中的任一用户对任一数据类型中的数据信息进行了修改、添加或删除操作时,则在所述备份记录表中生成一条与之对应的用户记录,所述用户记录包括所述用户的用户账号,进行修改、添加或删除操作的数据类型以及用于标识该条用户记录是否进行过备份的备份标识。
获取模块102,用于从所述备份记录表中获取未备份的用户记录,并从所述系统数据库中获取与所述用户记录相对应的备份数据。
具体的,获取模块102,具体包括:
第一获取单元,用于按照设定时间间隔,定期从所述备份记录表中获取未备份的用户记录,形成备份集合。
例如,若所述云服务设置为每天1点对所述系统数据库中的数据进行备份操作,则每天1点从所述备份记录表中获取所有备份标识为未备份的用户记录,所述所有备份标识为未备份的用户记录形成了备份集合。当所述备份记录表中的数据量很大时,可分批次的从所述备份记录表中获取标识为未备份的用户记录,每次只获取设定数量的标识为未备份的用户记录。
记录加锁单元,用于逐一判断所述备份集合中的每条用户记录是否加锁,若是,则将所述用户记录从所述备份集合中删除;若否,则对所述用户记录进行加锁处理。
第二获取单元,用于根据所述备份集合中的每条用户记录中的用户账号和数据类型,从所述系统数据库中获取与每条用户记录相对应的备份数据。
例如,若用户记录包括:用户A、联系人和未备份,即用户A对数据类型为联系人的数据信息进行了修改、添加或删除操作,则从所述系统数据库中找到所述用户A的最新版本的联系人数据信息,并将所述用户A的最新版本的联系人数据信息备份到备份数据库中。
进一步的,所述装置还包括:
解锁模块,用于在将所述备份数据存储到所述云服务的备份数据库中之前,对与所述备份数据相对应的用户记录进行解锁操作。通过对用户记录进行解锁和解锁操作,以保证与所述用户记录相对应的备份数据在备份过程中的一致性。
备份模块103,用于将所述备份数据存储到所述云服务中的备份数据库中。
具体的,备份模块103,用于:
将所述备份数据存储到备份数据库中,并将所述用户记录在所述备份记录表中的备份标识设置为已备份。
为了保证系统数据库中的数据与备份数据库中的数据的一致,只将已备份到所述备份数据库中的用户记录的备份标识设置为已备份。在一次数据备份操作中,需要将所述备份记录表中的所有备份标识为未备份的用户记录进行数据备份操作,直至所述备份记录表中没有备份标识为未备份的用户记录。
进一步的,所述系统数据库采用MySQL数据库,所述备份数据库采用MongoDB数据库。
如图2所示,本发明第二实施例提出一种数据备份的装置,具体包括以下组成部分:
定时模块201,用于设定备份时间,当云服务的系统时间达到设定备份时间时,自动执行数据备份操作。
例如,通过定时模块201将备份时间设置为1点,云服务在每日1点自动进行数据备份操作。
设置模块202,用于在云服务的MySQL数据库中设置备份记录表,并在所述备份记录表中添加需要备份的用户记录。每条用户记录包括:用户账号、数据类型和备份标识。
具体的,所述MySQL数据库用于存储所述云服务的各个用户的各种数据类型的数据信息。所述备份记录表包括需要备份的用户记录。
所述数据类型包括:联系人、通话记录、短信、记事本、闹铃、日历和书签。当所述云服务中的任一用户对任一数据类型中的数据信息进行了修改、添加或删除操作时,则在所述备份记录表中生成一条与之对应的用户记录,所述用户记录包括所述用户的用户账号,进行修改、添加或删除操作的数据类型以及用于标识该条用户记录是否进行过备份的备份标识。
获取模块203,用于从所述备份记录表中获取备份标识为未备份的用户记录,形成备份集合。
例如,每天1点从所述备份记录表中获取所有备份标识为未备份的用户记录,所述所有备份标识为未备份的用户记录形成了备份集合。当所述备份记录表中的数据量很大时,可分批次的从所述备份记录表中获取标识为未备份的用户记录,每次只获取设定数量的标识为未备份的用户记录。
加锁模块204,用于逐一判断所述备份集合中的每条用户记录是否已加锁,若是,则将所述用户记录从所述备份集合中删除,若否,则对所述用户记录进行加锁处理。
查找模块205,用于针对所述备份集合中已加锁的用户记录,逐一为每条已加锁的用户记录在所述MySQL数据库中查找与之对应的备份数据。
例如:若用户记录包括:用户A、联系人和未备份,即用户A在前一天内对数据类型为联系人的数据信息进行了修改、添加或删除操作,则从所述MySQL数据库中找到所述用户A的最新版本的联系人数据信息,并将所述用户A的最新版本的联系人数据信息备份到备份数据库中。
解锁模块206,用于对所述备份集合中的每条已加锁的用户记录进行解锁处理。
通过对用户记录进行解锁和解锁操作,可以防止在数据备份期间其用户对该类型数据进行修改、添加或删除操作,以保证与所述用户记录相对应的备份数据在备份过程中的一致性。
备份模块207,用于将所述备份集合中的与每条用户记录相对应的备份数据存储到Mongo数据库中,并将已进行备份处理的所述备份记录表中的用户记录标记为已备份。
为了保证MySQL数据库中的数据与Mongo数据库中的数据的一致,只将已备份到所述Mongo数据库中的用户记录的备份标识设置为已备份。在一次数据备份操作中,需要将所述备份记录表中的所有备份标识为未备份的用户记录进行数据备份操作,直至所述备份记录表中没有备份标识为未备份的用户记录。
如图3所示,本发明第三实施例提出一种数据备份的方法,具体包括以下步骤:
步骤S301:在云服务的系统数据库中设置备份记录表,并在所述备份记录表中添加需要备份的用户记录。
具体的,所述系统数据库为云服务的一个数据库,用于存储所述云服务的各个用户的各种数据类型的最新版本的数据信息。所述备份记录表设置在所述系统数据库中,所述备份记录表包括需要备份的用户记录。
所述备份记录表中的每条用户记录包括:用户账号、数据类型和备份标识;
所述备份标识用于区分用户记录是否已备份。所述数据类型包括:联系人、通话记录、短信、记事本、闹铃、日历和书签。当所述云服务中的任一用户对任一数据类型中的数据信息进行了修改、添加或删除操作时,则在所述备份记录表中生成一条与之对应的用户记录,所述用户记录包括所述用户的用户账号,进行修改、添加或删除操作的数据类型以及用于标识该条用户记录是否进行过备份的备份标识。
步骤S302:从所述备份记录表中获取未备份的用户记录,并从所述系统数据库中获取与所述用户记录相对应的备份数据。
具体的,步骤S302,具体包括:
步骤A1:按照设定时间间隔,定期从所述备份记录表中获取未备份的用户记录,形成备份集合。
例如,若所述云服务设置为每天1点对所述系统数据库中的数据进行备份操作,则每天1点从所述备份记录表中获取所有备份标识为未备份的用户记录,所述所有备份标识为未备份的用户记录形成了备份集合。当所述备份记录表中的数据量很大时,可分批次的从所述备份记录表中获取标识为未备份的用户记录,每次只获取设定数量的标识为未备份的用户记录。
步骤A2:逐一判断所述备份集合中的每条用户记录是否加锁,若是,则将所述用户记录从所述备份集合中删除;若否,则对所述用户记录进行加锁处理。
步骤A3:根据所述备份集合中的每条用户记录中的用户账号和数据类型,从所述系统数据库中获取与每条用户记录相对应的备份数据。
例如,若用户记录包括:用户A、联系人和未备份,即用户A对数据类型为联系人的数据信息进行了修改、添加或删除操作,则从所述系统数据库中找到所述用户A的最新版本的联系人数据信息,并将所述用户A的最新版本的联系人数据信息备份到备份数据库中。
进一步的,所述方法还包括:
在将所述备份数据存储到所述云服务的备份数据库中之前,对与所述备份数据相对应的用户记录进行解锁操作。通过对用户记录进行解锁和解锁操作,以保证与所述用户记录相对应的备份数据在备份过程中的一致性。
步骤S303:将所述备份数据存储到所述云服务中的备份数据库中。
具体的,步骤S303,包括:
将所述备份数据存储到备份数据库中,并将所述用户记录在所述备份记录表中的备份标识设置为已备份。
为了保证系统数据库中的数据与备份数据库中的数据的一致,只将已备份到所述备份数据库中的用户记录的备份标识设置为已备份。在一次数据备份操作中,需要将所述备份记录表中的所有备份标识为未备份的用户记录进行数据备份操作,直至所述备份记录表中没有备份标识为未备份的用户记录。
进一步的,所述系统数据库采用MySQL数据库,所述备份数据库采用MongoDB数据库。
如图4所示,本发明第四实施例提出一种数据备份的方法,具体包括以下步骤:
步骤S401:设定备份时间,当云服务的系统时间达到设定备份时间时,自动执行数据备份操作。
例如,当把备份时间设置为1点时,云服务在1点时自动进行数据备份操作。
步骤S402:在云服务的MySQL数据库中设置备份记录表,并在所述备份记录表中添加需要备份的用户记录。每条用户记录包括:用户账号、数据类型和备份标识。
具体的,所述MySQL数据库用于存储所述云服务的各个用户的各种数据类型的数据信息。所述备份记录表包括需要备份的用户记录。
所述数据类型包括:联系人、通话记录、短信、记事本、闹铃、日历和书签。当所述云服务中的任一用户对任一数据类型中的数据信息进行了修改、添加或删除操作时,则在所述备份记录表中生成一条与之对应的用户记录,所述用户记录包括所述用户的用户账号,进行修改、添加或删除操作的数据类型以及用于标识该条用户记录是否进行过备份的备份标识。
步骤S403:从所述备份记录表中获取备份标识为未备份的用户记录,形成备份集合。
例如,每天1点从所述备份记录表中获取所有备份标识为未备份的用户记录,所述所有备份标识为未备份的用户记录形成了备份集合。当所述备份记录表中的数据量很大时,可分批次的从所述备份记录表中获取标识为未备份的用户记录,每次只获取设定数量的标识为未备份的用户记录。
步骤S404:逐一判断所述备份集合中的每条用户记录是否已加锁,若是,则将所述用户记录从所述备份集合中删除,若否,则对所述用户记录进行加锁处理。
步骤S405:针对所述备份集合中已加锁的用户记录,逐一为每条已加锁的用户记录在所述MySQL数据库中查找与之对应的备份数据。
例如:若用户记录包括:用户A、联系人和未备份,即用户A对数据类型为联系人的数据信息进行了修改、添加或删除操作,则从所述MySQL数据库中找到所述用户A的最新版本的联系人数据信息,并将所述用户A的最新版本的联系人数据信息备份到备份数据库中。
步骤S406:对所述备份集合中的每条已加锁的用户记录进行解锁处理。
通过对用户记录进行解锁和解锁操作,可以防止在数据备份期间其用户对该类型数据进行修改、添加或删除操作,以保证与所述用户记录相对应的备份数据在备份过程中的一致性。
步骤S407:将所述备份集合中的与每条用户记录相对应的备份数据存储到Mongo数据库中,并将已进行备份处理的所述备份记录表中的用户记录标记为已备份。
为了保证MySQL数据库中的数据与Mongo数据库中的数据的一致,只将已备份到所述Mongo数据库中的用户记录的备份标识设置为已备份。在一次数据备份操作中,需要将所述备份记录表中的所有备份标识为未备份的用户记录进行数据备份操作,直至所述备份记录表中没有备份标识为未备份的用户记录。
重复步骤S403至步骤S407直至所述备份记录表中的所有用户记录均已标记为已备份,即前一天未存在没有备份的用户记录。
如图5所示,本发明第五实施例提出一种数据备份的方法,具体包括以下步骤:
步骤S501:当云服务的系统时间达到1:00时,开始执行数据备份操作;
步骤S502:从云服务的MySQL数据库中的每日备份记录表中获取前100条未备份的用户记录,形成备份集合;
所述每日备份记录表设置在所述MySQL数据库中,所述每日备份记录表中记录了从前一天1:00至当天1:00期间,在所述云服务中产生的需要备份的用户记录;每条用户记录包括:用户账号、数据类型和备份标识。
所述用户账号用户标识在所述云服务中注册的用户信息;所述数据类型包括:联系人、通话记录、短信、记事本、闹铃、日历和书签;所述备份标识用于区分用户记录是否已备份。
所述MySQL数据库用于存储所述云服务的各个用户的各种数据类型的最新版本的数据信息。
当所述云服务中的任一用户对任一数据类型中的数据信息进行了修改、添加或删除操作时,则在所述每日备份记录表中生成一条与之对应的用户记录,所述用户记录包括所述用户的用户账号,进行修改、添加或删除操作的数据类型以及用于标识该条用户记录是否进行过备份的备份标识。
步骤S503:判断所述备份集合中是否存在用户记录,若是,则执行步骤S504,若否,则结束数据备份操作。
步骤S504:遍历所述备份集合中的每条用户记录,判断用户记录是否加锁,若是,则将加锁的用户记录从所述备份集合中删除,若否,则执行步骤S505。
步骤S505:对未加锁的用户记录进行加锁处理。
步骤S506:在所述MySQL数据库中查找与所述备份集合中每条用户记录相对应的备份数据。
步骤S507:对所述备份集合中的每条用户记录进行解锁处理。
通过对用户记录进行解锁和解锁操作,可以防止在数据备份期间其用户对该类型数据进行修改、添加或删除操作,以保证与所述用户记录相对应的备份数据在备份过程中的一致性。
步骤S508:将与所述备份集合中的各个用户记录相对应的在述MySQL数据库中的备份数据批量备份到所述云服务中的MongoDB数据库中。
步骤S509:将所述备份集合中的已进行备份处理的用户记录的备份标记标记为已备份。
为了保证MySQL数据库中的数据与Mongo数据库中的数据的一致,只将已备份到所述Mongo数据库中的用户记录的备份标识设置为已备份。在一次数据备份操作中,需要将所述备份记录表中的所有备份标识为未备份的用户记录进行数据备份操作,直至所述备份记录表中没有备份标识为未备份的用户记录。
重复步骤S502至步骤S509直至所述备份记录表中的所有用户记录均已标记为已备份,即前一天未存在没有备份的用户记录。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。