最近一段工作较忙,更新的速度可能会减慢,敬请见谅,后期采用隔天更新的方式

误删除数据的情况,一般都是通过备份,或日志来进行恢复,当然ORACLE FLASHBACK的模式实际上也是对一定期限的数据进行数据的恢复。 对于POSTGRESQL 是否可以进行这样的操作,根据POSTGRESQL 的原理来说是可以的。

下面我们就来操作一下瞬间恢复日志的方式

步骤

1  建立一个数据库

2  建立一个表

3  插入数据

4  删除数据

5  数据恢复

这里面我们主要用到的命令为 pg_waldump  pg_resetwal

pg_waldump 命令就不多说了,前面有详细的一篇提到过,pg_waldump 的使用和日志的分析。

pg_resetwal 命令这边的好好的说一说, pg_resetwal 主要的工作的目的为为了在系统数据损坏的时候,通过pg_resetwal来重新标志日志的位置,让系统可以重启运行并且重置pg_control文件等等。

You are now connected to database "testn" as user "postgres".

testn=#

testn=#

testn=# create table deid (id int, name varchar(20));

CREATE TABLE

testn=# insert into deid (id,name) values (1,'t');

INSERT 0 1

testn=# insert into deid (id,name) values (2,'c');

INSERT 0 1

testn=#

testn=# delete from deid where id =2 ;

DELETE 1

testn=# select * from deid;

id | name

----+------

1 | t

(1 row)

postgres=# \c testn

You are now connected to database "testn" as user "postgres".

testn=#

testn=#

testn=# create table deid (id int, name varchar(20));

CREATE TABLE

testn=# insert into deid (id,name) values (1,'t');

INSERT 0 1

testn=# insert into deid (id,name) values (2,'c');

INSERT 0 1

testn=#

testn=# delete from deid where id =2 ;

DELETE 1

testn=# select * from deid;

id | name

----+------

1 | t

(1 row)

上面我们删除了新插入的数据, 下面我们就通过上面的两个命令将数据还原到删除前的状态

1  步 确认当前的日志的以及LSN号

select pg_current_wal_lsn(),pg_walfile_name(pg_current_wal_lsn()),pg_walfile_name_offset(pg_current_wal_lsn());

2  步根据得到当前的事务号以及日志文件,开始寻找恢复日志的数据范围

3  在找到大约的 delete 前的位置,可以直接通过  LSN 号定位的方式

pg_waldump 00000002000000010000001F 000000020000000100000025 -s 1/7C030CF8

或者通过

pg_waldump 00000002000000010000001F 000000020000000100000025 -r transaction  |  grep  delete 的方式找到准确的删除数据的日志号。

4  在找到并确认事务号的情况下,关闭数据库服务

5   通过指定事务号的方式重置数据库

pg_resetwal -x 464902 -D /pgdata/data/

6  启动数据库并且查看数据是否恢复

经过确认数据已经恢复

但这里需要注意几点

1  在进行了操作后,设置的LSN 号后的数据都取消了,相当于回滚到指定的事务LSN 号的位置

2  WAL 日志整体被清理,原有的日志(单机)会被归并,原有的日志都没有了。

操作之前的日志

操作后的日志

