掌桥专利:专业的专利平台
掌桥专利
首页

误操作数据恢复方法、装置、计算机设备与存储介质

文献发布时间:2023-06-19 18:46:07


误操作数据恢复方法、装置、计算机设备与存储介质

技术领域

本申请涉及数据处理技术领域,特别是涉及一种误操作数据恢复方法、装置、计算机设备、存储介质和计算机程序产品。

背景技术

在一些数据系统内,随着业务量与客户数的日益增长,各个系统的数据越来越多,表数据文件越大,对后台数据库的数据容错性及安全性要求日趋升高。

目前,在数据库日常使用维护过程中,当遇到数据误更新、错删除等误操作的问题,通常的解决方案是利用预先做好的逻辑备份或物理备份数据进行恢复,在备份的基础上通过解析相应的二进制日志文件binlog,直到把数据恢复到误删除操作之前的时间点,但是在解析日志文件直到把数据恢复到误删除操作之前的时间点这个过程中,会消耗很多时间,使得这一恢复误操作之前的数据表的方案效率低下。

发明内容

基于此,有必要针对上述技术问题,提供一种高效的误操作数据恢复方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。

第一方面,本申请提供了一种误操作数据恢复方法。所述方法包括:

获取空白事件信息拉链表、空白数据信息拉链表以及日常更新表快照,所述日常更新表为可能发生误操作的数据表;

将所述日常更新表快照插入至所述空白事件信息拉链表,得到事件信息拉链表;

获取对日常更新表进行操作时的变更信息、并根据所述变更信息向所述事件信息拉链表以及所述空白数据信息拉链表中新增变更记录;

当发生误操作事件时,根据新增变更记录之后的事件信息拉链表与数据信息拉链表,确定误操作事件发生时间点以及数据恢复的基准时间点;

根据所述误操作事件发生时间点、所述数据恢复的基准时间点、以及所述新增变更记录之后的事件信息拉链表与数据信息拉链表,得到误操作之前的日常更新表结构以及表数据;

基于所述误操作之前的日常更新表结构以及表数据,进行日常更新表数据恢复。

在其中一个实施例中,所述获取空白事件信息拉链表、空白数据信息拉链表、以及日常更新表快照包括:

获取空白事件信息拉链表以及空白数据信息拉链表;

抽取日常更新表至外部大数据集群,确定抽取时间基准点;

获取所述抽取时间基准点对应的日常更新表快照。

在其中一个实施例中,所述获取对日常更新表进行操作时的变更信息、并根据所述变更信息向所述事件信息拉链表以及所述空白数据信息拉链表中新增变更记录包括:

获取对日常更新表进行操作时的变更信息,所述变更信息中包括操作事件的操作类型;

根据所述操作事件的操作类型,向所述事件信息拉链表以及所述空白数据信息拉链表中新增变更记录。

在其中一个实施例中,

所述根据所述操作事件的操作类型,向所述事件信息拉链表以及所述空白数据信息拉链表中新增变更记录包括:

当所述操作事件的操作类型为DDL(Data Definition Language,数据定义语言)操作时,根据所述日常更新表快照新建空表,所述空表用于重放所述操作事件,得到重放完成后所述空表的变更记录;

根据所述重放完成后所述空表的变更记录,向所述事件信息拉链表新增DDL操作的变更记录;

或,所述根据所述操作事件的操作类型,向所述事件信息拉链表以及所述空白数据信息拉链表中新增变更记录包括:

当所述操作事件的操作类型为DML(Data Manipulation Language,数据操作语言)操作时,向所述事件信息拉链表新增DML操作的变更记录,获取操作事件的行数据变更信息以及DML变更类型;

根据所述行数据变更信息以及DML变更类型,向所述空白数据信息拉链表中新增变更记录。

在其中一个实施例中,当发生误操作事件时,根据新增变更记录之后的事件信息拉链表与数据信息拉链表,确定误操作事件发生时间点以及数据恢复的基准时间点包括:

