前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >删库跑路?别怕!PolarDB-X 轻松拯救误删数据的你

删库跑路?别怕!PolarDB-X 轻松拯救误删数据的你

作者头像
用户6543014
发布于 2021-08-23 03:49:02
发布于 2021-08-23 03:49:02
61000
代码可运行
举报
文章被收录于专栏:CU技术社区CU技术社区
运行总次数:0
代码可运行

一、故事的起源

在 IT 圈内,“删库跑路”已经成为程序员经常提及的一句玩笑话。虽然是玩笑话,但却反映了数据库内数据对企业的重要性。2020年的“微盟事件”就直接让香港主板上市公司微盟集团的市值一天之内蒸发超10亿元,数百万用户受到直接影响。

以小编多年的数据库从业经验而言,删库跑路事件不常有,但因粗心导致的误删数据却屡见不鲜。要么手误、要么发布的代码存在bug,导致数据被误删,虽是无心,但是破坏力却也不小。

平均每两个月就会有一个类似上面的用户,向我们的值班同学寻求帮助,恢复误删的数据。

对于这些粗心的马大哈,PolarDB-X 是如何帮助他们快速精准的找回丢失数据,拯救他们岌岌可危的工作呢?

首先我们按照操作类型,将误删数据的 Case 进行分类:

  • 行级误删,常见指数:5星

使用 delete/update 语句误删/改多行数据

  • 表级误删,常见指数:3星

使用 drop table 误删除数据表

使用 truncate table 语句误清空数据表

  • 库级误删,常见指数:1星

使用 drop database 语句误删数据库

PolarDB-X 针对上面几种不同的数据误删场景,打造了多项数据恢复的能力,帮助用户快速恢复数据:

本文作为数据恢复系列的第一篇,将重点介绍 PolarDB-X 针对行级误删场景所打造的 SQL 闪回功能。其它的能力将在后续的文章中详细介绍。

二、事故现场

首先,我们以一个实际误删数据的事故开场。

我们来梳理下事故的时间线:

  • T1:DBA 小明维护了一张员工表,里面记录着公司的员工信息。
  • T2:Mary因为个人原因离职了,小明需要删除Mary的记录,因此他到数据库里面执行了一条 DELETE 语句,本意是想删除用户 Mary 的记录,但是因为手贱,漏了一个and语句,导致员工 Ralph 的数据也被意外删除。
  • T3:此时业务仍在继续,John 被删除,Tim 和 Jose 被插入到表中。而此时粗心的小明发现了数据被误删,迫切希望恢复数据。

接下来,围绕这一次的数据误删事故,看看是 PolarDB-X 是如何拯救粗心的小明的?

三、现有方案

在介绍 SQL 闪回之前,我们先简单了解下目前主流的数据库是怎么应对这种行级数据误删的。按照恢复方式大致可以分为如下两类:

  • 恢复数据至误删除前的时间
  • 回滚误删除操作

(一)恢复数据至误删除前的时间

1.基于 PITR

Point-in-time Recovery(PITR): 顾名思义就是利用备份文件将数据库恢复到过去任意的时间点。目前主流的数据库都支持该能力。虽然各家数据库 PITR 的实现方式不尽相同,但是整体的思路还是一致的,如下图所示:

首先依赖数据库的全量备份集将数据恢复到过去备份时的时间点(通常每隔几天备份一次),再依赖增量的数据变更记录,恢复数据至需要的时间点。PolarDB-X 的 PITR 的实现思路也是如此,不过由于分布式事务的存在,PolarDB-X 还做了更多的工作来保证分片间的数据一致性,这部分的工作将在后续的文章中详细介绍。

有了 PITR 的能力后,一旦出现数据误删,最直接的想法便是通过 PITR 将数据库恢复到数据被误删前的时间点,这种方案的好处是可以将数据库恢复到用户需要的任意时间点,但是也存在一些问题:

  • 恢复时间长:由于需要将整个数据库进行恢复,整体耗时较长。即使只误删了100条数据,通过这种方式也需要恢复整个数据库(或者整张表)的数据才行。
  • 额外的存储空间:出于数据安全考虑,PITR 通常会将数据恢复到一个新的数据库中而并非直接覆盖原库中的数据,这就需要额外的存储空间存储新库的数据,当数据量较大的的场景,这部分开销还是很可观的。
  • 部分业务数据丢失:以上面的例子来看,误删数据后业务仍在继续读写数据库。如果将数据库恢复到误删前的时刻,误删后的正常业务数据也会丢失。

