PostgreSQL 扩展之 WalMiner

发布时间 2023-09-11 14:37:40作者: 数据库集中营

1、简介

WalMiner是从PostgreSQL的WAL(write ahead logs)日志的解析工具,旨在挖掘wal日志所有的有用信息,从而提供PG的数据恢复支持,3.0支持PostgreSQL10及其以上版本(pg14.2版本暂不支持,已与作者沟通)。

WalMiner可以从waL日志中解析出SQL,包括DML和少量DDL,与传统的logical decode插件相比,walminer不要求logical日志级别且解析方式较为灵活。

当数据库被执行了TRUNCATE等不被wal记录的数据清除操作,或者发生磁盘页损坏,可以使用此功能从wal日志中搜索数据,以期尽量挽回数据,达到数据页挽回的效果。

2、安装walminer插件

 3、实例演示

--测试表准备

postgres=# show full_page_writes ;

full_page_writes

------------------

on

(1 row)

postgres=# create table walminer_t(id int,col1 varchar(8));

CREATE TABLE

postgres=# insert into walminer_t values(1,'w1'),(2,'w2');

INSERT 0 2

postgres=# select * from walminer_t ;

id | col1

----+------

1 | w1

2 | w2

(2 rows)

postgres=# select pg_current_wal_lsn();

pg_current_wal_lsn

--------------------

0/166EFD8

(1 row)

postgres=# select pg_walfile_name(pg_current_wal_lsn());

pg_walfile_name

--------------------------

000000010000000000000001

(1 row)