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)