当发生误操作事件时,根据新增变更记录之后的事件信息拉链表与数据信息拉链表,确定误操作事件发生时间点;

基于所述抽取时间基准点以及所述误操作事件发生时间点,判断所述新增变更记录之后的事件信息拉链表中是否存在所述DDL操作的变更记录,确定数据恢复的基准时间点。

在其中一个实施例中,所述根据所述误操作事件发生时间点、所述数据恢复的基准时间点、以及所述新增变更记录之后的事件信息拉链表与数据信息拉链表,得到误操作之前的日常更新表结构以及表数据包括:

根据所述新增变更记录之后的事件信息拉链表,获取误操作之前最新的日常更新表结构;

根据所述新增变更记录之后的数据信息拉链表、所述数据恢复的基准时间点以及所述误操作事件发生时间点,获取误操作之前最新变更的数据信息;

根据所述新增变更记录之后的数据信息拉链表以及所述日常更新表快照,获取未变更的数据信息;

基于所述误操作之前的日常更新表结构、所述误操作之前最新变更的数据信息以及所述未变更的数据信息,得到误操作之前的日常更新表结构以及表数据。

第二方面,本申请还提供了一种误操作数据恢复装置。所述装置包括:

快照生成模块,用于获取空白事件信息拉链表、空白数据信息拉链表以及日常更新表快照,所述日常更新表为可能发生误操作的数据表;

变更获取模块,用于将所述日常更新表快照插入至所述空白事件信息拉链表,得到事件信息拉链表;

变更记录模块,用于获取对日常更新表进行操作时的变更信息、并根据所述变更信息向所述事件信息拉链表以及所述空白数据信息拉链表中新增变更记录;

误操作时间点确定模块,用于当发生误操作事件时,根据新增变更记录之后的事件信息拉链表与数据信息拉链表,确定误操作事件发生时间点以及数据恢复的基准时间点;

表结构与数据恢复模块,用于根据所述误操作事件发生时间点、所述数据恢复的基准时间点、以及所述新增变更记录之后的事件信息拉链表与数据信息拉链表,得到误操作之前的日常更新表结构以及表数据;

表恢复模块,用于基于所述误操作之前的日常更新表结构以及表数据,进行日常更新表数据恢复。

第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:

获取空白事件信息拉链表、空白数据信息拉链表以及日常更新表快照,所述日常更新表为可能发生误操作的数据表;

将所述日常更新表快照插入至所述空白事件信息拉链表,得到事件信息拉链表;

获取对日常更新表进行操作时的变更信息、并根据所述变更信息向所述事件信息拉链表以及所述空白数据信息拉链表中新增变更记录;

当发生误操作事件时,根据新增变更记录之后的事件信息拉链表与数据信息拉链表,确定误操作事件发生时间点以及数据恢复的基准时间点;

根据所述误操作事件发生时间点、所述数据恢复的基准时间点、以及所述新增变更记录之后的事件信息拉链表与数据信息拉链表,得到误操作之前的日常更新表结构以及表数据;

基于所述误操作之前的日常更新表结构以及表数据,进行日常更新表数据恢复。

第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:

获取空白事件信息拉链表、空白数据信息拉链表以及日常更新表快照,所述日常更新表为可能发生误操作的数据表;

将所述日常更新表快照插入至所述空白事件信息拉链表,得到事件信息拉链表;

获取对日常更新表进行操作时的变更信息、并根据所述变更信息向所述事件信息拉链表以及所述空白数据信息拉链表中新增变更记录;

当发生误操作事件时,根据新增变更记录之后的事件信息拉链表与数据信息拉链表,确定误操作事件发生时间点以及数据恢复的基准时间点;

根据所述误操作事件发生时间点、所述数据恢复的基准时间点、以及所述新增变更记录之后的事件信息拉链表与数据信息拉链表,得到误操作之前的日常更新表结构以及表数据;

基于所述误操作之前的日常更新表结构以及表数据,进行日常更新表数据恢复。

第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:

