Maxcompute误删数据恢复

背景

误删了Maxcompute中某个表的数据,并通过一些操作命令恢复到了未删之前的状态。(跟Flink里的checkpoint很类似)

主要参考了阿里云官网的如下文章:

备份与恢复

概述

MaxCompute提供数据备份与恢复功能,系统会自动备份数据的历史版本(例如被删除或修改前的数据)并保留一定时间,可以对保留周期内的数据进行快速恢复,避免因误操作丢失数据。

由此得知,Maxcompute会为我们默认免费提供一天的数据恢复功能,如果你删除了表或者表中的数据,那么可在24小时之内进行恢复

步骤

如果整个表都删除了,则先执行

1
show history for tables [like <table_name>];

然后进行表恢复,继续执行

1
restore table table_name ('id'='xxxxx');

根据右边 DropTime 时间,找到对应的id 恢复到想恢复的版本,但是注意一定要在24小时之内的id

如果未删除表,只是删除了数据则直接到这一步

1
show history for table <table_name>;

LSN为数据的版本

接下来通过如下命令进行数据恢复

1
restore table table_name to LSN 'xxxx';

结尾语

如果想可以备份能更多的天数,则可以执行如下命令

1
setproject odps.timemachine.retention.days=days;

但是天下没有免费的午餐,所以需要额外付费

最后,误删数据真是一件头疼的事情!!!