1. 本际云推荐 - 专业推荐VPS、服务器,IDC点评首页
  2. 云主机运维
  3. VPS运维

PG之使用pg_resetxlog访问被修改数据

初学者如何使用pg_resetxlog找回被修改的数据

作为一个初学者,对于在pg中被修改的数据的恢复方式感到困惑。类似于oracle中的rollback,pg也有一套自己独有的日志系统xlog,相当于oracle的redo。因此,pg可以通过pg_resetxlog命令来重置事务id,回到修改数据时的那个事务id。

PG之使用pg_resetxlog访问被修改数据

如何找到修改数据时的那个事务id

在pg中,我们可以使用pageinspect这个pgsql的extension模块来查看数据库底层page的内容,进而可以找到修改数据那个时刻的事务id。需要了解的是,postgresql的日志系统是XLOG(在10之前),在之后的版本是WAL(write-ahead-logging),它起到保护事务和数据故障以防数据丢失的作用。任何修改数据库数据的操作都会自动生成一条记录,并将其记录到日志文件中。pg的日志文件可以通过查询sys_redologs视图来获取相关信息。

使用pg_resetxlog重置事务id,访问被修改的数据

首先需要进入psql创建一个测试表,插入几条数据,然后执行delete语句,并查询当前的事务id,用于后面恢复到最新状态。接下来,就需要使用前面安装的pageinspect模块来分析test表的情况,以找回被修改的数据。需要注意的是,为了防止数据库保持数据静止状态,需要立刻关闭数据库服务,并且配置关闭auto_vacuum,保护好原来的数据。

接下来,需要将数据库的事务id重置到删除数据时的事务id,并启动数据库服务。使用pg_resetxlog命令重置到最新的事务id,并关闭数据库服务,然后在查询中可以看到被删除的数据已经找回了。

原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/5884.html