获取空白事件信息拉链表、空白数据信息拉链表以及日常更新表快照,所述日常更新表为可能发生误操作的数据表;

将所述日常更新表快照插入至所述空白事件信息拉链表,得到事件信息拉链表;

获取对日常更新表进行操作时的变更信息、并根据所述变更信息向所述事件信息拉链表以及所述空白数据信息拉链表中新增变更记录;

当发生误操作事件时,根据新增变更记录之后的事件信息拉链表与数据信息拉链表,确定误操作事件发生时间点以及数据恢复的基准时间点;

根据所述误操作事件发生时间点、所述数据恢复的基准时间点、以及所述新增变更记录之后的事件信息拉链表与数据信息拉链表,得到误操作之前的日常更新表结构以及表数据;

基于所述误操作之前的日常更新表结构以及表数据,进行日常更新表数据恢复。

上述误操作数据恢复方法、装置、计算机设备、存储介质和计算机程序产品,首先获取空白事件信息拉链表、空白数据信息拉链表以及日常更新表快照,日常更新表为可能发生误操作的数据表,获取的数据表快照可以作为数据恢复的基础;将日常更新表快照插入至空白事件信息拉链表,得到事件信息拉链表;获取对日常更新表进行操作时的变更信息、并根据变更信息向事件信息拉链表以及空白数据信息拉链表中新增变更记录,可以通过事件信息拉链表以及空白数据信息拉链表来保存日常更新表变更的多个版本,实现数据的有效恢复;当发生误操作事件时,根据新增变更记录之后的事件信息拉链表与数据信息拉链表,确定误操作事件发生时间点以及数据恢复的基准时间点;根据误操作事件发生时间点、数据恢复的基准时间点、以及新增变更记录之后的事件信息拉链表与数据信息拉链表,得到误操作之前的日常更新表结构以及表数据;基于误操作之前的日常更新表结构以及表数据,进行日常更新表数据恢复。本申请通过在空白事件信息拉链表与空白数据信息拉链表新增变更记录,无需手动恢复备份集,实现在数据恢复的基准时间点后对误操作的高效恢复。

附图说明

图1为一个实施例中误操作数据恢复方法的应用环境图;

图2为一个实施例中误操作数据恢复方法的流程示意图;

图3为另一个实施例中误操作数据恢复方法的流程示意图;

图4为又一个实施例中误操作数据恢复方法的流程示意图;

图5为一个实施例中误操作数据恢复方法装置的结构框图;

图6为一个实施例中计算机设备的内部结构图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

本申请实施例提供的误操作数据恢复方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。数据存储系统可以存储服务器104需要处理的数据。数据存储系统可以集成在服务器104上,也可以放在云上或其他网络服务器上。首先,当发生误操作事件时,终端102发送误操作数据恢复请求至服务器104,误操作数据恢复请求中含有日常更新表快照、空白事件信息拉链表与空白数据信息拉链表,服务器104接收到终端102传来的误操作数据恢复请求,并从误操作数据恢复请求中提取日常更新表快照、空白事件信息拉链表与空白数据信息拉链表,日常更新表为可能发生误操作的数据表;将日常更新表快照插入至空白事件信息拉链表,得到事件信息拉链表;获取对日常更新表进行操作时的变更信息、并根据变更信息向事件信息拉链表以及空白数据信息拉链表中新增变更记录;当发生误操作事件时,根据新增变更记录之后的事件信息拉链表与数据信息拉链表,确定误操作事件发生时间点以及数据恢复的基准时间点;根据误操作事件发生时间点、数据恢复的基准时间点、以及新增变更记录之后的事件信息拉链表与数据信息拉链表,得到误操作之前的日常更新表结构以及表数据;基于误操作之前的日常更新表结构以及表数据,进行日常更新表数据恢复。更进一步地,服务器104还可以把恢复好的日常更新数据表反馈给终端102,其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机与平板电脑。服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。

