Postgres数据库truncate表无有效备份恢复---惜分飞

news/2025/10/4 23:54:24/文章来源:https://www.cnblogs.com/xifenfei/p/19126074

联系:手机/微信(+86 17813235971) QQ(107644445)QQ咨询惜分飞

标题:Postgres数据库truncate表无有效备份恢复

作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]

创建一个Postgres表,并插入数据

postgres=# CREATE TABLE "PeisInterfaceLog"(
postgres(#         "PeisInterfaceLogId" text,
postgres(#         "PeisDepartmentId" text,
postgres(#         "PeisDepartmentName" text,
postgres(#         "PeisInterfaceSubjectType" text,
postgres(#         "PeisInterfaceSubjectId" text,
postgres(#         "PeisInterfaceNo" text,
postgres(#         "PeisInterfaceName" text,
postgres(#         "PeisInterfaceDirection" text,
postgres(#         "PeisInterfaceCallAddress" text,
postgres(#         "PeisInterfaceLogStartTime" timestamp,
postgres(#         "PeisInterfaceInputContent" json,
postgres(#         "PeisInterfaceInputTranscodeContent" json,
postgres(#         "PeisInterfaceOutContent" json,
postgres(#         "PeisInterfaceOutTranscodeContent" json,
postgres(#         "PeisInterfaceSuccessSign" int4,
postgres(#         "PeisInterfaceLogStatusCode" text,
postgres(#         "PeisInterfaceLogNote" text,
postgres(#         "PeisInterfaceLogTimestamp" timestamp,
postgres(#         "PeisInterfaceLogInfo" text,
postgres(#         "PeisPatientRegisterId" text
postgres(# );
CREATE TABLE
postgres=# \i /postgres/COPY/public_copy.sql
SET
COPY 722957
postgres=# select count(1) from "PeisInterfaceLog";
 count 
--------
 722957
(1 row)

验证truncate操作,引起Postgres中oid的变化

postgres=# checkpoint;
CHECKPOINT
postgres=#  show data_directory;
 data_directory
----------------
 /pgdata
(1 row)
postgres=# select oid, datname from pg_database ;
  oid  |  datname 
-------+-----------
 13676 | postgres
     1 | template1
 13675 | template0
(3 rows)
postgres=# select relname, relowner, relfilenode from pg_class where relowner = 10 and relname like '%PeisInterfaceLog%';
     relname      | relowner | relfilenode
------------------+----------+-------------
 PeisInterfaceLog |       10 |       16384
(1 row)
 
postgres=# truncate table "PeisInterfaceLog";
TRUNCATE TABLE
postgres=# select count(1) from  "PeisInterfaceLog";
 count
-------
     0
(1 row)
 
postgres=# select relname, relowner, relfilenode from pg_class where relowner = 10 and relname like '%PeisInterfaceLog%';
     relname      | relowner | relfilenode
------------------+----------+-------------
 PeisInterfaceLog |       10 |       16394
(1 row)

使用工具进行初始化字典信息

PDU.public=# b;
 
开始初始化...
 -pg_database:</pgdata/global/1262>
 
数据库:postgres
      -pg_schema:</pgdata/base/13676/2615>
      -pg_class:</pgdata/base/13676/1259> 共88行
      -pg_attribute:</pgdata/base/13676/1249> 共2950行
      模式:
        ▌ public 1张表
 
PDU.public=# use postgres;
 
┌────────────────────────────────────────┐
│          模式             │  表数量    │
├────────────────────────────────────────┤
│    public                 │  1         │
└────────────────────────────────────────┘
postgres.public=# set public;
 
┌──────────────────────────────────────────────────┐
│               表名                  │  表大小    │
├──────────────────────────────────────────────────┤
│    PeisInterfaceLog                 │  0         │
└──────────────────────────────────────────────────┘
        仅显示表大小排名前 1 的表名
postgres.public=# \d PeisInterfaceLog;
 
┌──────────────────────────────────────────────────────────────┐
│                            列类型                            │
└──────────────────────────────────────────────────────────────┘
text,text,text,text,text,text,text,text,text,timestamp,json,json,json,json,int4,text,text,timestamp,text,text

配置软件磁盘扫描操作(pdu.ini中配置)

#dropScan需要扫描的磁盘
DISK_PATH=/data/test.dd
#dropScan时跳跃的数据块数量,数值越小覆盖磁盘越全面,速度越慢
BLOCK_INTERVAL=5

启用磁盘扫描操作

PDU.public=# p idxmode off;
 
┌─────────────────────────────────────────────────────────────────┐
│              参数                │             当前值           │
├─────────────────────────────────────────────────────────────────┤
│    startwal                      │                              │
│    endwal                        │                              │
│    startlsnt                     │                              │
│    endlsnt                       │                              │
│    starttime                     │                              │
│    endtime                       │                              │
│    resmode(Data Restore Mode)    │              TIME            │
│    exmode(Data Export Mode)      │              CSV             │
│    encoding                      │              UTF8            │
│    restype(Data Restore Type)    │              DELETE          │
          ----------------------DropScan----------------------
│    dsoff(DropScan startOffset)   │              0               │
│    blkiter(Block Intervals)      │              5               │
│    itmpcsv(Items Per Csv)        │              100             │
│    idxmode                       │              off             │
└─────────────────────────────────────────────────────────────────┘
PDU.public=# ds;
 
 ▌全量扫描恢复模式
 
 ▌数据文件扫描
┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
          表名           │                                   结果                                   
├────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
 PeisInterfaceLog           99.976 %(21469593600)   数据页: 71158      成功: 722947    (疑似乱码: 2809      ) 失败: 0
 
耗时 15.28 秒
└────────────────────────────────────────────────────────────────────────────────────────────────────┘
扫描完毕,文件目录如下:
        restore/dropscan/PeisInterfaceLog
PDU.public=# ds copy;
已导出:
/restore/dropscan/PeisInterfaceLog/COPY.sql
PDU.public=#
 
[root@xifenfei PeisInterfaceLog]# more COPY.sql
[root@xifenfei PeisInterfaceLog]# cat /restore/dropscan/PeisInterfaceLog/COPY.sql
COPY PeisInterfaceLog FROM '/restore/dropscan/PeisInterfaceLog/09-28-21:29:55_226738176_32760blks_336787items.csv';
COPY PeisInterfaceLog FROM '/restore/dropscan/PeisInterfaceLog/09-28-21:30:01_595968000_32767blks_330416items.csv';
COPY PeisInterfaceLog FROM '/restore/dropscan/PeisInterfaceLog/09-28-21:30:04_1116061696_5631blks_55744items.csv';

把恢复数据导入到Postgres数据中

[root@xifenfei ~]# su - postgres
[postgres@xifenfei ~]$ psql
psql (12.8)
Type "help" for help.
 
postgres=# \i /restore/dropscan/PeisInterfaceLog/COPY.sql
COPY 336787
COPY 330416
COPY 55744
postgres=# select count(1) from "PeisInterfaceLog";
 count 
--------
 722947
(1 row)

经过上述扫描测试证明该工具实现了在Postgres中truncate数据的绝大部分数据恢复(这里的乱码不是由于没有扫描到数据,主要是由于个别字符串由于类型判断关系识别不对导致乱码抛弃).
如果你遇到Postgres 数据库由于drop/truncate等误操作,而且无有效备份进行恢复,面临数据丢失风险,请第一时间保护现场(数据文件所在分区尽可能不要有写入操作),联系我们提供专业恢复技术支持:
电话/微信:17813235971    Q Q:107644445QQ咨询惜分飞    E-Mail:dba@xifenfei.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/927700.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

河北手机网站制作公司国内做网站需要做icp备案吗

本篇简介在上一篇我们介绍了SpringCloud中的注册中心组件Eureka。Eureka的作用是做服务注册与发现的&#xff0c;目的是让不同的服务与服务之间都可以通过注册中心进行间接关联&#xff0c;并且可以通过注册中心有效的管理不同服务与服务的运行状态。但在微服务的架构中&#x…

P14041 [PAIO 2025] Towers

更好的阅读体验 题意 实现一个函数,求在一个 \(N \times M\) 的矩阵中放置最少炮塔数的方案,使得每个 \(K \times K\) 的正方形区域内至少有一个炮塔。 思路 观察样例可以发现,在最优情况下 每行每隔 \(K-1\) 格就有…

智能优化网站泰安飞讯网络有限公司

centos安装mysql8数据库,下载的是rpm-bundle.tar包,这样可以在内网环境离线安装,工作中医院的服务器很多也是内网的,所以这里记录下rpm-bundle.tar包安装的步骤。 lscpu 查看处理器是x86还是arm 下载对应的版本 bundle tar包 ((mysql-8.2.0-1.el7.x86_64.rpm-bundle.tar))…

提供手机网站开发重庆高端网站seo

来源&#xff1a;通信产业报 概要&#xff1a;从人类进入信息时代以来&#xff0c;经济社会发展对信息互联互通的需求不断提升&#xff0c;通信的范围和边界已从人与人逐渐拓展到物与物以及人与物之间。 从人类进入信息时代以来&#xff0c;经济社会发展对信息互联互通的需求不…

哪些网站用python做的网页是怎么制作的

本博客为个人学习笔记&#xff0c;学习网站&#xff1a;黑马程序员SpringCloud 2021教程 目录 DSL语法 索引库操作 mapping属性 创建索引库 字段拷贝 查询、删除、修改索引库 文档操作 新增文档 查询、删除文档 修改文档 全量修改 增量修改 DSL文档语法小结 Rest…

不用登录的小游戏网站有哪些可以做翻译的网站

【CTSC2017】游戏 problem UOJ299 solution 定义 Xi:X_i:Xi​: 当前已知条件第 iii 局的状态 1/01/01/0&#xff08;胜/败&#xff09;。 将 XiCiX_iC_iXi​Ci​ 记为事件 AiA_iAi​。 假设现在已知条件共有 sss 个&#xff0c;即&#xff1a;第 k1∼sk_{1\sim s}k1∼s​…

03-spirngIOC02-通过注解实现IOC

03-spirngIOC02-通过注解实现IOC$(".postTitle2").removeClass("postTitle2").addClass("singleposttitle");通过注解实现IOC实现实体类 package com.zhongge.entity;import jakarta.an…

网站怎么在移动端推广桂林必去五个景点

ON1 Photo RAW 2024 for Mac是一款集专业性与易用性于一体的照片编辑软件。它拥有简洁直观的用户界面&#xff0c;即便对于摄影新手&#xff0c;也能快速上手。软件支持RAW格式照片处理&#xff0c;能够完整保留照片原始信息&#xff0c;让后期调整更加灵活。 在功能方面&#…

网站的运营成本最新人才招聘网

1.0osi七层模型 应用层 data 表示层 会话层 传输层 数据段 防火墙&#xff0c;端口&#xff08;TCP UDP&#xff09; 网络层 数据包 路由器 数据链路层 数据帧 交换机 物理层 比特流 网卡 2.IP地址分类 私有地址 A类 0--127 10.0.0.0…

服务之家网站推广公司网站开发属于技术合同

来源&#xff1a;生物通近年来&#xff0c;有一些证据表明&#xff0c;饮食干预有助于减缓肿瘤的生长。麻省理工学院的一项新研究分析了小鼠的两种不同饮食&#xff0c;揭示了这些饮食是如何影响癌细胞的&#xff0c;并为为什么限制卡路里可以减缓肿瘤生长提供了解释。该研究检…

美食网站 怎么做wordpress客户端制作

引言 作为数据传输界鼎鼎大名的扛把子&#xff0c;XML被应用于各个方面&#xff0c;但随着弱结构化标记语言如JSON、YAML等的出现&#xff0c;人们慢慢的脱离了XML的统治&#xff0c;但在互联网早期的发展当中XML是不可或缺的一部分&#xff0c;比如各种微信开发中的数据传输&…

哈希简单解说

Sky Clearing Up这个哈希确实是啊。 这里不说各种冲突什么东西的证明,因为作者不会,看不懂。 你说说是谁把钢琴和弦乐放一块去的,我怎么飞起来了。 哈希 下面的定义都是不严谨的,这里仅是我的通俗解释。 哈希的基本…

02-springIOC01-注解方式实现

02-springIOC01-注解方式实现$(".postTitle2").removeClass("postTitle2").addClass("singleposttitle");使用注解的方式实现IOC 定义两个实体类 /*** @ClassName Address* @Descriptio…

国内买机票的网站建设有啥好玩的网页游戏

简介 TensorFlow是由Google团队开发的一个开源深度学习框架&#xff0c;完全基于Python语言设计。它的初衷是以最简单的方式实现机器学习和深度学习的概念&#xff0c;结合了计算代数的优化技术&#xff0c;使计算许多数学表达式变得简单。 优势&#xff1a; 强大的计算能力…

网站开发的原理西安 房产网站建设

注意&#xff1a;进行实例之前必须完成nginx的源码编译。&#xff08;阅读往期文章完成步骤&#xff09; 1.编辑nginx的配置文件&#xff0c;修改内容 [rootlocalhost ~]# vim /usr/local/nginx/conf/nginx.conf 2.创建新目录/usr/local/nginx/conf.d/&#xff0c;编辑新文件…

Say 题选记(9.28 - 10.4)

P5363 [SDOI2019] 移动金币 Staircase-Nim 加计数。 首先怎么转化成 Staircase-Nim 呢,可以把每个金币右边到下一个金币中间那些空的地方看成这个金币的石子,那么每次金币的向左移动就是把石子从右边金币的堆移到左边…

专题网站建设策划方案浙江省住房和城乡建设厅官方网站

1.IDEA概述 IDEA全称InelliJ IDEA,是用于java语言开发的集成环境&#xff0c;它是业界公认的目前用于Java程序开发最好的工具。 集成环境&#xff1a;把代码编写&#xff0c;编译&#xff0c;执行&#xff0c;调试扽过多种功能综合到一起的开发工具。 下载&#xff1a;https…

做北京会所网站哪个好商城平台

文章目录 网络拓扑安装使用代理服务器设置隐藏者设置 使用古老的ccproxy实现代理服务器&#xff0c;仅做实验用途&#xff0c;禁止做违法犯罪的事情&#xff0c;后果自负。 网络拓扑 均使用Windows Server 2003系统 Router 外网IP&#xff1a;使用NAT模式 IP DHCP自动分配或者…

Excel表设置为细框线

Sub 设置为细框线()边框类型数组 = Array(xlEdgeLeft, xlEdgeTop, xlEdgeBottom, _xlEdgeRight, xlInsideVertical, xlInsideHorizontal)遍历已使用区域的每个单元格For Each 单元格 In ActiveSheet.UsedRangeFor Each…

US$28.5 CG A11DS 3 Buttons Wire Remote Used with CGDI K2 Remote Key Programmer 5pcs/lot

CG A11DS 3 Buttons Wire Remote Used with CGDI K2 Remote Key Programmer 5pcs/lot Package includes:5pc x CG A11DS 3 Buttons Wire Remote Pictures of CG A11DS 3 Buttons Wire Remote Used with CGDI K2 Remote…