下图针对我们的事故现场,给出了基于 PITR 恢复到数据误删除前的示例图。从图中可以看出,恢复到 T2 时刻,虽然误删的数据找回来了,但是 T2 ~ T3 范围内正常的业务改动也丢失了。

2.Flashback Query

针对 PITR 恢复时间长的问题,也有很多优化策略,其中比较有代表的是 Oracle 以及 PolarDB-X的 Flashback Query 功能。

Oracle 的 Flashback Query 基于 undo 信息,直接从中读取数据的前镜像构造历史快照,将数据恢复到误删除前的时间点。PolarDB-X 的 Flashback Query 实现类似,也是利用 undo 表的信息,读取历史时间点的数据,不过相对于单机数据库,我们在恢复到过去时间点的时候,还需要考虑到不同数据分片间的数据一致性,敬请期待后续的文章,此处就不展开介绍了。

下面我们以 Oracle 为例对上面的场景进行说明。假如 T2 对应的时间点是:2021-04-06 19:23:24,那么在 Oracle 中,通过 Flashback Query 功能,我只需要执行下面的 SQL,便能查询到 2021-04-06 19:23:23 时刻 Employee 表的数据:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select * from employee 
as of timestamp 
to_timestamp('2021-04-06 19:23:23','YYYY-MM-DD hh24:mi:ss')

基于查询到的误删除前的数据,用户便能快速恢复数据。

Flashback Query 这种基于 Undo 信息恢复的方式,大大提高了数据恢复的速度,同时也无需额外的存储空间,相对于PITR,恢复效率更高。但是这种方式也存在两个问题:

  • 部分业务数据丢失: 由于本质上数据仍是恢复到误删前的时间点,该问题仍然存在。
  • 时效性问题:flashback 使用的是 undo 表空间的Undo 数据, 一旦undo数据因为空间压力被清除, 则会出现无法flashback的情况。因此这种方式只能支持较短时间内的数据回滚。

(二)回滚误删除操作

既然数据库会通过增量日志来记录数据变更,那么有没有可能直接通过增量日志来回滚误删除操作呢?答案是肯定的,其中比较有代表性的就是 MySQL 的 Binlog Flashback 工具。

当 MySQL 的 binlog format 设置为 row mode 的时候,binlog 中会记录数据行的变更。

对于上图中的 employee 表,当我执行如下的 delete 语句删除了两行数据后,对应的binlog中的记录是如下图所示:

从上图中可以看到,binlog 会记录下被 delete 语句删除的每行数据,update 也是如此。

binlog flashback工具正是基于这样的信息,按照操作的时间范围、操作类型将 binlog 中对应的数据变更进行逆向,生成对应的回滚SQL,进行数据恢复的。

例如对于上面的delete操作,执行的时间是22:21:00, 那么我们只需要在binlog中找到 22:20:59~22:21:01 之间的delete 操作,并将其转换成对应的 insert语句,如下所示,即可找回丢失的数据。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
insert into test.employee values('2', 'Eric Zhang');
insert into test.employee values('3', 'Leo Li');

这种基于增量日志回滚操作的恢复方式,恢复速度较快,且因为增量日志的保存时间较长,恢复数据的时效性相对于 Oracle 的 Flashback Query 的方式也较长。但是这种方式也存在一些问题:

  • 回滚范围过大:现有的 binlog flashback 工具只能通过 SQL 执行时间、SQL 类型等有限的条件在 binlog 中筛选数据并回滚。如果在筛选的时间范围内,有正常的业务操作的话,那也会被回滚。下图在我们事故现场,用过这种恢复方式会存在的问题:

从上图中看出,当我们使用 flashback 工具对 T2~T3 范围内的所有DELETE操作进行回滚的后,比实际需要恢复的数据多出 1 行。如果需要恢复数据的话,还需要进行人工比对,剔除这部分不需要恢复的数据。而这部分人工剔除的工作往往也比较耗时且容易出错。

四、主角登场 - SQL 闪回

PolarDB-X SQL 闪回功能,从实现方式上看属于对误操作进行回滚。不过相对于现有的方案,提供了精确到 SQL 级的回滚能力以及易于上手的操作界面。

(一)SQL 级的回滚能力

何为精确到 SQL 级的回滚能力,即只针对误操作影响的数据行进行回滚,不影响业务正常的数据变更。

同样以上面的误删场景为例,我们看下 PolarDB-X SQL 闪回是如何对误删操作回滚的?

首先每一条在 PolarDB-X 中执行的 SQL 都会分配唯一的身份证号(TraceID),这保证了所有的改动都是可以追溯的。