在一个实施例中,如图2所示,提供了一种误操作数据恢复方法,以该方法应用于图1中的服务器104为例进行说明,包括以下步骤:

S100,获取空白事件信息拉链表、空白数据信息拉链表以及日常更新表快照,日常更新表为可能发生误操作的数据表。

其中,拉链表是针对数据仓库设计中表存储数据的方式而定义的,用来记录一个事物从开始,一直到当前状态的所有变化的信息;事件信息拉链表是指记录binlog中事件信息的拉链表;binlog是指二进制格式的文件,用于记录用户对数据库更新的SQL语句信息;数据信息拉链表是指记录数据信息的拉链表;空白事件信息拉链表是在事件信息拉链表中不存在事件信息只存在拉链表结构的空白表;空白数据信息拉链表是指在数据信息拉链表中不存在数据信息只存在拉链表结构的空白表;日常更新表为在业务处理中可能发生误操作的数据表;日常更新表快照是指是在特定时间点对日常更新表的精确副本。

具体地,当发生误操作事件时,终端102发送误操作数据恢复请求至服务器104,误操作数据恢复请求中含有日常更新表快照、空白事件信息拉链表与空白数据信息拉链表,服务器104接收到终端102传来的误操作数据恢复请求,并从误操作数据恢复请求中提取日常更新表快照、空白事件信息拉链表与空白数据信息拉链表,日常更新表快照是通过针对可能发生误操作的日常更新表,对日常更新表进行定时处理,得到的可能发生误操作的日常更新表定时快照。

更进一步地,如果误操作是在N天之前发生的,且每天会对日常更新表进行定时处理,此时为了能够定位N的具体天数,就得保留N个日常更新表快照,使数据能够回滚到N天前的某个时间点。

S200,将日常更新表快照插入至空白事件信息拉链表,得到事件信息拉链表。

具体地,服务器将日常更新表快照作为一条事件信息,向空白事件信息拉链表中插入一条基准事件信息记录,此时空白事件信息拉链表中包括了事件信息,可以得到事件信息拉链表。

S300,获取对日常更新表进行操作时的变更信息、并根据变更信息向事件信息拉链表以及空白数据信息拉链表中新增变更记录。

具体地,得到事件信息拉链表后,在每次对日常更新表进行操作时,服务器都可以实时获取日常更新表的变更信息,并将变更信息插入事件信息拉链表以及数据信息拉链表中存储,且将变更信息插入事件信息拉链表以及数据信息拉链表中,不会删除之前的拉链表数据,只会新增一条变更记录。

S400,当发生误操作事件时,根据新增变更记录之后的事件信息拉链表与数据信息拉链表,确定误操作事件发生时间点以及数据恢复的基准时间点。

其中,误操作事件发生时间点是指发生误操作事件的时间;数据恢复的基准时间点是指对误操作进行恢复的起始点,只有数据恢复的基准时间点这个时间之后发生的误操作可以进行数据恢复。

具体地,当对日常更新表进行的某次操作是误操作时,通过误操作时间段的binlog,配合变更信息中误操作的起止时间、日常更新表名、操作类型等参数定位到误操作语句的具体操作时间,即可以从新增变更记录之后的事件信息拉链表中获取针对本次误操作的日常更新表中误操作事件发生时间点,后续进行误操作的恢复时将日常更新表恢复到离误操作事件发生时间点之前最邻近的状态;误操作事件发生时间点会晚于数据恢复的基准时间点,可以根据误操作事件发生时间点,来确定数据恢复的基准时间点。

S500,根据误操作事件发生时间点、数据恢复的基准时间点、以及新增变更记录之后的事件信息拉链表与数据信息拉链表,得到误操作之前的日常更新表结构以及表数据。

具体地,由于数据恢复的基准时间点是误操作恢复的起始时间点,在数据恢复的基准时间点之后来进行误操作的数据恢复,根据误操作事件发生时间点、以及新增变更记录之后的事件信息拉链表与数据信息拉链表,得到新增变更记录之后的事件信息拉链表与数据信息拉链表中针对误操作事件的变更记录,得到误操作之前的日常更新表结构以及表数据。

