PGSQL误删除整表数据恢复
·
1、备份数据目录
在本地复制PGSQL数据库数据目录
cp -Rp pgsql pgbakup
压缩备份的数据库目录
zip -r pgbakup.zip pgbakup/

2、部署新的pgsql
下载pgsql
下载地址:https://ftp.postgresql.org/pub/source/v15.12/postgresql-15.12.tar.gz
安装就先不说了。
3、将备份文件放在新部署的pgsql数据目录中

4、启动新PGSQL
/usr/local/pgsql/bin/postgres -D /data/p_backup

5、安装pg_filedump数据恢复插件
下载地址:https://codeload.github.com/df7cb/pg_filedump/zip/refs/tags/REL_17_4
进入安装目录
cd /data/install-page

解压pg_filedump-REL_17_4.zip

进入pg_filedump-REL_17_4目录进行安装

编译安装,#PG_CONFIG=/usr/local/pgsql/bin/pg_config为pg_config绝对路径
make PG_CONFIG=/usr/local/pgsql/bin/pg_config
make install PG_CONFIG=/usr/local/pgsql/bin/pg_config
安装完成后在/usr/local/pgsql/bin/目录下有pg_filedump命令

6、定位被误删表door_history_record物理存储文件路径
select pg_relation_filepath('door_history_record');

会输出/base/16388/16389,base:默认表空间目录,16388:数据库的OID,16389:关系的filenode号
7、查看通过dump出来door_history_record表中数据
显示格式化的块内容转储以及解释
./pg_filedump -f /data/pgsql/base/16388/16389

显示已解释的项目详细信息
./pg_filedump -i /data/pgsql/base/16388/16389

按字段类型显示解析的被删除数据
./pg_filedump -D varchar,varchar,varchar,varchar,int,timestamp,varchar,varchar /data/pgsql/base/16388/16389
#varchar,varchar,varchar,varchar,int,timestamp,varchar,varchar表里所有字段的类型,按前后顺序写。

8、过滤数据,并恢复
./pg_filedump -D varchar,varchar,varchar,varchar,int,timestamp,varchar,varchar /data/pgsql/base/16388/16389 | grep COPY |awk '{$1=null;print $0}'|sed 's/^[ ]*//g'

将丢失数据转存至txt文本文件中。
./pg_filedump -D varchar,varchar,varchar,varchar,int,timestamp,varchar,varchar /data/pgsql/base/16388/16389 | grep COPY |awk '{$1=null;print $0}'|sed 's/^[ ]*//g'> /home/postgres/t.txt
将文本文件数据导入pgsql
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)