PG日志挖掘工具之WalMiner用于误操作恢复

0    1020    4

Tags:

👉 本文共约8605个字,系统预计阅读时间或需33分钟。

PG中通过pg_waldump来分析pg_wal日志:https://www.xmmup.com/pgzhongtongguopg_waldumplaifenxipg_walrizhi.html

WalMiner简介

官网:https://gitee.com/movead/XLogMiner

WalMiner是从PostgreSQL的WAL(write ahead logs)日志中解析出执行的SQL语句的工具,并能生成对应的undo SQL语句。与传统的logical decode插件相比,walminer不要求logical日志级别且解析方式较为灵活。

WalMiner是从PostgreSQL的WAL(write ahead logs)日志的解析工具,旨在挖掘wal日志所有的有用信息,从而提供PG的数据恢复支持。目前主要有如下功能:

  • 从waL日志中解析出SQL,包括DML和少量DDL

    解析出执行的SQL语句的工具,并能生成对应的undo SQL语句。与传统的logical decode插件相比,walminer不要求logical日志级别且解析方式较为灵活。

  • 数据页挽回

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

XlogMiner Enhancements Released and Renamed to WalMiner:https://www.postgresql.org/about/news/xlogminer-enhancements-released-and-renamed-to-walminer-1919/

注意:walminer是Highgo开源的一款软件。HGDB所有版本均支持walminer。

walminer3.0更新内容

  • 代码结构变化
  • 增加数据页挽回功能(坏块修复)
  • 增加对开发库PG14的支持

walminer4.0介绍

walminer是PostgreSQL的wal日志解析工具,4.0版本摒弃插件模式改为bin模式,现已脱离对目标数据库的编译依赖和安装依赖,一个walminer工具可以解析PG10~PG15的WAL日志。 现已实现的功能为wal2sql、fosync、pgto。

1.1 walminer功能介绍

  • wal2sql为walminer的基本功能,可以将wal日志解析为SQL语句,以及其undo语句,可解析部分DDL语句。
  • fosync为在wal2sql的基础上实现的,PG故障转移延迟数据同步功能。
  • pgto为PG的CDC工具,库外解析;一键部署;低wal级别。

1.2 walminer导航

PG版本支持

  • walminer3.0支持PostgreSQL 10及其以上版本。(此版本放弃对9.x的支持)

编译安装

编译一:PG源码编译
如果你从编译pg数据库开始:

  1. 将walminer目录放置到编译通过的PG工程的"../contrib/"目录下
  2. 进入walminer目录
  3. 执行命令

编译二:依据PG安装编译
如果你使用yum或者pg安装包已经编译安装了pg

  1. 配置pg的bin路径至环境变量

  2. 进入walminer代码路径

  3. 执行编译安装,注意修改MAJORVERSION的值,MAJORVERSION支持‘10’,‘11’,‘12’,‘13’

    过程:

使用方法-SQL解析

场景一:从WAL日志产生的数据库中直接执行解析

1. 创建walminer的extension

2. 添加要解析的wal日志文件

3. Remove wal日志文件

4. List wal日志文件

5. 执行解析

5.1 普通解析

5.2 精确解析

walminer的构建基础是,checkpoint之后对每一个page的更改会产生全页写(FPW),因此一个checkpoint之后的所有wal日志可以完美解析。注意checkpoint是指checkpoint开始的点,而不是checkpoint的wal记录的点,参照说明

普通解析会直接解析给定范围内的wal日志,因为可能没有找到之前的checkpoint点,所以会出现有些记录解析不全导致出现空的解析结果。

精确解析是指walminer程序会界定需要解析的wal范围,并在给定的wal范围之前探索一个checkpoint开始点c1,从c1点开始记录FPI,然后就可以完美解析指定的wal范围。如果在给定的wal段内没有找到c1点,那么此次解析会报错停止。

5.3 单表解析

​ 'true'和‘false’代表是否为精确解析模式,reloid为目标表的oid(注意不是relfilenode)

5.4 快捷解析

​ 场景1中的加载数据字典和加载wal日志步骤可以省略,默认直接加载当前数据字典和当前wal路径下的所有wal文件。这个解析模式只在学习本工具时使用,在生产数据库中,可能会因为wal段切换而导致解析失败。

5.5 替身解析

​ 如果一个表被drop或者被truncate等操作,导致新产生的数据字典不包含旧的数据库中所包含的relfilenode,那么使用新的数据字典无法解析出旧的wal日志中包含的的某些内容。在知晓旧表的表结构的前提下,可以使用替身解析模式。替身模式目前只适用于[场景一]。

6. 解析结果查看

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!
PG日志挖掘工具之WalMiner用于误操作恢复后续精彩内容已被小麦苗无情隐藏,请输入验证码解锁本站所有文章!
验证码:
请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“DB宝”或者“www_xmmup_com”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复

嘿,我是小麦,需要帮助随时找我哦。
  • 18509239930
  • 个人微信

  • DB宝
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部