S600,基于误操作之前的日常更新表结构以及表数据,进行日常更新表数据恢复。

上述误操作数据恢复方法中,首先获取空白事件信息拉链表、空白数据信息拉链表以及日常更新表快照,日常更新表为可能发生误操作的数据表,获取的数据表快照可以作为数据恢复的基础;将日常更新表快照插入至空白事件信息拉链表,得到事件信息拉链表;获取对日常更新表进行操作时的变更信息、并根据变更信息向事件信息拉链表以及空白数据信息拉链表中新增变更记录,可以通过事件信息拉链表以及空白数据信息拉链表来保存日常更新表变更的多个版本,实现数据的有效恢复;当发生误操作事件时,根据新增变更记录之后的事件信息拉链表与数据信息拉链表,确定误操作事件发生时间点以及数据恢复的基准时间点;根据误操作事件发生时间点、数据恢复的基准时间点、以及新增变更记录之后的事件信息拉链表与数据信息拉链表,得到误操作之前的日常更新表结构以及表数据;基于误操作之前的日常更新表结构以及表数据,进行日常更新表数据恢复。本方法通过在空白事件信息拉链表与空白数据信息拉链表新增变更记录,无需手动恢复备份集,实现在数据恢复的基准时间点后对误操作的高效恢复。

在一个实施例中,获取空白事件信息拉链表、空白数据信息拉链表以及日常更新表快照包括:

获取空白事件信息拉链表以及空白数据信息拉链表;抽取日常更新表至外部大数据集群,确定抽取时间基准点;获取抽取时间基准点对应的日常更新表快照。

其中,本申请中,抽取时间基准点是指将日常更新表抽取至外部大数据集群后,得到数据还原基准表的基准时间点。

示例性地,获取空白事件信息拉链表以及空白数据信息拉链表;在大数据集群中对应建立数据表,如存在业务数据库上的日常更新表A、表B,在大数据平台中建立与表A、表B对应的表BG_A、表BG_B;通过设置事务为Repeatable Read隔离级别,定时通过大数据sqoop组件把表A、表B的数据分别抽取至外部大数据集群的表BG_A、表BG_B中;由于抽取过程中可能会发生日常更新表的变更,通过重放抽取完成时间点的binlog里的sql语句,将在抽取过程中表A、表B发生的变更同步更新到大数据平台上的表BG_A、表BG_B中,重放完成,此时即对日常更新表进行抽取的操作完成,得到的表BG_A、表BG_B分别为表A、表B数据还原基准表,将重放抽取完成时间点的binlog的结束时间点作为确定的抽取时间基准点;获取此时外部大数据集群中抽取时间基准点的日常更新表快照。

更进一步地,获取的空白事件信息拉链表结构如下:

Create table event_info_link(

table_name string comment'表名'

,event_type string comment'事件操作类型'

,event_time long comment'事件发生时间'

,event_statment string comment'事件涉及的变更语句'

,event_gtid string comment'binlog事件涉及的事物GTID(全局事务ID,GlobalTransaction ID)'

,table_ddl string comment'事件完成之后变更表的建表语句'

);

获取的空白数据信息拉链表结构如下:

create table data_info_link(

table_name string comment'表名'

,event_time long comment'事件发生时间'

,event_gtid string comment'binlog事件涉及的事物GTID'

,table_pk string comment'表主键数据'

,table_data string comment'事件发生之后该主键行的数据信息json串'

,op_type string comment'数据变更类型:i:插入,d:删除,u:更新'

);

本实施例中,通过将日常更新表抽取至外部大数据集群中,通过外部大数据集群定时对日常更新表进行数据快照,能够充分发挥大数据对数据处理的高效性;且获取空白事件信息拉链表以及空白数据信息拉链表,能够实现对日常更新表的变更操作增量记录,记录过程中不会对拉链表中数据信息进行删减。

在一个实施例中,如图3所示,S300包括:

