PostgreSQL误操作恢复工具之pg_dirtyread插件

0    983    2

Tags:

👉 本文共约1917个字,系统预计阅读时间或需8分钟。

简介

github:https://github.com/df7cb/pg_dirtyread

误删数据总是在所难免,一种是使用延时备库,在延迟间隔内可以从备库恢复数据,另一种使用开源插件pg_dirtyread,pg_dirtyread使用时需要关闭表的自动清理功能,不然可能也恢复不了。

Oracle数据库有时候不小心删除掉数据,想查询这些数据,或者恢复数据,就可以使用带有as of子句的select语句进行闪回查询。

PG粉有福了,下面介绍一种类似“闪回查询”插件 pg_dirtyread,可以读取未被vacuum的dead数据。

版本支持:10和11已经支持,2.0以后的版本已经支持12和13,社区还是很活跃。

语法:

安装插件pg_dirtyread

GitHub地址:https://github.com/df7cb/pg_dirtyread

若安装报权限问题,例如“Fatal error: can't create pg_dirtyread.o: Permission denied”,则可以使用root用户安装:

示例:

安装插件pageinspect extension

pageinspect模块提供函数让你从低层次观察数据库页面的内容,这对于调试目的很有用。所有这些函数只能被超级用户使用。

pageinspect的源码在postgres源码包的contrib目录下,解压postgre源码包后进入对应的目录。

有makefile文件,直接用make命令进行编译即可。编译后,只要得到pageinspect.so这个文件。

安装插件:

若是yum安装,且安装过postgresql13-contrib包,则直接create extension pageinspect;即可。

官网的3个例子

样例1: 删除找回

可以看到, 被删除的记录(1, 'Test')已经可以查询到。

样例2:列被drop的情况

可以看到,虽然b列被drop掉了,但是仍然可以读取到数据。

如何指定列:这里使用dropped_N来访问第N列,从1开始计数。

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复