CN106970855A - 数据恢复的方法和装置 - Google Patents
数据恢复的方法和装置 Download PDFInfo
- Publication number
- CN106970855A CN106970855A CN201610022360.0A CN201610022360A CN106970855A CN 106970855 A CN106970855 A CN 106970855A CN 201610022360 A CN201610022360 A CN 201610022360A CN 106970855 A CN106970855 A CN 106970855A
- Authority
- CN
- China
- Prior art keywords
- dml
- timestamp
- operations
- tenant
- time
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/835—Timestamp
Abstract
本发明实施例提供了一种数据恢复的方法和装置,包括:获取租户输入的恢复时间点;在第一缓冲区中的至少一个第一时间戳中确定在所述恢复时间点和当前时间点之间的至少一个第二时间戳,其中,所述至少一个第一时间戳中的每个第一时间戳对应一个第一反数据操纵语言DML操作,所述第一反DML操作为将至少一个第二反DML操作合并之后的反DML操作;按时间顺序反向依次执行与所述至少一个第二时间戳一一对应的至少一个所述第一反DML操作。本发明实施例根据租户的恢复时间确定恢复数据需要执行的简化的反DML操作对应的时间戳,通过执行该时间戳对应的简化的反DML操作,能够提高多租户共享数据表场景下恢复数据的效率。
Description
技术领域
本发明涉及数据库领域,更具体的,涉及数据库领域中的数据恢复的方法和装置。
背景技术
在云计算环境下,数据库支持多租户。租户信息隔离可以通过不同租户使用单独的服务器、不同租户使用同一服务器上的不同数据库和不同租户使用同一数据库三种途径实现。对于数据量较小的租户,为了减小维护成本,采用多个租户使用同一数据库的方式存储数据,并且该多个租户共享数据表。
为了避免在退回一个租户的误操作时影响数据库中的其他租户,可以在多个租户共享一个数据表的情况下,为每个租户建立独立的数据库访问账号。服务器在数据库上的数据表上记录每个租户的所有的数据操纵语言(Data Manipulation Language,DML)操作。在生成一个DML操作之后,生成并记录该DML操作相应的反DML操作。例如,租户执行了一条插入(insert)操作,那么服务器会生成并记录对应该insert操作的删除(delete)操作。在执行该反DML操作后,数据库可以回到该执行DML操作之前的状态。
但是,当需要恢复的时间点和当前时刻之间执行了大量的DML操作时,需要逐条执行每个DML操作对应的反DML操作,恢复效率非常低。
发明内容
本发明实施例提供了一种数据恢复的方法,通过执行简化的反DML操作,能够提高多租户共享数据表场景下将恢复数据的效率
第一方面,本发明实施例提供了一种数据恢复的方法,包括:获取租户输入的恢复时间点;在第一缓冲区中的至少一个第一时间戳中确定在所述恢复时间点和当前时间点之间的至少一个第二时间戳,其中,所述至少一个第一时间戳中的每个第一时间戳对应一个第一反数据操纵语言DML操作,所述第一反DML操作为将至少一个第二反DML操作合并之后的反DML操作;按时间顺序反向依次执行与所述至少一个第二时间戳一一对应的至少一个所述第一反DML操作。
本发明实施例根据租户的恢复时间确定恢复数据需要执行的简化的反DML操作对应的时间戳,执行该时间戳对应的简化的反DML操作,能够提高多租户共享数据表场景下恢复数据的效率。
结合第一方面,在第一方面的第一种实现方式中,在所述获取租户输入的恢复时间点之前,还包括:在第二缓冲区中记录与至少一个DML操作一一对应的所述至少一个第二反DML操作,和与所述至少一个DML操作一一对应的至少一个第三时间戳,其中,所述至少一个第三时间戳与所述至少一个第二反DML操作一一对应;将所述至少一个第二反DML操作合并为所述第一反DML操作,所述第一反DML操作对应的第一时间戳为所述至少一个第三时间戳中的一个;将所述第一反DML操作和所述第一反DML操作对应的第一时间戳存储到所述第一缓冲区。
结合第一方面,在第一方面的第二种实现方式中,还包括:在所述第二缓冲区中的所述至少一个第三时间戳中确定在所述恢复时间点之后并且在所述至少一个第二时间戳之前的至少一个第四时间戳;按时间顺序反向依次执行与所述至少一个第四时间戳一一对应的至少一个所述第二反DML操作。
当执行完第二时间戳对应的反DML操作后,数据库不能恢复到恢复时间点时,可以继续执行上述第四时间戳对应的反DML操作,并且最终将数据库恢复至恢复时间点之前的状态。
结合第一方面,在第一方面的第三种实现方式中,所述将所述至少一个第二反DML操作合并为所述第一反DML操作,包括:记录所述至少一个第二反DML操作的数量;当所述数量超过第一阈值时,将所述至少一个第二反DML操作合并为一个所述第一反DML操作。
这里,合并之前的至少一个第二反DML操作的数量为该第一阈值,并且该第一阈值的数值大于或等于2,即将至少两个第二反DML操作合并为一个第一反DML操作。
结合第一方面,在第一方面的第四种实现方式中,所述将所述至少一个第二反DML操作合并为所述第一反DML操作,包括:在记录所述至少一个第二反DML操作时,记录时间;当所述时间超过第二阈值时,将所述至少一个第二反DML操作合并为一个所述第一反DML操作。
这里,合并之前的至少一个第二反DML操作的数量可以为一个,也可以为多个。即当记录的一个时间周期内的第二反DML只有一个时,将该一个第二反DML操作可以直接作为合并后的第一反DML操作,当记录的时间周期内的第二反DML操作有多个时,将该多个第二反DML操作合并为一个第一反DML操作。
结合第一方面,在第一方面的第五种实现方式中,所述第一反DML操作对应的第一时间戳为所述至少一个第三时间戳中最早的一个。
结合第一方面,在第一方面的第六种实现方式中,在所述在第一缓冲区中的至少一个第一时间戳中确定在所述恢复时间点和当前时间点之间的至少一个第二时间戳之前,还包括:对所述租户进行加锁,禁止所述租户对数据库请求DML操作。
结合第一方面,在第一方面的第七种实现方式中,在将数据恢复至所述恢复时间点的状态时,还包括:对所述租户进行解锁,允许所述租户对数据库请求DML操作。
结合第一方面,在第一方面的第八种实现方式中,所述反DML操作包括插入操作、删除操作或反向更新操作,所述插入操作的DML操作为删除操作,所述删除操作的DML操作为插入操作,所述反向更新操作的DML操作为更新操作。
第二方面,提供了一种数据恢复的装置,用于执行上述第一方面或第一方面的任意可能的实现方式中的方法。具体地,该装置包括用于执行上述第一方面或第一方面的任意可能的实现方式中的方法的模块。
第三方面,提供了一种数据恢复的装置,该装置包括:存储器、处理器和总线系统。其中,该存储器和该处理器通过该总线系统相连,该存储器用于存储指令,该处理器用于执行该存储器存储的指令,并且当该处理器执行该存储器存储的指令时,该执行使得该处理器执行第一方面或第一方面的任意可能的实现方式中的方法。
第四方面,提供了一种计算机可读介质,用于存储计算机程序,该计算机程序包括用于执行第一方面或第一方面的任意可能的实现方式中的方法的指令。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例的数据恢复的方法的合并反DML操作的示意性流程图。
图2是本发明实施例的数据恢复的方法的缓冲区示意图。
图3是本发明实施例的数据恢复的方法的示意性流程图。
图4是本发明一个实施例的数据恢复的装置的示意性框图。
图5是本发明另一个实施例的数据恢复的装置的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
如图1所示,服务器在处理用户请求的结构化查询语言(Structured QueryLanguage,SQL)语句时,解析器(parser)11将SQL语句解析为数据库识别的内部数据结构,重写器(rewrite)12转换解析器生成的数据结构,以便优化器进行优化。然后优化器(optimizer)13将重写器转换的数据结构生成最优的执行计划,然后执行器(runtime)14运行这个最优的执行计划,处理用户发出的SQL请求,返回执行结果。
这里,多个租户共享一张数据表,每个租户使用独立的数据库访问账号,根据每个租户的权限处理租户的请求。本发明实施例中,在执行器14执行最优的执行计划时,可以根据租户的数据库访问账号,分别获取多个租户的SQL语句。反DML语句处理线程分别在各个租户的访问账号中存储各个租户的反DML语句。
在执行器执行SQL语句时,反DML语句处理线程执行图1中S110至S150的流程。
S110,判断SQL语句是否为DML操作。当该SQL语句为DML操作时,下一步执行S120,当该SQL语句不是DML操作时,流程结束,不对该SQL语句作处理,并继续获取下一条SQL语句。
这里,DML操作为插入操作、删除操作或更新操作。当SQL语句为DML操作时,才会对数据库的内容产生影响。
S120,记录该DML操作的反DML操作和该DML操作的第一时间戳。
具体的,该第一时间戳表示该DML操作在系统中被执行的时间,该第一时间戳与DML操作一一对应。这里,可以将S120中确定的反DML操作和第一时间戳存储至缓冲区1中,该缓冲区1具体可以为存储器,本发明对此不作限定。
当DML操作为插入操作时,反DML操作为删除操作。当DML操作为删除操作时,反DML操作为插入操作。当DML操作为更新操作时,反DML操作为反向更新操作。
S130,记录反DML操作的数量或时间,并判断该数量或时间是否超过阈值。
具体的,S130可以由触发器实现。作为一例,该触发器可以包括一个计数器。该计数器的初始值可以为0,当反DML语句处理线程中记录一个反DML操作时,该计数器的计数值加1。例如,当计数器为初始值0的时候,反DML语句处理线程记录了一个删除操作,此时,将计数器的值加1,即将计数器的值设置为1。该触发器中可以预设置阈值为数字N,当计数器的计数值超过N时,下一步执行S140。
作为另一例,该触发器还可以包括一个计时器,该计时器的初始值也可以为0。该计数器记录的时间为该反DML操作处理线程的统计时间,在该统计时间中反DML操作处理线程可以记录一个或多个反DML操作。可以为该触发器设置一个时间周期值M,当计时器记录的时间超过M时,下一步执行S140。
S140,合并至少一个反DML操作,并将S140中的计数器或计时器的计数清零。
本发明实施例中,合并操作可以由DML操作合并器实现。DML操作合并器将S120中缓存的多个反DML操作中的冗余操作去掉,生成简化的反DML操作,并将该合并后的反DML操作存储到缓冲区2中。并且本发明实施例在合并时将S130中的计数清零,以便计数器或计时器进入下一个合并周期。
具体而言,当S130中计数器的数量超过N时,将缓存中最后存入的N个反DML操作合并为一个反DML操作。这里,合并之前的至少一个反DML操作的数量为该数量N,并且N大于或等于2,即将至少两个反DML操作合并为一个第一反DML操作。
或者当计时器的记录的时间超过M时,将缓存中的最后的M时间周期内存入的至少一个反DML操作合并为一个反DML操作。这里,合并之前的至少一个反DML操作的数量可以为一个,也可以为多个。即当记录的一个时间周期内的反DML只有一个时,将该一个反DML操作可以直接作为合并后的反DML操作,当记录的时间周期内的反DML操作有多个时,将该多个反DML操作合并为一个反DML操作。
本发明实施例中,当至少一个反DML操作包含对同一个记录的多个反向更新操作时,将多个反向更新操作合并为一个反向更新操作,合并之后可以只保留最后一个反向更新操作之后的数据。
本发明实施例中,当至少一个反DML操作包括对同一个记录的多个插入操作时,可以将多个插入操作合并为一个插入操作,合并之后的插入操作包括该多个插入操作插入的所有内容。
本发明实施例中,当至少一个反DML操作包括对同一个记录的多个插入操作和删除操作时,可以将多个插入操作和删除操作合并为一个反DML操作,合并之后的反DML操作包括该多个插入操作和删除操作所插入和删除的所有内容。
本发明实施例中,当至少一个反DML操作包括对同一个记录的多个插入操作、删除操作和反向更新操作时,可以将多个插入操作、删除操作和反向更新操作合并为一个反DML操作,合并之后的反DML操作包括该多个插入操作和删除操作所插入和删除的所有内容以及反向更新操作之后的数据。
S150,确定合并后的反DML操作的第二时间戳,并将该第二时间戳存储到缓冲区2中。
具体的,在S120中的至少两个第一时间戳中确定至少一个第二时间戳,该至少一个第二时间戳与至少一个合并后的反DML操作一一对应。该至少两个第一时间戳对应的至少一个DML操作的反DML操作在S140中被合并为一个反DML操作,该合并后的反DML操作对应的第二时间戳为该至少一个第一时间戳中的一个。
可选的,该合并后的反DML操作对应的第二时间戳为该至少一个第一时间戳中的时间最早的一个时间戳。
作为一例,如图2所示,当该触发器中包括一个计时器时,在该计时器的统计时间达到周期M时,合并缓冲区1中存储的反DML操作。图2中第一时间戳t1对应的反DML操作为a1,第一时间戳t2对应的反DML操作为a2。DML操作合并器将a1和a2合并为b1,b1对应的第二时间戳为t1,即b1对应的第二时间戳为a1和a2对应的第一时间戳中时间最早的时间戳。同样的,合并后的b2和b3对应的第二时间戳分别为t3和t6。而a6、a9和a10所在的统计周期中只有一个反DML操作,因此可以认为b3、b5和b6分别为a6、a9和a10,并且b3、b5和b6对应的第二时间戳分别为a6、a9和a10对应的第一时间戳。
当有租户进行了误操作,需要恢复数据时,可以执行图3所示的恢复数据的进程。在S310之前,可以对该租户加锁,不允许该租户再请求DML操作。
S310,获取恢复时间点。具体的,服务器获取租户输入的恢复时间点。该恢复时间点可以为在当前时刻之前任意时刻的时间点。
S320,确定至少一个第三时间戳。
具体的,可以确定缓冲区2中的第二时间戳中在恢复时间点之后的时间戳为第三时间戳。当用户确定恢复时间点之后,服务器可以在缓冲区2中确定上述第三时间戳。应注意,此时,至少一个第三时间戳与缓冲区2中的在恢复时间点之后的合并后的反DML操作一一对应。
例如,在图2中,当用户输入的恢复时间点为时间点t1时,在缓冲区2中在时间点t1之后的第二时间戳为t6、t7、t9和t10,因此可以确定t6、t7、t9和t10为第三时间戳。
S330,执行第三时间戳对应的合并后的反DML操作。
具体的,按至少一个第三时间戳的时间顺序反向依次执行该第三时间戳对应的反DML操作。例如,当确定的至少一个第三时间戳为t6、t7、t9和t10时,依次执行缓冲区2中缓存的t10、t9、t7和t6对应的合并后的反DML操作b6、b5、b4和b3。
可选的,当缓冲区1中在恢复时间点和恢复时间点之后的时间最早的第三时间戳之间还存在第一时间戳时,本发明实施例还包括图3中的S340和S350。
S340,确定至少一个第四时间戳。
具体的,该至少一个第四时间戳为在缓冲区1中在恢复时间点之后、并且在时间最早的第三时间戳之前的时间戳。
例如,在图3中,当恢复时间点为时间点t2时,首先执行S320和S330的步骤,即确定第三时间戳为t6、t7、t9和t10,并依次执行反DML操作b6、b5、b4和b3。在执行完反DML操作b3之后,因为第一时间戳t4和t5在时间点t2之后,并且在第三时间戳t6之前,可以确定第四时间戳为t4和t5。
S350,执行第四时间戳对应的合并后的反DML操作。
具体的,按至少一个第四时间戳的时间顺序反向依次执行该第四时间戳对应的反DML操作。例如,当确定的至少一个第四时间戳为t4和t5之后,依次执行缓冲区1中缓存的t5和t4对应的反DML操作a4和a5。
当将数据库恢复到租户误操作之前的状态时,针对该租户解锁,该租户可以触发新的DML操作。
因此,本发明实施例通过合并多个DML操作对应的反DML操作,生成简化的反DML操作和与该反DML操作对应的时间戳,并根据租户的恢复时间确定恢复数据需要执行的简化的反DML操作对应的时间戳,执行该时间戳对应的简化的反DML操作。本发明实施例通过执行简化的反DML操作,能够提高多租户共享数据表场景下将恢复数据的效率。
图4示出了本发明实施例的一种数据恢复的装置500的示意性框图,该装置500包括:
获取模块510,用于获取租户输入的恢复时间点;
确定模块520,用于在第一缓冲区中的至少一个第一时间戳中确定在所述恢复时间点和当前时间点之间的至少一个第二时间戳,其中,所述至少一个第一时间戳中的每个第一时间戳对应一个第一反数据操纵语言DML操作,所述第一反DML操作为将至少一个第二反DML操作合并之后的反DML操作;
恢复模块530,用于按时间顺序反向依次执行与所述至少一个第二时间戳一一对应的至少一个所述第一反DML操作。
可选的,所述装置500还包括合并模块,用于在所述获取租户输入的恢复时间点之前,在第二缓冲区中记录与至少一个DML操作一一对应的所述至少一个第二反DML操作,和与所述至少一个DML操作一一对应的至少一个第三时间戳,其中,所述至少一个第三时间戳与所述至少一个第二反DML操作一一对应;将所述至少一个第二反DML操作合并为所述第一反DML操作,所述第一反DML操作对应的第一时间戳为所述至少一个第三时间戳中的一个;将所述第一反DML操作和所述第一反DML操作对应的第一时间戳存储到所述第一缓冲区。
可选的,所述确定模块还用于在所述第二缓冲区中的所述至少一个第三时间戳中确定在所述恢复时间点之后并且在所述至少一个第二时间戳之前的至少一个第四时间戳;所述恢复模块还用于按时间顺序反向依次执行与所述至少一个第四时间戳一一对应的至少一个所述第二反DML操作。
可选的,所述合并模块具体用于:记录所述至少一个第二反DML操作的数量;当所述数量超过第一阈值时,将所述至少一个第二反DML操作合并为一个所述第一反DML操作。
可选的,所述合并模块具体用于:在记录所述至少一个第二反DML操作时,记录时间;当所述时间超过第二阈值时,将所述至少一个第二反DML操作合并为一个所述第一反DML操作。
可选的,所述第一反DML操作对应的第一时间戳为所述至少一个第三时间戳中最早的一个。
可选的,该装置500还包括加锁模块,用于在所述确定模块在第一缓冲区中的至少一个第一时间戳中确定在所述恢复时间点和当前时间点之间的至少一个第二时间戳之前,对所述租户进行加锁,禁止所述租户对数据库请求DML操作。
可选的,该装置500还包括解锁模块,用于在将数据恢复至所述恢复时间点的状态时,对所述租户进行解锁,允许所述租户对数据库请求DML操作。
可选的,本发明实施例中,所述反DML操作包括插入操作、删除操作或反向更新操作,所述插入操作的DML操作为删除操作,所述删除操作的DML操作为插入操作,所述反向更新操作的DML操作为更新操作。
因此,本发明实施例通过合并多个DML操作对应的反DML操作,生成简化的反DML操作和与该反DML操作对应的时间戳,并根据租户的恢复时间确定恢复数据需要执行的简化的反DML操作对应的时间戳,执行该时间戳对应的简化的反DML操作。本发明实施例通过执行简化的反DML操作,能够提高多租户共享数据表场景下将恢复数据的效率。
应注意,本发明实施例中,获取模块510、确定模块520和恢复单元530可以由处理器实现。如图5所示,装置600可以包括处理器610、存储器620和总线系统630。其中,存储器620可以用于存储处理器610执行的代码等。
装置600中的各个组件通过总线系统630耦合在一起,其中总线系统630除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。
图4所示的装置500或图5所示的装置600能够实现前述图1至图3所示的方法实施例中的各个过程,为避免重复,这里不再赘述。
应注意,处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application SpecificIntegrated Circuit,ASIC)、现成可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
可以理解,本发明实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(ProgrammableROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(DynamicRAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data Rate SDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DR RAM)。应注意,本文描述的系统和方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
本领域普通技术人员可以意识到,结合本文中所公开的实施例中描述的各方法步骤和单元,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各实施例的步骤及组成。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或步骤可以用硬件、处理器执行的软件程序,或者二者的结合来实施。软件程序可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
尽管通过参考附图并结合优选实施例的方式对本发明进行了详细描述,但本发明并不限于此。在不脱离本发明的精神和实质的前提下,本领域普通技术人员可以对本发明的实施例进行各种等效的修改或替换,而这些修改或替换都应在本发明的涵盖范围内。
Claims (18)
1.一种数据恢复的方法,其特征在于,包括:
获取租户输入的恢复时间点;
在第一缓冲区中的至少一个第一时间戳中确定在所述恢复时间点和当前时间点之间的至少一个第二时间戳,其中,所述至少一个第一时间戳中的每个第一时间戳对应一个第一反数据操纵语言DML操作,所述第一反DML操作为将至少一个第二反DML操作合并之后的反DML操作;
按时间顺序反向依次执行与所述至少一个第二时间戳一一对应的至少一个所述第一反DML操作。
2.根据权利要求1所述的方法,其特征在于,在所述获取租户输入的恢复时间点之前,还包括:
在第二缓冲区中存储与至少一个DML操作一一对应的所述至少一个第二反DML操作,和与所述至少一个DML操作一一对应的至少一个第三时间戳,其中,所述至少一个第三时间戳与所述至少一个第二反DML操作一一对应;
将所述至少一个第二反DML操作合并为所述第一反DML操作,所述第一反DML操作对应的第一时间戳为所述至少一个第三时间戳中的一个;
将所述第一反DML操作和所述第一反DML操作对应的第一时间戳存储到所述第一缓冲区。
3.根据权利要求2所述的方法,其特征在于,还包括:
在所述第二缓冲区中的所述至少一个第三时间戳中确定在所述恢复时间点之后并且在所述至少一个第二时间戳之前的至少一个第四时间戳;
按时间顺序反向依次执行与所述至少一个第四时间戳一一对应的至少一个所述第二反DML操作。
4.根据权利要求2或3所述的方法,其特征在于,所述将所述至少一个第二反DML操作合并为所述第一反DML操作,包括:
记录所述至少一个第二反DML操作的数量;
当所述数量超过第一阈值时,将所述至少一个第二反DML操作合并为一个所述第一反DML操作。
5.根据权利要求2或3所述的方法,其特征在于,所述将所述至少一个第二反DML操作合并为所述第一反DML操作,包括:
在存储所述至少一个第二反DML操作时,记录时间;
当所述时间超过第二阈值时,将所述至少一个第二反DML操作合并为一个所述第一反DML操作。
6.根据权利要求2至5中任一项所述的方法,其特征在于,所述第一反DML操作对应的第一时间戳为所述至少一个第三时间戳中最早的一个。
7.根据权利要求1至6中任一项所述的方法,其特征在于,在所述在第一缓冲区中的至少一个第一时间戳中确定在所述恢复时间点和当前时间点之间的至少一个第二时间戳之前,还包括:
对所述租户进行加锁,禁止所述租户对数据库请求DML操作。
8.根据权利要求7所述的方法,其特征在于,在将数据恢复至所述恢复时间点的状态时,还包括:
对所述租户进行解锁,允许所述租户对数据库请求DML操作。
9.根据权利要求1至8中任一项所述的方法,其特征在于,所述反DML操作包括插入操作、删除操作或反向更新操作,所述插入操作的DML操作为删除操作,所述删除操作的DML操作为插入操作,所述反向更新操作的DML操作为更新操作。
10.一种数据恢复的装置,其特征在于,包括:
获取模块,用于获取租户输入的恢复时间点;
确定模块,用于在第一缓冲区中的至少一个第一时间戳中确定在所述恢复时间点和当前时间点之间的至少一个第二时间戳,其中,所述至少一个第一时间戳中的每个第一时间戳对应一个第一反数据操纵语言DML操作,所述第一反DML操作为将至少一个第二反DML操作合并之后的反DML操作;
恢复模块,用于按时间顺序反向依次执行与所述至少一个第二时间戳一一对应的至少一个所述第一反DML操作。
11.根据权利要求10所述的装置,其特征在于,所述装置还包括合并模块,用于在所述获取租户输入的恢复时间点之前,在第二缓冲区中存储与至少一个DML操作一一对应的所述至少一个第二反DML操作,和与所述至少一个DML操作一一对应的至少一个第三时间戳,其中,所述至少一个第三时间戳与所述至少一个第二反DML操作一一对应;
将所述至少一个第二反DML操作合并为所述第一反DML操作,所述第一反DML操作对应的第一时间戳为所述至少一个第三时间戳中的一个;
将所述第一反DML操作和所述第一反DML操作对应的第一时间戳存储到所述第一缓冲区。
12.根据权利要求11所述的装置,其特征在于,
所述确定模块还用于在所述第二缓冲区中的所述至少一个第三时间戳中确定在所述恢复时间点之后并且在所述至少一个第二时间戳之前的至少一个第四时间戳;
所述恢复模块还用于按时间顺序反向依次执行与所述至少一个第四时间戳一一对应的至少一个所述第二反DML操作。
13.根据权利要求11或12所述的装置,其特征在于,所述合并模块具体用于:
记录所述至少一个第二反DML操作的数量;
当所述数量超过第一阈值时,将所述至少一个第二反DML操作合并为一个所述第一反DML操作。
14.根据权利要求11或12所述的装置,其特征在于,所述合并模块具体用于:
在存储所述至少一个第二反DML操作时,记录时间;
当所述时间超过第二阈值时,将所述至少一个第二反DML操作合并为一个所述第一反DML操作。
15.根据权利要求11至14中任一项所述的装置,其特征在于,所述第一反DML操作对应的第一时间戳为所述至少一个第三时间戳中最早的一个。
16.根据权利要求10至15中任一项所述的装置,其特征在于,还包括加锁模块,用于在所述确定模块在第一缓冲区中的至少一个第一时间戳中确定在所述恢复时间点和当前时间点之间的至少一个第二时间戳之前,对所述租户进行加锁,禁止所述租户对数据库请求DML操作。
17.根据权利要求16所述的装置,其特征在于,还包括解锁模块,用于在将数据恢复至所述恢复时间点的状态时,对所述租户进行解锁,允许所述租户对数据库请求DML操作。
18.根据权利要求10至17中任一项所述的装置,其特征在于,所述反DML操作包括插入操作、删除操作或反向更新操作,所述插入操作的DML操作为删除操作,所述删除操作的DML操作为插入操作,所述反向更新操作的DML操作为更新操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610022360.0A CN106970855B (zh) | 2016-01-14 | 2016-01-14 | 数据恢复的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610022360.0A CN106970855B (zh) | 2016-01-14 | 2016-01-14 | 数据恢复的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106970855A true CN106970855A (zh) | 2017-07-21 |
CN106970855B CN106970855B (zh) | 2021-04-20 |
Family
ID=59335193
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610022360.0A Active CN106970855B (zh) | 2016-01-14 | 2016-01-14 | 数据恢复的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106970855B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107391309A (zh) * | 2017-07-28 | 2017-11-24 | Tcl移动通信科技(宁波)有限公司 | 移动终端及其恢复出厂预配置处理方法、及存储介质 |
CN108921229A (zh) * | 2018-07-17 | 2018-11-30 | 成都西加云杉科技有限公司 | 数据恢复方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101593185A (zh) * | 2008-05-29 | 2009-12-02 | 国际商业机器公司 | 利用同步进行数据恢复的方法和系统 |
US20110137875A1 (en) * | 2009-12-09 | 2011-06-09 | Oracle International Corporation | Incremental materialized view refresh with enhanced dml compression |
CN102693169A (zh) * | 2011-03-25 | 2012-09-26 | 国际商业机器公司 | 在多租户环境下恢复租户数据的方法、设备和数据库系统 |
CN103678532A (zh) * | 2013-12-02 | 2014-03-26 | 中国移动(深圳)有限公司 | 变更语句逆向分析方法、数据库变更回退方法及系统 |
CN104991836A (zh) * | 2015-06-19 | 2015-10-21 | 小米科技有限责任公司 | 恢复数据库的方法、装置及数据库服务器 |
-
2016
- 2016-01-14 CN CN201610022360.0A patent/CN106970855B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101593185A (zh) * | 2008-05-29 | 2009-12-02 | 国际商业机器公司 | 利用同步进行数据恢复的方法和系统 |
US20110137875A1 (en) * | 2009-12-09 | 2011-06-09 | Oracle International Corporation | Incremental materialized view refresh with enhanced dml compression |
CN102693169A (zh) * | 2011-03-25 | 2012-09-26 | 国际商业机器公司 | 在多租户环境下恢复租户数据的方法、设备和数据库系统 |
CN103678532A (zh) * | 2013-12-02 | 2014-03-26 | 中国移动(深圳)有限公司 | 变更语句逆向分析方法、数据库变更回退方法及系统 |
CN104991836A (zh) * | 2015-06-19 | 2015-10-21 | 小米科技有限责任公司 | 恢复数据库的方法、装置及数据库服务器 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107391309A (zh) * | 2017-07-28 | 2017-11-24 | Tcl移动通信科技(宁波)有限公司 | 移动终端及其恢复出厂预配置处理方法、及存储介质 |
CN107391309B (zh) * | 2017-07-28 | 2022-06-10 | Tcl移动通信科技(宁波)有限公司 | 移动终端及其恢复出厂预配置处理方法、及存储介质 |
CN108921229A (zh) * | 2018-07-17 | 2018-11-30 | 成都西加云杉科技有限公司 | 数据恢复方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106970855B (zh) | 2021-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103559231B (zh) | 一种文件系统配额管理方法、装置及系统 | |
CN105868343B (zh) | 数据库迁移方法及系统 | |
CN106844682B (zh) | 数据交换方法、装置及系统 | |
CN107423303A (zh) | 数据同步的方法和系统 | |
WO2017080431A1 (zh) | 一种基于日志解析的数据库复制方法及装置 | |
CN109891402A (zh) | 可撤销和在线模式转换 | |
CN104750720A (zh) | 多线程并发访问环境下高性能数据处理的实现 | |
CN103488684A (zh) | 基于缓存数据多线程处理的电力可靠性指标快速计算方法 | |
CN106155838B (zh) | 一种数据库备份数据恢复方法及装置 | |
CN107562931A (zh) | 数据抽取系统和数据抽取方法 | |
CN106484761A (zh) | 用于改进储存日志的方法和系统 | |
CN108694231A (zh) | 使用nvm并通过多个日志记录缓冲器来预写式日志记录 | |
CN110502523A (zh) | 业务数据存储方法、装置、服务器及计算机可读存储介质 | |
US10733057B2 (en) | Techniques for application undo and redo using SQL patchsets or changesets | |
CN105049260A (zh) | 日志管理方法和装置 | |
CN106970855A (zh) | 数据恢复的方法和装置 | |
US10013347B2 (en) | Non-blocking parallel memory mechanisms | |
CN105868216B (zh) | 一种实现对象过期操作的方法、装置和设备 | |
CN106250429A (zh) | 一种基于sqoop的数据抽取方法 | |
CN104077343B (zh) | 一种哈希表元素失效删除方法 | |
CN106571940A (zh) | 一种融合网管数据与资源数据的方法和装置 | |
KR20120082176A (ko) | 데이터베이스 관리 시스템의 데이터 처리 방법 및 시스템 | |
CN109739881A (zh) | 基于CarbonData的增量数据收敛更新方法及其系统 | |
CN115098486A (zh) | 基于海关业务大数据的实时数据采集方法 | |
CN111026764B (zh) | 一种数据存储方法、装置、电子产品及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220215 Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province Patentee after: Huawei Cloud Computing Technology Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |
|
TR01 | Transfer of patent right |