S320,获取对日常更新表进行操作时的变更信息,变更信息中包括操作事件的操作类型。

其中,操作类型是指对日常更新表进行操作时操作的具体类型,可以包括DDL操作以及DML操作;DDL操作是指数据定义语言,用于定义或改变表的结构、数据类型、表之间的连接和约束等初始工作上;DML操作是指数据操作语言,用户通过DDL操作可以实现对表中数据的查询、插入、删除和修改等操作。

具体地,在每次对日常更新表进行操作时,可以获取对日常更新表进行操作时的变更信息,变更信息中包括操作事件的操作类型。

更进一步地,在每次对日常更新表进行操作时,不仅可以获取操作类型,还可以获取误操作的GTID、误操作事务发生时间、误操作执行语句以及发生误操作的日常更新表名。

S340,根据操作事件的操作类型,向事件信息拉链表以及空白数据信息拉链表中新增变更记录。

具体地,根据每次操作的操作类型,可以判断每次对日常更新表进行的操作是DDL操作还是DML操作,根据不同的操作类型,向事件信息拉链表以及空白数据信息拉链表中新增每次操作的变更记录。

本实施例中,通过得到操作事件的操作类型,对不同的操作类型都进行处理,并向事件信息拉链表以及空白数据信息拉链表中新增变更记录,实现后续误操作数据恢复时对变更记录的高效获取。

在一个实施例中,如图4所示,

S340包括:

S342,当操作事件的操作类型为DDL操作时,根据日常更新表快照新建空表,空表用于重放操作事件,得到重放完成后空表的变更记录。

其中,本申请中,重放是指重新执行某个操作事件。

具体地,在对日常更新表进行操作,且操作事件的操作类型为DDL操作时,可以根据日常更新表快照来建立一张空表,空表中不含数据,但表结构与日常更新表的表结构一样,建立这张空表是为了在进行DDL操作时,在空表中重放DDL操作,DDL操作完成之后可以得到操作完成之后的表结构的信息,即得到重放完成后空表此时表结构的变更记录。

更进一步地,建立一张空表的语句包括但不限于为:create table T_empty likeT。

S344,根据重放完成后空表的变更记录,向事件信息拉链表新增DDL操作的变更记录。

具体地,根据重放完成后空表的变更记录,通过使用“show create table T_empty”语句,可以得到重放完成后变更表的建表语句,根据变更表的建表语句,向事件信息拉链表插入一条DDL事件信息,新增DDL操作的变更记录。

或,S340包括:

S346,当操作事件的操作类型为DML操作时,向事件信息拉链表新增DML操作的变更记录,获取操作事件的行数据变更信息以及DML变更类型。

其中,行数据变更信息是指日常更新表每行数据的变化信息;DML变更类型是指针对DML操作进行细分后的插入、更新、删除等类型。

具体地,在对日常更新表进行操作,且操作事件的操作类型为DML操作时,向事件信息拉链表插入一条DML事件信息,DML事件信息是指新增DML操作的变更记录,同时获取操作事件后日常更新表每行数据的变化信息,得到行数据变更信息以及针对DML操作细分后的变更类型。

S348,根据行数据变更信息以及DML变更类型,向空白数据信息拉链表中新增变更记录。

具体地,根据DML不同的变更类型以及行数据变更信息,向空白数据信息拉链表中新增变更记录。

示例性地,由于主键的值能唯一地标识表中的每一行,对于DML操作细分后的变更类型中的插入与更新类型,根据日常更新表的主键以及行数据变更信息,获取变更的行中的完整数据信息,向数据信息拉链表新增一条变更记录,,变更类型为插入的可以被记录为“i”,变更类型为更新的可以被记录为“u”;对于DML操作中的删除类型,向数据信息拉链表新增一条变更记录,变更类型为删除的可以被记录为“d”,并且在变更记录中说明日常更新表的主键对应数据行的删除时间。

