您的位置:首页 > 娱乐 > 八卦 > 项目管理流程_卫健委:以最低成本控制疫情dy_百度一下你就知道官页_网络舆情应急预案

项目管理流程_卫健委:以最低成本控制疫情dy_百度一下你就知道官页_网络舆情应急预案

2024/12/24 21:48:43 来源:https://blog.csdn.net/weixin_42329915/article/details/144286274  浏览:    关键词:项目管理流程_卫健委:以最低成本控制疫情dy_百度一下你就知道官页_网络舆情应急预案
项目管理流程_卫健委:以最低成本控制疫情dy_百度一下你就知道官页_网络舆情应急预案

第一部分 文档描述

本文档适用数据表数据被delete类型的删除语句情况下恢复,需要满足数据库或数据表未被vacuum或者vacuum full

第二部分 操作步骤

2.1 创建测试表
创建测试表novels,并插入测试数据

dbtest=# create table novels (name varchar(200), id int);
CREATE TABLE
dbtest=# insert into novels values('三国演义',1);
INSERT 0 1
dbtest=# insert into novels values('水浒传',2);
INSERT 0 1
dbtest=# insert into novels values('西游记',3);
INSERT 0 1
dbtest=# insert into novels values('红楼梦',4);

2.2 查询表文件位置

查询测试表的文件位置

dbtest=# select oid from pg_database where datname='dbtest';oid  
-------16571
(1 row)dbtest=# select oid,relfilenode from pg_class where relname='novels';oid  | relfilenode 
-------+-------------24783 |       24783
(1 row)

也可以通过函数获取表文件位置

dbtest=# select pg_relation_filepath(' novels ');
pg_relation_filepath 
----------------------base/16571/24783
(1 row)

2.3 模拟删除表数据

拟delete删除测试表的数据

dbtest=# delete from novels;
DELETE 4
dbtest=# select * from novels;name | id 
------+----
(0 rows)

2.4 安装pg_filedump

本操作文档通过pg_filedump插件解析表文件来获取数据,我们通过git下载并安装

[root@VM-4-13-centos ~]# yum install git -y
[postgres@VM-4-13-centos ~]$ cd pg_filedump/
[postgres@VM-4-13-centos pg_filedump]$ make
[postgres@VM-4-13-centos pg_filedump]$ make install
/usr/bin/mkdir -p '/software/pgsql13/bin'
/usr/bin/install -c  pg_filedump '/software/pgsql13/bin'

2.5 解析删除的数据

解析被删除的数据之前首先查询表在删除时间点之后是否被vacuum(包括手动vacuum和autovacuum)

dbtest=# \x
Expanded display is on.
dbtest=# select * from pg_stat_all_tables where relname = 'novels';
-[ RECORD 1 ]-------+------------------------------
relid               | 24783
schemaname          | public
relname             | novels
seq_scan            | 13
seq_tup_read        | 44
idx_scan            | 
idx_tup_fetch       | 
n_tup_ins           | 28
n_tup_upd           | 0
n_tup_del           | 22
n_tup_hot_upd       | 0
n_live_tup          | 6
n_dead_tup          | 18
n_mod_since_analyze | 50
n_ins_since_vacuum  | 24
last_vacuum         | 2022-02-09 11:27:30.501748+08
last_autovacuum     | 
last_analyze        | 
last_autoanalyze    | 
vacuum_count        | 1
autovacuum_count    | 0
analyze_count       | 0
autoanalyze_count   | 0

如果没有被vacuum,则关闭表级别的autovacuum并开始解析步骤

dbtest=# alter table novels set (autovacuum_enabled = off);

通过上述步骤查询到的表数据文件来解析被删除的数据

[postgres@VM-4-13-centos data]$ pg_filedump -D charn,int base/16571/24783*******************************************************************
* PostgreSQL File/Block Formatted Dump Utility
*
* File: base/16571/24783
* Options used: -D charn,int
*******************************************************************Block    0 ********************************************************
<Header> -----Block Offset: 0x00000000         Offsets: Lower      40 (0x0028)Block: Size 8192  Version    4            Upper    8024 (0x1f58)LSN:  logid      0 recoff 0x070351c0      Special  8192 (0x2000)Items:    4                      Free Space: 7984Checksum: 0x0000  Prune XID: 0x00000242  Flags: 0x0000 ()Length (including item array): 40<Data> -----Item   1 -- Length:   44  Offset: 8144 (0x1fd0)  Flags: NORMAL
COPY: 三国演义        1Item   2 -- Length:   40  Offset: 8104 (0x1fa8)  Flags: NORMAL
COPY: 水浒传        2Item   3 -- Length:   40  Offset: 8064 (0x1f80)  Flags: NORMAL
COPY: 西游记        3Item   4 -- Length:   40  Offset: 8024 (0x1f58)  Flags: NORMAL
COPY: 红楼梦        4

可以使用以下命令来过滤需要的数据

[postgres@VM-4-13-centos data]$ pg_filedump -D charn,int base/16571/24783|grep COPY
COPY: 三国演义        1
COPY: 水浒传        2
COPY: 西游记        3
COPY: 红楼梦        4

我们将COPY字段过滤并写入需要的数据到csv文件中

[postgres@VM-4-13-centos data]$ pg_filedump -D varchar,int base/16571/24783|grep COPY|sed 's/\COPY: //g' > import.csv
[postgres@VM-4-13-centos data]$ more import.csv 
三国演义        1
水浒传        2
西游记        3
红楼梦        4

2.6 恢复数据到原表中

使用copy命令导入csv文件中的数据,并验证数据是否恢复

dbtest=# copy novels from '/software/pgsql13/data/import.csv';
dbtest=# select * from novels ;name   | id 
----------+----三国演义 |  1水浒传   |  2西游记   |  3红楼梦   |  4
(4 rows)

hhh6.jpg

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com