PostgreSQL 怎么通过命令来恢复删除的数据相关推荐

  1. PostgreSQL一些常用命令

    最近一直在学习Postgresql,下面是自己整理的Postgresql的常用命令 连接数据库, 默认的用户和数据库是postgres psql -U user -d dbname 切换数据库,相当于 ...

  2. linux 进入psql终端,PostgreSQL psql终端命令(PostgreSQL psql terminal command)

    PostgreSQL psql终端命令(PostgreSQL psql terminal command) 我试图让psql格式很好,并在这里跟随文档. 现在,每当我对包含大量列的表执行查询时,无论我 ...

  3. 重启redis命令_redis系列之——数据持久化(RDB和AOF)

    在数据库(如mysql)和缓存(如redis)的发展中,都会相互借鉴对方的长处来弥补自身的不足.比如mysql作为持久化数据库,为了提高数据的访问速度,会使用缓存技术,当一条sql查询完成后,mysq ...

  4. Linux tar命令高级用法——备份数据

    Linux tar命令高级用法--备份数据 2015-12-31 Linux学习 Linux上有功能强大的tar命令,tar最初是为了制作磁带备份(tape archive)而设计的,它的作用是把文件 ...

  5. Redis概述_使用命令对redis的数据进行增删改查_Jedis连接redis进行数据操作_redis进行数据缓存案例

    学习目标 redis 概念 下载安装 命令操作 1. 数据结构 持久化操作 使用Java客户端操作redis Redis 前言(从百度上抄的, 看看了解一下, 懒得排版了) 1. 概念: redis是 ...

  6. unix和linux命令_Linux vs. Unix,在命令行中清理数据,为儿童准备的15本书,以及更多必读内容

    unix和linux命令 上周,关于Linux与Unix的一篇文章是最受欢迎的读物. 查看其他Opensource.com读者对以下内容的了解: Linux与Unix:有什么区别? ,作者:菲尔·埃斯 ...

  7. mysql通过命令添加1条数据

    mysql通过命令添加1条数据 1.语法: INSERT INTO 表名 (字段1,字段2,...字段n) VALUES (值1,值2,...值n); 2.语法解析: INSERT INTO ... ...

  8. 在MySQL中如何用SQL命令创建数据库及数据表

    HRELLO 大家好! 上期给大家讲解了,MySQL数据库常用的管理命令.现在,给大家讲解,如何用SQL命令在MySQL中创建一个数据库及数据表. 在学习前,我们首先要了解,SQL命令是什么? SQL ...

  9. oracle数据误删除怎么恢复,oracle误删除的数据怎么恢复 oracle恢复删除的数据方法...

    oracle误删除的数据怎么恢复?下面为大家带来oracle恢复删除的数据方法: PART1 分为两种方法:scn和时间戳两种方法恢复. 一.通过scn恢复删除且已提交的数据 1.获得当前数据库的sc ...

最新文章

  1. Atitit.提升 升级类库框架后的api代码兼容性设计指南
  2. Yolov5总结文档(理论、代码、实验结果)
  3. sonarqube使用教程
  4. symfony的安装方法
  5. 如何在VS一个工程里面测试不同代码?(创建不同项目,并将需要运行的项目设为启动项目)
  6. 通俗易懂量子计算的原理
  7. EOJ_1094_寻找航海路线
  8. Android 系统(185)---如何使用adb command来设置cpu频率和核数
  9. 三星Galaxy S21 FE证件照公布:120Hz高刷直屏+骁龙888处理器
  10. 项目常用工具类整理(一)--时间工具类DateUtil.java
  11. thymeleaf if 条件判断
  12. dump的文件 查看pg_详解linux查看磁盘读写信息--blockdump、blktrace、systemtap
  13. Qt 地址薄 (一) 界面设计
  14. 【飞行器】基于matlab GUI四旋翼飞行器飞行模拟【含Matlab源码 1183期】
  15. oracle 11203 ora32701,love wife love life —Roger的Oracle/MySQL数据恢复博客
  16. System.gc()介绍
  17. PDF不能编辑怎么办,如何去掉编辑权限
  18. 甲骨文中国良心裁员:首批900人,赔偿N+6
  19. SCVMM 2012 SP1 Beta 体验(一)安装准备
  20. matplotlib: 绘制平面图/表格

热门文章

  1. Android开发-视图view讲解
  2. 区块链服务BaaS的总体架构与详细设计
  3. 滴滴打车2015-2016
  4. C语言 switch语句来调用函数
  5. 线性回归模型 —— 普通最小二乘法(OLS)推导与python实现
  6. (附源码)ssm停车位共享系统app 毕业设计 041534
  7. 数据库中第一范式、第二范式、第三范式
  8. 机器视觉之eVision
  9. 深度学习之文本生成图片
  10. 国家级版权区块链系统 DCI标准联盟链发布 迅雷区块链提供技术支持