本实施例中,通过对不同的操作事件进行分情况执行新增变更记录,能够更全面的覆盖各种操作类型,实现对误操作进行有效恢复。

在一个实施例中,当发生误操作事件时,根据新增变更记录之后的事件信息拉链表与数据信息拉链表,确定误操作事件发生时间点以及数据恢复的基准时间点包括:

当发生误操作事件时,根据新增变更记录之后的事件信息拉链表与数据信息拉链表,确定误操作事件发生时间点。

具体地,当发生误操作事件时,由于之前的每个操作都在事件信息拉链表与数据信息拉链表进行了新增变更记录,通过误操作事件的binlog,可以从新增变更记录中得到误操作的起止时间、日常更新表名、操作类型等参数定位到误操作语句的具体操作时间,即可以从新增变更记录之后的事件信息拉链表中获取针对本次误操作的日常更新表中误操作事件发生时间点,后续进行误操作的恢复时将日常更新表恢复到离误操作时间发生时间点之前最邻近的状态。

基于抽取时间基准点以及误操作事件发生时间点,判断新增变更记录之后的事件信息拉链表中是否存在DDL操作的变更记录,确定数据恢复的基准时间点。

具体地,抽取时间基准点是起始点,只有在抽取时间基准点这个时间之后发生的误操作可以进行数据恢复,所以误操作的事件发生时间点一定是会晚于抽取时间基准点;排查新增变更记录之后的事件信息拉链表中是否存在DDL操作的变更记录,在抽取时间基准点到误操作的事件发生时间这两个时间点之间如果没有对数据表进行drop表、truncate表、create表之类的DDL操作,那么抽取时间基准点即为数据恢复的基准时间;如果进行了drop表、truncate表、create表之类的DDL操作,那么在误操作的事件发生时间之前的最新一条drop表、truncate表、create表之类的DDL记录的时间点为数据恢复的基准时间点,数据恢复需要恢复到数据恢复的基准时间点之后。

本实施例中,通过得到数据恢复的基准时间点以及误操作事件发生时间点,能够定位到误操作事件发生的时间点,能够更有效地对误操作进行恢复。

在一个实施例中,根据误操作事件发生时间点、数据恢复的基准时间点、以及新增变更记录之后的事件信息拉链表与数据信息拉链表,得到误操作之前的日常更新表结构以及表数据包括:

根据新增变更记录之后的事件信息拉链表,获取误操作之前最新的日常更新表结构。

具体地,根据新增变更记录之后的事件信息拉链表,可以通过新增的变更记录得到误操作事件发生时间点之前的最新的日常更新表结构;令误操作事件发生时间点为R_T0,发生误操作的日常更新表为R_T,其具体执行语句可以是:select table_ddl fromevent_info_link where table_name='R_T'and event_type in('DDL','BASE')andevent_time

根据新增变更记录之后的数据信息拉链表、数据恢复的基准时间点以及误操作事件发生时间点,获取误操作之前最新变更的数据信息。

具体地,在数据恢复的基准时间点以及误操作事件发生时间点之间,根据新增变更记录之后的数据信息拉链表,获取误操作之前最新变更的数据信息,作为需要恢复的数据集S1;令T_BASE数据恢复的基准时间点,R_T0为误操作事件发生时间点,其具体执行语句可以为:with v1 as(

select t1.*,row_number()over(partition by t1.table_pk a order byt1.event_time desc)as rn From data_info_link t1 where and event_time=T_BASE)

select*from v1 where rn=1and op_type!='D';

根据新增变更记录之后的数据信息拉链表以及日常更新表快照,获取未变更的数据信息。

具体地,根据新增变更记录之后的数据信息拉链表以及日常更新表快照,得到日常更新表中没有变更的行,作为需要恢复的数据集S2;其具体执行语句可以为:with v1 as(select t1.*,row_number()over(partition by t1.table_pk a order by t1.event_time desc)as rn From data_info_link t1 where and event_time=T_BASE)

select*from日常更新表快照where pk not in(select pk from v1)and base_time=T_BASE。

