PostgreSQL 数据找回工具 `pg_recovery` 可以找回 `commit` / `delete` / `rollback` / `drop column` 操作后的数据. 并以表的形式返回,可以方便的各种查询,帮助寻找需要的数据.
centos中安装过程如下
1. postgresql-14安装
参考相关安装教程,要注意的是pg_recovery需要安装postgresql14-devel,参考如下:
yum install centos-release-scl-rh
yum install postgresql14-devel
2. 插件下载
github下载地址:https://github.com/radondb/pg_recovery
3. 编译插件
cd /home/pg_recovery
make PG_CONFIG=/usr/pgsql-14/bin/pg_config
make install PG_CONFIG=/usr/pgsql-14/bin/pg_config
4. 安装插件
psql
create extension pg_recovery ;
安装插件时要注意如果不只postgres库,则需要在每个库中进行安装。
5. 使用范例
postgres=# create table lxs(id1 int,id2 int);
CREATE TABLE
postgres=# insert into lxs values (1,11);
INSERT 0 1
postgres=# insert into lxs values (2,22);
INSERT 0 1
postgres=# select * from lxs;
id1 | id2
-----+-----
1 | 11
2 | 22
(2 rows)
postgres=#
总结
在没有备份数据库的情况下,如果出现数据误操作,可以通过pg_recovery去恢复数据,但是如果表做了vacuum或者vacuum full操作清理了死元组后,pg_recovery无法对表数据进行恢复。具体清理频率可以查看vacuum_defer_cleanup_age参数
show vacuum_defer_cleanup_age;
生产上要保证数据的安全,还是应该通过wal归档和做备份来保证。