当我们发现误删数据后,只需要根据误删除 SQL 的 TraceID,通过 SQL 闪回即可精确的找到这条 SQL 误删除数据并进行回滚。如上图所示,我们误操作的 SQL 的 TraceID 是:abcm321, 那么根据这个“身份证号”, SQL 闪回便能精准的找到被这条 SQL 误删除的数据,并生成相应的回滚 SQL。

(二)快速上手

说了这么多,SQL 闪回在 PolarDB-X 中具体是如何使用的呢?SQL 闪回提供了非常便捷的操作方式,只需三步即可完成数据恢复,充分照顾小明焦急的心情。

1.在 SQL 审计功能中找到误操作 SQL 的 “身份证号”

2.SQL 闪回页面填写误操作 SQL 执行的大致时间范围和TraceID,提交 SQL 闪回任务即可。

3.等待闪回任务完成下载恢复文件进行数据恢复即可。

五、总结

本文主要围绕数据误删中的行级误删情况,介绍了 PolarDB-X 的 SQL 闪回是如何帮助用户恢复数据的。相对于现有的数据恢复方案,SQL 闪回的 SQL 级的回滚能力以及易于上手的操作界面能够帮助用户更加精准、更加快速地恢复误删数据。

当然,数据安全是一个永恒的话题,针对不同的数据误删场景,PolarDB-X 已经打造了多项利器来保障用户的数据:PITR、Recycle Bin、Flashback Query 等等。后续的文章将对这些能力逐一介绍,敬请期待~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-08-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SACC开源架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
半导体大厂齐晒成绩单:2020普大喜奔,2021持续向好?
近日,各半导体大厂纷纷紧锣密鼓地发布了2020年第四季及全年财报。从大家晒出的成绩单看,各个都是成绩斐然。
AI 电堂
2021/02/07
5330
汽车和工业市场需求强劲!意法半导体2022年净利润增长100%!
2月2日消息,意法半导体公布2022年第四季度及全年财报,全年营收增长26.4%,净利润增长100%达39.6亿美元!
芯智讯
2023/02/09
3720
存储市场大衰退:三星净利大跌69%,SK海力士创近10年最大亏损!设备投资遭大砍!
2022年,在全球通货膨胀、俄乌冲突、新冠疫情等诸多因素综合影响之下,市场对于终端设备的需求持续下滑,随之带动对于存储芯片的需求持续走弱。
芯智讯
2023/02/09
4770
又一家MCU大厂业绩大跌,晶圆厂还计划停工四周!
自2022年下半年以来,由于半导体市场需求下滑,叠加此前MCU缺货导致的各家大厂持续扩产的产能开出,市场出现了供过于求。各家厂商为了争夺市场、降低库存,纷纷开启了价格战,这也使得不少MCU大厂的业绩大变脸。
芯智讯
2024/02/06
1470
又一家MCU大厂业绩大跌,晶圆厂还计划停工四周!
业绩爆雷!英特尔财报「灾难级」惨淡,市值蒸发540亿
---- 新智元报道   编辑:David 【新智元导读】英特尔发布Q4季报和2022年报,数据惨淡。在过去十个季度中第九次业绩低于市场预期。股价应声大跌,市值蒸发超过80亿美元。 财报惨淡,英特尔市值蒸发540亿! 英特尔周四公布了相当惨淡的财务业绩,公司本季度的收入环比和同比都有所下降,由于其利润率崩溃到多年来的最低点,公司亏损了7亿美元。 虽然在2022年仍有盈利,但本季度的盈利将进一步下降,因为客户将积极削减其库存。英特尔预计,下一季度其销售额将进一步下降。 受财报影响,英特尔的市值在周五蒸
新智元
2023/02/24
3230
业绩爆雷!英特尔财报「灾难级」惨淡,市值蒸发540亿
中芯国际及华虹Q4净利环比暴涨,但毛利率大幅降低!股价大跌!
2月6日晚间,国内晶圆代工双雄中芯国际、华虹半导体均公布了2023年第四季财报及2023年全年业绩。
芯智讯
2024/02/26
1980
中芯国际及华虹Q4净利环比暴涨,但毛利率大幅降低!股价大跌!
业绩不及预期,汽车芯片大厂安森美裁员900人!股价暴跌近22%!
10月31日消息,美国芯片大厂安森美半导体于当地时间10月30日公布了2023财年第三季度财报,虽然该季业绩表现略高于市场预期,但是对于第四季度的业绩指引大幅低于分析师的预期,并预期汽车市场放缓,直接导致其股价大跌。
芯智讯
2023/11/01
2740
业绩不及预期,汽车芯片大厂安森美裁员900人!股价暴跌近22%!
*ST左江涉嫌重大财务造假;Meta发布开源大模型Code Llama 70B;中国联通人工智能创新中心成立丨每日大事件
1月30日,证监会通报了对*ST左江(以下简称左江科技)财务造假案阶段性调查进展情况。证监会初步查明,左江科技2023年披露的财务信息严重不实,涉嫌重大财务造假。该案目前正在调查过程中,证监会将尽快查明违法事实,依法严肃处理。去年左江科技股价从不到百元上涨至最高299.8元。因为左江科技搭上了DPU芯片的概念。自2021年起,左江科技不断披露“可编程网络数据处理芯片”的研发。
数据猿
2024/02/23
2240
*ST左江涉嫌重大财务造假;Meta发布开源大模型Code Llama 70B;中国联通人工智能创新中心成立丨每日大事件
Q1利润暴跌96%!三星宣布减产,存储市场能否触底回升?
4月7日,三星电子今日公布的未经审计的第一季度初步业绩报告显示,第一季度销售额同比下滑19%至63万亿韩元,低于分析师预估的64.57万亿韩元;第一季度营业利润同比暴跌96%至6000亿韩元(约4.555亿美元),远低于分析师预估的1.42万亿韩元,创2009年金融危机以来最低。
芯智讯
2023/04/11
4030
Q1利润暴跌96%!三星宣布减产,存储市场能否触底回升?
净利润暴跌60%!英特尔业绩暴雷:股价大跌近10%!
1月27日消息,当地时间周四美股收盘后,芯片巨头英特尔发布了糟糕的2022 年第四季度和全年财报。同时,英特尔还预计,2023年第一季度将出现意外亏损,销售额预期区间与分析师的预期相差数十亿美元,这也将是英特尔自2010年以来最低的季度总营收。
芯智讯
2023/02/09
3040
AMD业绩超预期:净利润同比增长34%!但今年一季度营收预计将下跌10%!
2月1日消息,继日前英特尔公布了惨淡的业绩之后,处理器大厂AMD于当地时间周二公布了超乎分析师预期的 2022 财年第四季度及全年财报,但预估2023年第一季度营收较去年同期将下滑约10%。
芯智讯
2023/02/09
3300
2023年全球半导体市场将同比下滑14%,创2001年以来最大跌幅
11月21日消息,根据 WSTS 最新公布的数据显示,与 2022 年第二季度相比,2022 年第三季度半导体市场环比下滑了 6.3%。基于对2022年第四季度的展望,2022年下半年半导体市场将比2022年上半年下滑10%以上。这也将是自2009年上半年同比下滑21%以来的最大跌幅。
芯智讯
2022/11/22
2900
2023年全球半导体市场将同比下滑14%,创2001年以来最大跌幅
台积电Q1营收将下滑16%,全年资本支出减少12.5%!最新海外建厂及产能规划曝光
1月12日消息,台积电今日召开线上法说会,解析了2022年四季度财报,以及对于2023年一季度的业绩预期。同时,台积电还对于海外建厂及产能规划、今年3nm营收占比、半导体景气何时复苏等外界关心的问题进行了回应。
芯智讯
2023/02/09
3150
高通手机芯片营收增长16%,车用芯片破纪录!
2月1日消息,处理器大厂高通(Qualcomm)于美国股市周三(1月31日)盘后公布了截至2023年12月24日为止的2024财年第一财季(相当于2023年第四季度)财报。
芯智讯
2024/02/06
1510
高通手机芯片营收增长16%,车用芯片破纪录!
联电Q1产能利用率将降至70%,但不会降价
1月17日消息,据中国台湾媒体工商时报报道,晶圆代工大厂联电于16日召开法说会,公布了去年四季度业绩,并表示由于客户积极调整库存,联电今年一季度晶圆出货预计环比减少17%-19%,产能利用率预计将降至 70%,但晶圆代工价格维持不变。
芯智讯
2023/02/09
2780
亚马逊、微软、谷歌最新财报出炉,云业务上演“神仙打架”?
2月1日,谷歌母公司Alphabet公布了截至2021年12月31日的Q4及全年财报。
科技云报道
2022/04/16
5860
亚马逊、微软、谷歌最新财报出炉,云业务上演“神仙打架”?
英特尔遭遇「灾难级」财报!裁员、砍业务、董事会主席辞职,甚至给不出2023业绩预期
羿阁 鱼羊 发自 凹非寺 量子位 | 公众号 QbitAI 英特尔陷入悲惨世界。 2022年第四季度财报一出,全球芯片巨头英特尔“遇灾”实锤了: 第四季度营收一口气跌了1/3,不仅低于市场预期,还创下2017年以来季度收入新低。 连英特尔CEO帕特·基辛格都不得不承认: 英特尔的第四季度很艰难。 更为糟糕的是,“我们预计今年上半年仍会很困难”: 英特尔给出的第一季度营收预期,仅在105亿-115亿美元之间——直接回到了2010年的水平。 这波数据一公布,市场立马就给打上了“灾难级”标签。 《华尔街日报》直
量子位
2023/02/28
3960
英特尔遭遇「灾难级」财报!裁员、砍业务、董事会主席辞职,甚至给不出2023业绩预期
三星Q3净利润回升至299亿元,但半导体业务仍亏损203.6亿元
10月31日,三星电子正式公布了2023年第三季业绩,销售额为67.40万亿韩元,同比下滑12.21%,略低于市场预估的67.62万亿韩元;净利润虽然同比下滑了40%至5.5万亿韩元(约合人民币299亿元),但仍远超分析师预期的2.52万亿韩元,盈利情况大幅改善。
芯智讯
2023/11/01
2610
三星Q3净利润回升至299亿元,但半导体业务仍亏损203.6亿元
连续7个季度营收创纪录!ADI CEO:2022年是ADI历史上最赚钱的一年!
11月23日消息,模拟芯片大厂ADI(Analog Devices, Inc., 亚德诺半导体)于美国股市周二(11 月 22 日)盘前公布了创纪录的2022会计年度第四季(截至10月29日为止)财报,以及创纪录的2022财年的经营业绩。
芯智讯
2022/11/29
3570
台积电喊出25%增长目标,半导体产业的春天来了?
1月18日下午,晶圆代工龙头大厂台积电召开业绩说明会,介绍了2023年四季度的业绩,并公布了对于2024年一季度及2024年全年的业绩预期。总体来说台积电的业绩及市场展望略高于市场的预期,这似乎也反应了全球半导体下行周期已经结束,在经历了一年多时间的“寒冬”之后,半导体产业的“春天”终于来了?
芯智讯
2024/01/23
2100
台积电喊出25%增长目标,半导体产业的春天来了?
推荐阅读
半导体大厂齐晒成绩单:2020普大喜奔,2021持续向好?
5330
汽车和工业市场需求强劲!意法半导体2022年净利润增长100%!
3720
存储市场大衰退:三星净利大跌69%,SK海力士创近10年最大亏损!设备投资遭大砍!
4770
又一家MCU大厂业绩大跌,晶圆厂还计划停工四周!
1470
业绩爆雷!英特尔财报「灾难级」惨淡,市值蒸发540亿
3230
中芯国际及华虹Q4净利环比暴涨,但毛利率大幅降低!股价大跌!
1980
业绩不及预期,汽车芯片大厂安森美裁员900人!股价暴跌近22%!
2740
*ST左江涉嫌重大财务造假;Meta发布开源大模型Code Llama 70B;中国联通人工智能创新中心成立丨每日大事件
2240
Q1利润暴跌96%!三星宣布减产,存储市场能否触底回升?
4030
净利润暴跌60%!英特尔业绩暴雷:股价大跌近10%!
3040
AMD业绩超预期:净利润同比增长34%!但今年一季度营收预计将下跌10%!
3300
2023年全球半导体市场将同比下滑14%,创2001年以来最大跌幅
2900
台积电Q1营收将下滑16%,全年资本支出减少12.5%!最新海外建厂及产能规划曝光
3150
高通手机芯片营收增长16%,车用芯片破纪录!
1510
联电Q1产能利用率将降至70%,但不会降价
2780
亚马逊、微软、谷歌最新财报出炉,云业务上演“神仙打架”?
5860
英特尔遭遇「灾难级」财报!裁员、砍业务、董事会主席辞职,甚至给不出2023业绩预期
3960
三星Q3净利润回升至299亿元,但半导体业务仍亏损203.6亿元
2610
连续7个季度营收创纪录!ADI CEO:2022年是ADI历史上最赚钱的一年!
3570
台积电喊出25%增长目标,半导体产业的春天来了?
2100
相关推荐
半导体大厂齐晒成绩单:2020普大喜奔,2021持续向好?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验