基于误操作之前的日常更新表结构、误操作之前最新变更的数据信息以及未变更的数据信息,得到误操作之前的日常更新表结构以及表数据。

具体地,根据之前获得的数据集S1以及数据集S2,即误操作之前最新变更的数据信息以及未变更的数据信息,结合误操作之前的日常更新表结构,可以得到误操作之前的日常更新表结构以及表数据。

应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。

基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的误操作数据恢复方法的误操作数据恢复装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个误操作数据恢复装置实施例中的具体限定可以参见上文中对于误操作数据恢复方法的限定,在此不再赘述。

在一个实施例中,如图5所示,提供了一种误操作数据恢复装置,包括:快照生成模块100、变更获取模块200、变更记录模块300、误操作时间点确定模块400、表结构与数据恢复模块500和表恢复模块600,其中:

快照生成模块100,用于获取空白事件信息拉链表、空白数据信息拉链表以及日常更新表快照,日常更新表为可能发生误操作的数据表。

变更获取模块200,用于将日常更新表快照插入至空白事件信息拉链表,得到事件信息拉链表。

变更记录模块300,用于获取对日常更新表进行操作时的变更信息、并根据变更信息向事件信息拉链表以及空白数据信息拉链表中新增变更记录。

误操作时间点确定模块400,用于当发生误操作事件时,根据新增变更记录之后的事件信息拉链表与数据信息拉链表,确定误操作事件发生时间点以及数据恢复的基准时间点。

表结构与数据恢复模块500,用于根据误操作事件发生时间点、数据恢复的基准时间点、以及新增变更记录之后的事件信息拉链表与数据信息拉链表,得到误操作之前的日常更新表结构以及表数据。

表恢复模块600,用于基于误操作之前的日常更新表结构以及表数据,进行日常更新表数据恢复。

在一个实施例中,快照生成模块100还用于:获取空白事件信息拉链表以及空白数据信息拉链表;抽取日常更新表至外部大数据集群,确定抽取时间基准点;获取抽取时间基准点对应的日常更新表快照。

在一个实施例中,变更记录模块300还用于:获取对日常更新表进行操作时的变更信息,变更信息中包括操作事件的操作类型;根据操作事件的操作类型,向事件信息拉链表以及空白数据信息拉链表中新增变更记录。

在一个实施例中,变更记录模块300还用于:当操作事件的操作类型为DDL操作时,根据日常更新表快照新建空表,空表用于重放操作事件,得到重放完成后空表的变更记录;根据重放完成后空表的变更记录,向事件信息拉链表新增DDL操作的变更记录;或,当操作事件的操作类型为DML操作时,向事件信息拉链表新增DML操作的变更记录,获取操作事件的行数据变更信息以及DML变更类型;根据行数据变更信息以及DML变更类型,向空白数据信息拉链表中新增变更记录。

在一个实施例中,误操作时间点确定模块400还用于:当发生误操作事件时,根据新增变更记录之后的事件信息拉链表与数据信息拉链表,确定误操作事件发生时间点;基于抽取时间基准点以及误操作事件发生时间点,判断新增变更记录之后的事件信息拉链表中是否存在DDL操作的变更记录,确定数据恢复的基准时间点。

在一个实施例中,表结构与数据恢复模块500还用于:根据新增变更记录之后的事件信息拉链表,获取误操作之前最新的日常更新表结构;根据新增变更记录之后的数据信息拉链表、数据恢复的基准时间点以及误操作事件发生时间点,获取误操作之前最新变更的数据信息;根据新增变更记录之后的数据信息拉链表以及日常更新表快照,获取未变更的数据信息;基于误操作之前的日常更新表结构、误操作之前最新变更的数据信息以及未变更的数据信息,得到误操作之前的日常更新表结构以及表数据。

上述误操作数据恢复装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图6所示。该计算机设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)和通信接口。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储误操作数据恢复后的日常更新表。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种误操作数据恢复方法。

本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。

在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。

技术分类

06120115686940