CN116541387A - 数据闪回方法、装置、电子设备及存储介质 - Google Patents
数据闪回方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN116541387A CN116541387A CN202310491096.5A CN202310491096A CN116541387A CN 116541387 A CN116541387 A CN 116541387A CN 202310491096 A CN202310491096 A CN 202310491096A CN 116541387 A CN116541387 A CN 116541387A
- Authority
- CN
- China
- Prior art keywords
- data
- flashback
- database
- target
- request
- 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.)
- Pending
Links
- 238000003860 storage Methods 0.000 title claims abstract description 100
- 238000000034 method Methods 0.000 title claims abstract description 69
- 230000007246 mechanism Effects 0.000 claims description 13
- 238000002360 preparation method Methods 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 12
- 238000002955 isolation Methods 0.000 claims description 11
- 230000004048 modification Effects 0.000 abstract description 15
- 238000012986 modification Methods 0.000 abstract description 15
- 230000037430 deletion Effects 0.000 abstract description 11
- 238000012217 deletion Methods 0.000 abstract description 11
- 206010016754 Flashback Diseases 0.000 description 225
- 238000012545 processing Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 9
- 230000003993 interaction Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000011084 recovery Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000007781 pre-processing Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 230000002085 persistent effect Effects 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 238000012512 characterization method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012805 post-processing Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004064 recycling Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2477—Temporal data queries
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Quality & Reliability (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种数据闪回方法、装置、电子设备及存储介质,涉及计算机技术领域。该方法包括:接收数据闪回请求,数据闪回请求包括闪回时间戳;根据数据闪回请求确定数据库中预先锁定的、与所述数据闪回请求对应的目标数据;以及确定数据库中是否存在闪回时间戳对应的参考数据;在确定数据库中存在参考数据的情况下,基于目标数据和参考数据的比较结果,对目标数据进行第一覆盖操作;其中,数据库中包括预先写入的执行第一覆盖操作的第一结构化查询语句。采用本申请实施例,可以通过执行第一结构化查询语句,对数据库中预先锁定的目标数据进行修改,操作简单,降低了对数据库中的存在误修改或误删除操作的数据进行修改的难度和成本。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据闪回方法、装置、电子设备及存储介质。
背景技术
在数据库领域,通常可以采用MVCC(Multi-version concurrency control,多版本并发控制)管理存储数据的版本,当对某一存储数据的版本进行更新(例如,更改、删除数据等)时,不会出现真正的数据删除,只会添加一个新版本数据,可以保留历史数据,实现对数据库中的历史数据进行读取。
但相关技术中,无法采用MVCC对数据库中进行了误修改或删除操作的数据进行修改。在用户对数据库中的数据进行了误修改或删除操作的情况下,只能通过备份恢复或者手动修改的方式,对数据库中进行了误修改或删除的数据进行修改,增加了对进行了误修改或删除的数据的修改难度和修改成本,增加了对历史数据的恢复难度和恢复成本。
发明内容
本申请实施例提供了一种数据闪回方法,以解决相关技术中,对数据库中进行了误修改或删除的数据进行修改的难度和成本较高,对数据库中历史数据的恢复难度和恢复成本较高的问题。
相应的,本申请实施例还提供了一种数据闪回装置、一种电子设备以及一种存储介质,用以保证上述方法的实现及应用。
一方面,本申请实施例提供一种数据闪回方法,该方法包括:
接收数据闪回请求;该数据闪回请求中包括闪回时间戳;
根据数据闪回请求,确定数据库中预先锁定的、与数据闪回请求对应的目标数据;以及确定该数据库中是否存在闪回时间戳对应的参考数据;
在确定数据库中存在参考数据的情况下,基于目标数据和参考数据的比较结果,对目标数据进行第一覆盖操作;
其中,数据库中包括预先写入的执行第一覆盖操作的第一结构化查询语句。
另一方面,本申请实施例提供了一种数据闪回装置,该装置包括:
数据闪回请求接收模块,用于接收数据闪回请求;该数据闪回请求中包括闪回时间戳;
闪回操作数据确定模块,用于根据数据闪回请求,确定数据库中预先锁定的、与数据闪回请求对应的目标数据;以及确定数据库中是否存在闪回时间戳对应的参考数据;
闪回操作执行模块,用于在确定数据库中存在参考数据的情况下,基于目标数据和参考数据的比较结果,对目标数据进行第一覆盖操作;
其中,数据库中包括预先写入的执行第一覆盖操作的第一结构化查询语句。
另一方面,本申请实施例提供了一种电子设备,包括处理器和存储器,该处理器和存储器相互连接;
上述存储器用于存储计算机程序;
上述处理器被配置用于在调用上述计算机程序时,执行本申请实施例提供的数据闪回方法。
另一方面,本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行以实现本申请实施例提供的数据闪回方法。
在本申请实施例中,通过接收数据闪回请求,根据数据闪回请求,确定数据库中预先锁定的、与数据闪回请求对应的目标数据;以及根据数据闪回请求中的闪回时间戳,确定该数据库中是否存在闪回时间戳对应的参考数据;并在确定数据库中存在参考数据的情况下,参照该数据库中包括预先写入的执行第一覆盖操作的第一结构化查询语句,基于目标数据和参考数据的比较结果,对目标数据进行第一覆盖操作。可以通过执行第一结构化查询语句,对数据库中预先锁定的目标数据进行修改,操作简单,降低了对数据库中的存在误修改或误删除操作的数据进行修改的难度和成本。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请实施例提供的一种数据闪回方法的流程示意图;
图2示出了本申请实施例提供的一种数据闪回方法的应用场景示意图;
图3示出了本申请实施例提供的一种数据闪回方法的另一流程示意图;
图4示出了本申请实施例提供的一种数据闪回装置的结构示意图;
图5示出了本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
如前文所记载的,在数据库领域中,在通过备份恢复或者手动修改的方式,对数据库中进行了误修改或删除的数据进行修改时,增加了对存在误修改或误删除操作的数据进行修改的难度和成本。
且相关技术中,在对Oracle数据库中数据进行数据闪回操作时,通常是基于undodata实现,需要额外打开supplemental log。在对PolarDB中的数据库中的数据进行数据闪回操作时,通常是基于PolarFS(Polar文件系统,FS即file system,文件系统)的快照备份以及redo log实现。具体地,PolarDB通过快照重新创建一个新集群,再根据redo log将数据恢复到指定时间点。可见,各数据闪回操作比较复杂,操作难度比较高。
针对于此,本申请实施例提供一种数据闪回方法,该方法可以应用于数据闪回装置中,本申请实施例对该数据闪回装置不做具体限制。该数据闪回装置可以为独立于数据库的服务器或终端,也可以基于数据库服务中的各组件的功能,将具备相应功能的组件作为该数据闪回装置。
在本申请实施例所提供的数据闪回方法可以应用于包括但不限于TiDB数据库等数据库中。在具体执行过程中,可以通过数据库中的处理引擎(即用来执行数据计算操作的部件)、存储引擎(即用来执行数据存储的部件)以及调度引擎(即用来执行存储元信息与调度负载均衡的部件)等部件结合实现本申请实施例提供的数据闪回方法。具体地,可以将处理引擎作为上述数据闪回装置。
具体地,本申请实施例提供的数据闪回方法可以应用于对当前数据存在误修改、误删除等应用场景中。
如图1所示,该数据闪回方法包括:
步骤S110:接收数据闪回请求;该数据闪回请求中包括闪回时间戳。
数据闪回:主要是基于历史数据,对数据库中的现有数据(即当前数据)进行修改的处理方式。
在该实现方式中,数据闪回请求可以用来触发执行该数据闪回方法的请求,通过对该数据闪回请求进行响应,可以触发数据闪回装置执行数据闪回操作。
步骤S120:根据数据闪回请求,确定数据库中预先锁定的、与数据闪回请求对应的目标数据;以及确定该数据库中是否存在闪回时间戳对应的参考数据。
目标数据可以为对数据闪回请求进行响应时,数据库中的实时数据。也可以为在数据库中写入SQL时,数据库中的实时数据。还可以为具体进行数据闪回操作时,数据库中的实时数据。可以根据实际情况确定,本申请实施例对此不做具体限制。
在本申请实施例中,为了避免数据闪回操作的执行过程中,对目标数据造成影响,需要对目标数据进行锁定。
参考数据可以为数据库中存储的、对应闪回时间戳的实时数据。具体地,在基于闪回时间戳确定参考数据时,若数据库中在闪回时间戳存在实时数据,确定存在参考数据,并该实时数据作为参考数据;若数据库中在闪回时间戳不存在实时数据,确定不存在参考数据。
其中,目标数据对应的时间戳晚于参考时间对应的时间戳。步骤S130:在确定数据库中存在参考数据的情况下,基于目标数据和参考数据的比较结果,对目标数据进行第一覆盖操作。
其中,数据库中包括预先写入的执行第一覆盖操作的第一结构化查询语句。
在本申请实施例中,可以将执行整个数据闪回方法的操作称为数据闪回操作,将执行数据闪回操作所需的数据称为闪回操作数据(例如,闪回操作数据可以包括参考数据和目标数据)。在以结构化查询语句的方式执行该数据闪回方法时,可以将对应的结构化查询语句称为执行数据闪回操作的SQL。
可以理解的是,数据闪回操作可以包括但不限于第一覆盖操作。自然地,执行数据闪回操作的SQL可以包括第一结构化查询语句。
其中,该第一结构化查询语句中可以包括闪回时间戳。
可以理解的是,在实际应用过程中,也可以通过在该数据库中对用于执行数据闪回操作的SQL的写入操作,触发数据闪回装置执行本申请实施例提供的数据闪回方法。也可以预先在该数据库中写入用于执行数据闪回操作的SQL,并通过对该用于执行数据闪回操作的SQL中设置的闪回时间戳的更新操作,触发数据闪回装置执行本申请实施例提供的数据闪回方法。本申请实施例对具体的触发机制不做限制。
需要说明的是,在触发数据闪回装置基于用于执行数据闪回操作的SQL,执行本申请实施例提供的数据闪回方法之前,还可以确定数据闪回装置是否满足用于执行数据闪回操作的SQL的执行条件。具体地,可以对写入用于执行数据闪回操作的SQL的用户权限进行鉴权、确定闪回时间戳是否在预设的垃圾回收机制对应的预设时间间隔对应的时间段内等。
其中,可以预先设置可以写入用于执行数据闪回操作的SQL的用户列表,在接收到写入的用于执行数据闪回操作的SQL之后,确定写入该用于执行数据闪回操作的SQL的当前用户是否处于预设的用户列表中。在当前用户处于预设的用户列表的情况下,且闪回时间戳在预设的垃圾回收机制对应的预设时间间隔对应的时间段内的情况下,确定可以执行写入的用于执行数据闪回操作的SQL,即满足用于执行数据闪回操作的SQL的执行条件。
其中,垃圾回收机制,即Garbage Collection,简称GC。通过开启针对数据库的垃圾回收机制,可以对数据库中对应时间戳与当前时间戳之间的间隔时间较久的数据进行彻底清除。例如,可以设置垃圾回收机制对应的预设时间间隔为30分钟,即在设置垃圾回收机制为保留过去30分钟的数据情况下,可以对数据库中对应时间戳与当前时间戳之间的间隔时间大于30分钟的数据进行删除。预设时间间隔对应的时间段,即以当前时间戳为时间终点,向前追溯预设时间间隔,确定时间起点后,时间起点到时间终点之间的时间段。
在基于A数据对B数据进行覆盖操作时,可以在B数据对应的存储空间内,采用A数据覆盖在B数据之上,但并不对B数据进行删除,达到在B数据对应的存储空间中,对B数据进行隐藏,暴露A数据的效果。
具体地,在基于目标数据和参考数据的比较结果,对目标数据进行第一覆盖操作时,可以具体通过参考数据对目标数据进行覆盖、通过参考数据替代目标数据、基于参考数据对目标数据进行修改等方式,实现对目标数据的第一覆盖操作。即可以通过历史数据,实现对当前数据的修改操作。
其中,在基于目标数据和参考数据的比较结果,对目标数据进行第二覆盖操作,可以具体通过以下方式实现:
在目标数据和参考数据相同的情况下,保留目标数据;
在目标数据和参考数据不同的情况下,基于参考数据对目标数据进行第一覆盖操作。
其中,在目标数据和参考数据相同的情况下,表征目标数据所在的存储空间在闪回时间戳至目标数据对应的目标时间戳之间不存在存储数据的变化。通过保留目标数据,即不对目标数据所在的存储空间中的数据(即目标数据)进行处理,还可以进一步节省目标数据所在的存储空间的可用存储空间。
在目标数据和参考数据不同的情况下,表征目标数据所在的存储空间在闪回时间戳至目标数据对应的目标时间戳之间存在存储数据的变化。基于参考数据对目标数据进行第一覆盖操作,即在目标数据所在的存储空间内,采用参考数据,覆盖目标数据。实现对目标数据的修改操作,即有效地实现对目标数据的数据闪回处理。
在本申请实施例中,通过接收数据闪回请求,根据数据闪回请求,确定数据库中预先锁定的、与数据闪回请求对应的目标数据;以及根据数据闪回请求中的闪回时间戳,确定该数据库中是否存在闪回时间戳对应的参考数据;并在确定数据库中存在参考数据的情况下,参照该数据库中包括预先写入的执行第一覆盖操作的第一结构化查询语句,基于目标数据和参考数据的比较结果,对目标数据进行第一覆盖操作。可以通过执行第一结构化查询语句,对数据库中预先锁定的目标数据进行修改,操作简单,降低了对数据库中的存在误修改或误删除操作的数据进行修改的难度和成本。
可选地,上述方法还可以包括:
在确定数据库中不存在参考数据的情况下,基于清空指令对目标数据进行第二覆盖操作;
其中,数据库中还可以包括预先写入的执行第二覆盖操作的第二结构化查询语句。
需要说明的是,上述数据闪回操作还可以包括第二覆盖操作。自然地,用于执行数据闪回操作的SQL可以包括第一结构化查询语句和第二结构化查询语句。
清空指令,可以为DELETE指令。该清空指令可以是在执行该数据闪回方法之前预先设置的。
在基于清空指令对目标数据进行第二覆盖操作时,可以在目标数据所在的存储空间内,写入清空指令,使得目标数据所在的存储空间内为“空”,但实际上在目标数据所在的存储空间内还存储有“隐藏的”目标数据。
在数据库中,可以设置不同的存储区域,将不同的存储区域与服务器进行关联,每个存储区域用于存储对应的服务器与该服务器所服务的客户端之间的交互数据。具体地,可以通过数据库中的存储引擎对各存储区域进行管理。
其中,各服务器可以与实际物理区域进行关联,可以设置一个实体物理区域对应一个或多个服务器,本申请实施例对此不做限制。例如,在一个区域内包括五个子区域,每个子区域可以对应一个服务器,每个服务器对应一个存储区域,即一个存储区域可以对该存储区域对应的服务器与该该服务器所对应的子区域内各客户端之间的交互数据进行存储。如图2所示,存储区域a可以对服务器A与客户端A1’、客户端A2’、客户端A3’之间的交互数据进行存储。
考虑到在进行数据闪回操作的执行过程中,若持续通过数据库为相应的客户端或外部组件提供服务,可能会使得数据库产生新的数据,会影响对数据闪回操作的处理。在本申请实施例中,还提供了以下可选的实现方式:
上述接收数据闪回请求之前,上述方法还可以包括:
接收数据闪回准备请求,对数据库进行数据隔离操作;以及
对数据库中的目标存储区域进行锁定。
上述数据闪回操作还可以包括该数据隔离操作和对数据库中的目标存储区域进行锁定的操作。
在本申请实施例中,在接收到用于执行数据闪回操作的SQL之后,可以通过执行该用于执行数据闪回操作的SQL,分阶段实现数据闪回操作,例如,可以设置数据闪回准备操作阶段(以下简称为第一阶段)和数据闪回执行操作阶段(以下简称为第二阶段;其中,数据闪回执行操作可以例如上述确定参考数据的操作、确定目标数据的操作、第一覆盖操作、第二覆盖操作)。
具体地,可以通过在用于执行数据闪回操作的SQL中指定与数据闪回操作关联的目标存储区域,并通过执行用于执行数据闪回操作的SQL,基于每个操作阶段生成不同的数据处理请求,例如,在执行数据闪回准备操作阶段时,以基于该数据闪回准备请求执行数据闪回准备操作;在执行数据闪回执行操作阶段时,生成数据闪回执行请求(也即上述数据闪回请求),以基于该数据闪回准备请求执行数据闪回执行操作。
其中,在数据闪回准备操作阶段,可以向存储引擎发送数据闪回准备请求,使得存储引擎对目标存储区域执行数据闪回准备操作;在数据闪回执行操作阶段,向存储引擎发送数据闪回请求,使得存储引擎对目标存储区域执行数据闪回执行操作。
通过分阶段实现数据闪回操作,还可以保证数据闪回事务的一致性。
在对数据库进行数据隔离操作时,可以将所有与数据库之间的数据交互关系进行切断。
在对目标存储区域进行锁定时,具体可以为保留目标存储区域中的数据,避免在目标存储区域中存储新的数据。
在本申请实施例中,通过对数据库进行数据隔离操作,并对数据库中的目标存储区域进行锁定,可以避免在数据闪回操作的执行过程中,由于外部部件导致数据库产生新的数据,对数据闪回操作的执行过程产生干扰。
可选地,上述对数据库进行数据隔离操作,可以包括以下至少一项:
关闭针对数据库的垃圾回收机制;
将针对数据库的读写权限设置为只读权限;
关闭数据库与任一外部部件的连接关系。
在该实现方式中,通过关闭针对数据库的垃圾回收机制,可以在数据闪回操作时间大于垃圾回收机制对应的预设时间间隔的情况下,避免对闪回操作数据进行了误清除。
可以通过针对数据库的系统变量对数据库的读写权限进行设置,其中,读写权限可以包括只读权限、读写权限(即既可以读,也可以写)。例如,在数据库为TiDB数据库时,可以在该系统变量tidb_super_read_only的属性值设置为“YES”的情况下,可以TiDB数据库的读写权限设置为只读权限;在该系统变量tidb_super_read_only的属性值设置为“NO”的情况下,可以TiDB数据库的读写权限设置为读写权限。
在关闭数据库与任一外部部件的连接关系时,可以具体通过调度引擎获取时间戳,并将该获取到的时间戳作为数据闪回操作的startTS(开始时间戳),基于该startTS,在数据库中写入相关的连接关系切断指令,切断数据库与任一外部部件的连接关系。
可以理解的是,在完成数据闪回操作后,还可以对各数据隔离操作进行恢复,恢复数据库的相关服务。具体地,可以重新开启针对数据库的垃圾回收机制;将针对数据库的读写权限设置为读写权限;重新连接数据库与任一外部部件的连接关系。
在本申请实施例中,通过对数据库进行数据隔离操作,可以避免在数据闪回操作过程中,外部数据对数据闪回操作造成干扰。
可选地,上述对数据库中的目标存储区域进行锁定,可以包括:
确定目标存储区域对应的目标行锁,并对目标行锁进行扫描以及回滚操作;
确定目标存储区域中,存储时间戳与闪回时间戳之间的时间跨度最长的用户键,并对所确定的用户键进行锁定。
目标行锁可以为基于MVCC实现的数据表中的行锁,即MVCC Lock。
在对扫描到的目标行锁进行回滚操作时,可以在该目标行锁的版本出现变化时,将该目标行锁的上一版本的信息记录至该目标行锁对应的日志中,即获取到各目标行锁的当前版本以及上一版本的信息。
在对目标行锁进行回滚操作的过程中,可以进一步确定出目标存储区域中与闪回时间戳关联的数据信息。
可以理解的是,在本申请实施例还可以对所有基于MVCC实现的锁进行扫描并执行回滚操作。
在目标存储区域中,可以通过key-value(键-键值)存储方式对服务器与客户端的交互数据进行存储。其中,键可以与各客户端标识相对应,键值即相应客户端对应的交互数据。
目标存储区域中存储时间戳与闪回时间戳之间的时间跨度最长的用户键,即最新存入目标存储区域中的用户键。
在对所确定的用户键进行锁定时,可以基于startTS,在目标存储区域中写入存储区域锁定指令,对所确定的用户键进行锁定。
通过对所确定的用户键进行锁定,可以避免在目标存储区域中写入更新的数据。
通过对目标行锁进行扫描以及回滚操作,以及对所确定的用户键进行锁定,可以从数据表和用户数据两个方面实现对目标存储区域的锁定,实现了在存储区域粒度上阻断对数据库的读、写和调度等操作,避免在数据闪回操作过程中,外部数据对数据闪回操作造成干扰。
可以理解的是,在完成数据闪回操作后,还可以锁定的目标存储区域进行解锁操作。
可选地,上述确定数据库中预先锁定的、与数据闪回请求对应的目标数据,可以包括:
确定在闪回时间戳至目标时间戳对应的时间段内,目标存储区域中键值发生了变化的目标用户键;目标时间戳指示对上述所确定的用户键进行锁定的时间戳;
将目标用户键对应于闪回时间戳的键值确定为目标数据;
上述确定数据库中是否存在闪回时间戳对应的参考数据,可以包括:
将目标用户键对应于目标时间戳的键值确定为参考数据;。
通过确定对在闪回时间戳至目标时间戳对应的时间段内,目标存储区域中各键值是否发生了变化,将键值发生了变化的用户键确定为目标用户键。并进一步将目标用户键对应于目标时间戳的键值确定为参考数据,将目标用户键对应于闪回时间戳的键值确定为目标数据,可以精确地确定出数据闪回请求对应的闪回操作数据。
可选地,在对目标数据执行数据闪回操作后,上述方法还包括:
对目标存储区域对应的数据表进行更新;
在检测到更新后的数据表对应的版本信息的情况下,生成数据表信息。
如前文所记载的,在对目标存储区域进行锁定时,具体可以对目标存储区域关联的数据表和用户数据进行锁定。
在对目标存储区域对应的数据表(schema)进行更新时,可以具体对该数据表的版本(schema version)进行更新。
通过进一步对更新后的数据表的版本信息进行检测,在检测到更新后的数据表对应的版本信息的情况下,生成数据表信息,可以更进一步验证数据闪回操作是否成功,实现对数据表的同步更新。
为了更清楚的说明本申请实施例提供的数据闪回方法,以下以数据库为TiDB数据库为例,结合上述实施例以及图3对该数据闪回方法进行详细的说明:
首先,对TiDB数据库进行介绍:
TiDB数据库是一款开源分布式HTAP数据库。可以通过处理引擎TiDB Server、存储引擎TiKV Server和调度引擎PD(即Placement Driver,放置驱动器,简称PD)Server3个基础组件组成TiDB数据库服务(即TiDB集群)。
其中,TiDB Server可以用于执行与TiDB数据库关联的计算操作,也可以称为TiDB计算节点。PD Server可以用于存储TiDB集群的元信息与调度负载均衡,也可以称为TiDB管理节点。TiKV Server可以用于存储数据,也可以称为TIDB存储节点。
结合TiDB数据库服务中各个节点的具体功能,在本申请实施例中,在对TiDB数据库中的数据进行数据闪回操作时,可以将TiDB Server作为数据闪回装置。
具体执行数据闪回方法的步骤为:步骤1:TiDB Server接收flashback SQL,确定是否满足flashback SQL的执行条件。
步骤2:在TiDB Server确定满足flashback SQL的执行条件时,通过执行flashback SQL,关闭GC,并通过将系统变量tidb_super_read_only的属性值设置为“YES”,将TiDB Server设置为只读模式。
步骤3:TiDB Server通过PD获取startTS,并对startTS进行持久化,断开TiDB数据库与外部部件之间的连接。
步骤4:TiDB Server向TiKV Server发送基于RPC实现的flashback prepare请求(数据闪回准备请求)。TiKV Server收到flashback prepare请求后,以regions粒度阻断对指定regions(即目标存储区域)的读、写和调度操作,使得指定regions进入闪回状态。具体地:
a.扫描TiKV对应的所有MVCC Lock,并进行rollback(回滚);
b.TiKV Server在指定regions中选择最新的user key(用户键),并基于持久化的startTS,对该最新的user key进行上锁。
步骤5:TiDB Server通过PD获取commitTS(即完成上锁操作后的时间戳),并对commitTS进行持久化,向TiKV Server发送基于RPC实现的flashback请求(数据闪回请求)。TiKV Server接收到flashback请求后,对指定regions中的各键值对进行扫描,确定各键值对中存在版本变化的目标用户键,并确定目标用户键对应于持久化的commitTS的目标数据,以及确定各目标用户键中是否存在对应于闪回时间戳的参考数据,基于目标数据和参考数据执行数据闪回操作。
其中,在目标用户键中不存在对应于闪回时间戳的参考数据的情况下,将DELETE指令写入该目标用户键对应的键值中;
在目标用户键中存在对应于闪回时间戳的参考数据,且目标用户键对应于持久化的commitTS的目标数据与参考数据不同的情况下,基于commitTS,基于该目标用户键对应的参考数据对目标数据进行覆盖;
在目标用户键中存在对应于闪回时间戳的参考数据,且目标用户键对应于commitTS的目标数据与参考数据相同的情况下,不对该目标用户键对应的目标数据进行处理。
步骤6:TiDB Server对schema version进行更新,并在TiDB Server检测到该更新后的schema version后,重新生成schema信息,完成对schema的闪回。
步骤7:TiDB Server重新打开GC,并通过将系统变量tidb_super_read_only的属性值设置为“NO”,将TiDB Server设置为读写模式。
步骤8:结束数据闪回操作,并向客户端返回提示结果,例如“可以重新启用TiDB数据库”。
通过该数据闪回方法,可以在TiDB数据库中,通过一条SQL语句直接指定闪回时间戳,实现对数据以及数据表的闪回操作,不依赖于该TiDB数据库之外的组件,如日志、备份数据等,学习成本较低,处理速度较快。
并且,在该数据闪回方法中,虽然可以两阶段提交的方式实现,但其具体采用数据覆盖的方式进行数据闪回操作的,并没有破坏目标存储区域中的历史数据,只是在目标存储区域中写了一份新的数据而已,数据写入的时间戳都是一致的,在需要进行多次flashback时,可以基于各存储区域中的数据对应的时间戳,重新进行数据闪回操作,多次flashback之间不会相互影响,数据可以在时间轴上反复闪回,保证了事务的一致性,更容易对接生态工具。
基于与本申请实施例提供的数据闪回方法相同的原理,本申请实施例中还提供了一种数据闪回装置。如图4所示,该装置40包括:
数据闪回请求接收模块401,用于接收数据闪回请求;该数据闪回请求中包括闪回时间戳;
闪回操作数据确定模块402,用于根据数据闪回请求,确定数据库中预先锁定的、与数据闪回请求对应的目标数据;以及确定数据库中是否存在闪回时间戳对应的参考数据;
闪回操作执行模块403,用于在确定数据库中存在参考数据的情况下,基于目标数据和参考数据的比较结果,对目标数据进行第一覆盖操作;
其中,数据库中包括预先写入的执行第一覆盖操作的第一结构化查询语句。
可选地,上述闪回操作执行模块403还可以用于:
在确定数据库中不存在参考数据的情况下,基于清空指令对目标数据进行第二覆盖操作;
其中,数据库中还包括预先写入的执行所述第二覆盖操作的第二结构化查询语句。
可选地,上述装置还可以包括预处理模块,该预处理模块可以用于:
在接收数据闪回请求之前,接收数据闪回准备请求,对数据库进行数据隔离操作;以及
对数据库中的目标存储区域进行锁定。
可选地,上述预处理模块在对数据库中的目标存储区域进行锁定时,可以用于:
确定目标存储区域对应的目标行锁,并对目标行锁进行扫描以及回滚操作;
确定目标存储区域中,存储时间戳与闪回时间戳之间的时间跨度最长的用户键,并对所确定的用户键进行锁定。
可选地,上述闪回操作数据确定模块402在确定数据库中预先锁定的、与数据闪回请求对应的目标数据时,可以用于:
确定在闪回时间戳至目标时间戳对应的时间段内,目标存储区域中键值发生了变化的目标用户键;目标时间戳指示对上述所确定的用户键进行锁定的时间戳;
将目标用户键对应于闪回时间戳的键值确定为目标数据;
上述闪回操作数据确定模块402在确定数据库中是否存在闪回时间戳对应的参考数据时,可以用于:
将目标用户键对应于目标时间戳的键值确定为参考数据。
可选地,上述预处理模块在对数据库进行数据隔离操作时,可以用于执行包括以下至少一项操作:
关闭针对数据库的垃圾回收机制;
将针对数据库的读写权限设置为只读权限;
关闭数据库与任一外部部件的连接关系。
可选地,上述装置还可以包括后处理模块,该后处理模块可以用于:
在对目标数据执行数据闪回操作后,对目标存储区域对应的数据表进行更新;
在检测到更新后的数据表对应的版本信息的情况下,生成数据表信息。
本申请实施例的装置可执行本申请实施例所提供的方法,其实现原理相类似,本申请各实施例的装置中的各模块所执行的动作是与本申请各实施例的方法中的步骤相对应的,对于装置的各模块的详细功能描述具体可以参见前文中所示的对应方法中的描述,此处不再赘述。
在本申请实施例中,通过接收数据闪回请求,根据数据闪回请求,确定数据库中预先锁定的、与数据闪回请求对应的目标数据;以及根据数据闪回请求中的闪回时间戳,确定该数据库中是否存在闪回时间戳对应的参考数据;并在确定数据库中存在参考数据的情况下,参照该数据库中包括预先写入的执行第一覆盖操作的第一结构化查询语句,基于目标数据和参考数据的比较结果,对目标数据进行第一覆盖操作。可以通过执行第一结构化查询语句,对数据库中预先锁定的目标数据进行修改,操作简单,降低了对数据库中的存在误修改或误删除操作的数据进行修改的难度和成本。
基于与本申请实施例提供的数据闪回方法及装置相同的原理,本申请实施例中还提供了一种电子设备(如服务器),该电子设备可以包括存储器、处理器及存储在存储器上的计算机程序,该处理器执行上述计算机程序以实现:
接收数据闪回请求;该数据闪回请求中包括闪回时间戳;
根据数据闪回请求,确定数据库中预先锁定的、与数据闪回请求对应的目标数据;以及确定该数据库中是否存在闪回时间戳对应的参考数据;
在确定数据库中存在参考数据的情况下,基于目标数据和参考数据的比较结果,对目标数据进行第一覆盖操作;
其中,数据库中包括预先写入的执行第一覆盖操作的第一结构化查询语句。
在本申请实施例中,通过接收数据闪回请求,根据数据闪回请求,确定数据库中预先锁定的、与数据闪回请求对应的目标数据;以及根据数据闪回请求中的闪回时间戳,确定该数据库中是否存在闪回时间戳对应的参考数据;并在确定数据库中存在参考数据的情况下,参照该数据库中包括预先写入的执行第一覆盖操作的第一结构化查询语句,基于目标数据和参考数据的比较结果,对目标数据进行第一覆盖操作。可以通过执行第一结构化查询语句,对数据库中预先锁定的目标数据进行修改,操作简单,降低了对数据库中的存在误修改或误删除操作的数据进行修改的难度和成本。
参见图5,图5示出了本申请实施例提供的一种电子设备的结构示意图。如图5所示,本实施例中的电子设备500可以包括:处理器501,网络接口504和存储器505,此外,上述电子设备500还可以包括:对象接口503,和至少一个通信总线502。其中,通信总线502用于实现这些组件之间的连接通信。其中,对象接口503可以包括显示屏(Display)、键盘(Keyboard),可选对象接口503还可以包括标准的有线接口、无线接口。网络接口504可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器505可以是高速RAM存储器,也可以是非易失性存储器(non-volatile memory,NVM),例如至少一个磁盘存储器。存储器505可选的还可以是至少一个位于远离前述处理器501的存储装置。如图5所示,作为一种计算机可读存储介质的存储器505中可以包括操作系统、网络通信模块、对象接口模块以及设备控制应用程序。
在图5所示的电子设备500中,网络接口504可提供网络通讯功能;而对象接口503主要用于为对象提供输入的接口;而处理器501可以用于调用存储器505中存储的设备控制应用程序,以实现:
在一些可行的实施方式中,上述处理器501用于:
应当理解,在一些可行的实施方式中,上述处理器501可以是中央处理单元(central processing unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integratedcircuit,ASIC)、现成可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。该存储器可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据。存储器的一部分还可以包括非易失性随机存取存储器。例如,存储器还可以存储设备类型的信息。
具体实现中,上述电子设备500可通过其内置的各个功能模块执行如上述图1中各个步骤所提供的实现方式,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,被处理器执行以实现图1中各个步骤所提供的方法,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。
上述计算机可读存储介质可以是前述任一实施例提供的数据闪回装置或电子设备的内部存储单元,例如电子设备的硬盘或内存。该计算机可读存储介质也可以是该电子设备的外部存储设备,例如该电子设备上配备的插接式硬盘,智能存储卡(smart mediacard,SMC),安全数字(secure digital,SD)卡,闪存卡(flash card)等。上述计算机可读存储介质还可以包括磁碟、光盘、只读存储记忆体(read-only memory,ROM)或随机存储记忆体(random access memory,RAM)等。进一步地,该计算机可读存储介质还可以既包括该电子设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该电子设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本申请实施例提供了一种计算机程序产品,该计算机程序产品包括计算机程序,上述计算机程序被处理器执行图1中各个步骤所提供的方法。
本申请的权利要求书和说明书及附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。
此外,本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或电子设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或电子设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置展示该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
以上所揭露的仅为本申请较佳实施例而已,不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (10)
1.一种数据闪回方法,其特征在于,包括:
接收数据闪回请求;所述数据闪回请求中包括闪回时间戳;
根据所述数据闪回请求,确定数据库中预先锁定的、与所述数据闪回请求对应的目标数据;以及确定所述数据库中是否存在所述闪回时间戳对应的参考数据;
在确定所述数据库中存在参考数据的情况下,基于所述目标数据和所述参考数据的比较结果,对所述目标数据进行第一覆盖操作;
其中,所述数据库中包括预先写入的执行所述第一覆盖操作的第一结构化查询语句。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在确定所述数据库中不存在参考数据的情况下,基于清空指令对所述目标数据进行第二覆盖操作;
其中,所述数据库中还包括预先写入的执行所述第二覆盖操作的第二结构化查询语句。
3.根据权利要求1所述的方法,其特征在于,所述接收所述数据闪回请求之前,所述方法还包括:
接收数据闪回准备请求,对所述数据库进行数据隔离操作;以及
对所述数据库中的目标存储区域进行锁定。
4.根据权利要求3所述的方法,其特征在于,所述对所述数据库中的目标存储区域进行锁定,包括:
确定所述目标存储区域对应的目标行锁,并对所述目标行锁进行扫描以及回滚操作;
确定所述目标存储区域中,存储时间戳与所述闪回时间戳之间的时间跨度最长的用户键,并对所确定的用户键进行锁定。
5.根据权利要求4所述的方法,其特征在于,所述确定所述数据闪回请求对应的闪回操作数据,包括:
确定在所述闪回时间戳至目标时间戳对应的时间段内,所述目标存储区域中键值发生了变化的目标用户键;所述目标时间戳指示对所述所确定的用户键进行锁定的时间戳;
将所述目标用户键对应于所述目标时间戳的键值确定为所述参考数据;将所述目标用户键对应于所述闪回时间戳的键值确定为所述目标数据。
6.根据权利要求3所述的方法,其特征在于,所述对所述数据库进行数据隔离操作,包括以下至少一项:
关闭针对所述数据库的垃圾回收机制;
将针对所述数据库的读写权限设置为只读权限;
关闭所述数据库与任一外部部件的连接关系。
7.根据权利要求6所述的方法,其特征在于,在对所述目标数据执行数据闪回操作后,所述方法还包括:
对所述目标存储区域对应的数据表进行更新;
在检测到更新后的数据表对应的版本信息的情况下,生成数据表信息。
8.一种数据闪回装置,其特征在于,所述装置包括:
数据闪回请求接收模块,用于接收数据闪回请求;所述数据闪回请求中包括闪回时间戳;
闪回操作数据确定模块,用于根据数据闪回请求,确定数据库中预先锁定的、与所述数据闪回请求对应的目标数据;以及确定所述数据库中是否存在所述闪回时间戳对应的参考数据;
闪回操作执行模块,用于若确定所述数据库中存在所述参考数据,基于所述目标数据和所述参考数据,对所述目标数据进行第一覆盖操作操作;
其中,所述数据库中包括预先写入的执行所述第一覆盖操作的结构化查询语句。
9.一种电子设备,其特征在于,包括处理器和存储器,所述处理器和存储器相互连接;
所述存储器用于存储计算机程序;
所述处理器被配置用于在调用所述计算机程序时,执行权利要求1至7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1至7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310491096.5A CN116541387A (zh) | 2023-05-04 | 2023-05-04 | 数据闪回方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310491096.5A CN116541387A (zh) | 2023-05-04 | 2023-05-04 | 数据闪回方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116541387A true CN116541387A (zh) | 2023-08-04 |
Family
ID=87442924
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310491096.5A Pending CN116541387A (zh) | 2023-05-04 | 2023-05-04 | 数据闪回方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116541387A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117033398A (zh) * | 2023-10-09 | 2023-11-10 | 之江实验室 | 一种基于dolt数据库的数据闪回查询方法及装置 |
-
2023
- 2023-05-04 CN CN202310491096.5A patent/CN116541387A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117033398A (zh) * | 2023-10-09 | 2023-11-10 | 之江实验室 | 一种基于dolt数据库的数据闪回查询方法及装置 |
CN117033398B (zh) * | 2023-10-09 | 2024-01-16 | 之江实验室 | 一种基于dolt数据库的数据闪回查询方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106415538B (zh) | 使用共享文件访问-rest接口的文件服务 | |
US9690671B2 (en) | Manifest-based snapshots in distributed computing environments | |
JP4598821B2 (ja) | データベース復旧中のスナップショットクエリのためのシステムおよび方法 | |
CN107220142B (zh) | 执行数据恢复操作的方法及装置 | |
US10942823B2 (en) | Transaction processing system, recovery subsystem and method for operating a recovery subsystem | |
US9177035B2 (en) | Replicating data to a database | |
US8661063B2 (en) | Versioned file system with sharing | |
US6873995B2 (en) | Method, system, and program product for transaction management in a distributed content management application | |
US11080259B1 (en) | Scalable transaction-based data repository service | |
US9747356B2 (en) | Eager replication of uncommitted transactions | |
WO2021018020A1 (zh) | 数据处理方法、装置、电子设备及计算机存储介质 | |
US20050234931A1 (en) | Managing client configuration data | |
US20030028682A1 (en) | System and method for object persistence life-cycle and object caching integration | |
US7996360B2 (en) | Coordinating updates to replicated data | |
CN116541387A (zh) | 数据闪回方法、装置、电子设备及存储介质 | |
EP4276651A1 (en) | Log execution method and apparatus, and computer device and storage medium | |
US20240143386A1 (en) | Using multiple blockchains for applying transactions to a set of persistent data objects in persistent storage systems | |
US20230098963A1 (en) | Object processing method and apparatus, computer device, and storage medium | |
GB2602544A (en) | Data synchronization in a data analysis system | |
US11061889B2 (en) | Systems and methods of managing manifest refresh in a database | |
CN111857939A (zh) | 镜像删除和推送的方法、系统、电子设备及存储介质 | |
US20170329812A1 (en) | Control systems for draft lifecycle | |
CN110377614B (zh) | 一种分布式环境下的订单处理锁系统 | |
WO2023111910A1 (en) | Rolling back database transaction | |
CN114138563A (zh) | 一种Hyper-V虚拟机备份和还原的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |