文章目录
- 环境
- 文档用途
- 详细信息
- 相关文档
环境
系统平台:Linux x86-64 Red Hat Enterprise Linux 7 版本:4.5.8
文档用途
介绍误删表数据后,使用已有的全量备份,恢复表数据;适用于不需要恢复到某一时间点的情况。
详细信息
1、正常备份目录如下
archive
hgdbbak_20250517_1
hgdbbak_20250517_1.log
hgdbbak_20250518_1
hgdbbak_20250518_1.log
hgdbbak_20250519_1
hgdbbak_20250519_1.log
runstat.info
2、查看备份日志
备份日志log文件出现如下文字,说明使用的全量备份是一个完整的可用备份。
cat hgdbbak_20250519_1.log
31407/31407 kB (100%), 1/1 tablespace
pg_basebackup: write-ahead log end point: 0/A000100
pg_basebackup: waiting for background process to finish streaming …
pg_basebackup: syncing data to disk …
pg_basebackup: base backup completed
2025-05-19 15:45:41 The name of the backup file is :hgdbbak_20250519_1,the name of the archive is:
2025-05-19 15:45:41 There are no archives to be deleted.
3、复制备份
复制备份文件:
cp -a hgdbbak_20250519_1 hgdbbak_20250519 -rf
4、添加或修改参数:端口,归档
cd hgdbbak_20250519
vi postgresql.auto.conf
port=5867 #与现数据库端口不同即可
archive_mode='off' #修改为off
5、启动数据库,备份表数据
#指定data目录启动数据库
cd ../
pg_ctl start –D ./hgdbbak_20250519 #当前目录启动端口为5867,停止时也需要指定data目录停止,pg_ctl stop -D ./hgdbbak_20250519
#备份表数据
pg_dump –h 127.0.0.1 –p 5867 –d testdb –U sysdba –table=public.table1 -v -Fc -f /path/table1.backup
6、恢复表数据
#修改表名,因为恢复时表名相同会覆盖原表数据
psql testdb sysdba –p 5866
testdb=# alter table table1 rename to table1_bak;
#恢复数据
pg_restore –h 127.0.0.1 –p 5866 –U sysdba –d testdb /path/table1.backup
7、对比数据
使用sql查询,对比两张表的数据,插入误删的数据。
相关文档
011979101:如何恢复误删的数据


