⬆️ 点箭头指向的蓝色小字关注我
摘 要
本帖通过简单的例子介绍当前情况下如何恢复delete误删的数据,如需了解更多精彩内容,请点击文末“阅读原文”进入华为云GaussDB(DWS)开发者论坛学习探索。
背 景
前 提
构 建 场 景


恢 复 步 骤
1、连接任意一个dn(连接cn的话一次性查出来数据太多,数据量小时可以连cn起只读事务处理),执行:
set enable_show_any_tuples = on;
select xmin,xmax,* from test where a < 50 order by xmax::text desc;

说明:enable_show_any_tuples参数可以显示已经被delete但是还未vacuum回收的脏数据,此参数只在只读事务中生效,是session级的参数;
在这里我们需要将脏数据按照xmax排序,取最大的xmax,这是为了保证我们只恢复此次delete删除的数据,不多恢复之前已经delete的数据;
在这里不能使用建新表insert into的方式恢复,因为enable_show_any_tuples参数只在只读事务中生效,一旦在dn开启read write事务,此参数将失效,也就无法再看到delete的脏数据。
2、通过gsql的方式,将查询结果导出到文本,如果数据量较大,可以分批处理
gsql -d postgres -p 25330 -c "set enable_show_any_tuples = on; select * from test where a < 50 and xmax = '413471'" > result;

3、对文本进行处理,通过copy的方式重新导回到数据库内;
4、对每个dn都执行以上操作,即可恢复误删除的数据。

华为云GaussDB(DWS)数据仓库以2048大规模节点通过信通院评测认证 五大关键能力,华为云原生数据仓库GaussDB(DWS)深度技术解读 华为GaussDB(DWS)数据仓库,助力招行“人人用数,创新前行” GaussDB(DWS)性能调优系列实现篇六:十八般武艺Plan hint运用 GaussDB(DWS)性能优化最佳实践
华为云数仓GaussDB(DWS)
和您分享最新最全的PB级数仓黑科技

点左下角可“阅读原文”了解更多哦~




