关于数据库:数据库的两个好帮手pagehack和pgxlogdump

56次阅读

共计 1610 个字符,预计需要花费 5 分钟才能阅读完成。

摘要:pagehack 和 pg_xlogdump 能够帮忙咱们在数据库故障定位中,解析各种文件的页面头和 xlog 日志。

随着技术的演进,数据也产生了微小的变动,数据规模越来愈大、数据品种出现多样性,数据处理的时效性要求也越来越高,GaussDB(DWS) 实时数仓以后面临着微小的时机,也面临着微小的挑战。同样的,弱小工具来帮忙咱们定位各种各样的问题。

数据库目录下有多种二进制文件,比方零碎表、一般表、索引和日志文件等等,然而数据库运行过程中的问题,咱们该如何利用这些文件去定位和剖析问题呢?pagehack 和 pg_xlogdump 就是咱们解决问题的利器,帮忙咱们在故障定位中,解析各种文件的页面头和 xlog 日志。

pagehack:

咱们先来看看 pagehack 的各项参数阐明

这里咱们列举出一下几种十分罕用的解析办法:

(1)数据库中的零碎表有很多,然而在数据库 data 目录下,该如何把零碎表和磁盘上的文件一一对应呢,咱们能够通过 pagehack 查问 data 目录下的 pg_filenode.map

执行 pagehack -f pg_filenode.map -t filenode_map,咱们就能够看到如下后果,这里的 relfilenode 就对应磁盘上的文件

(2)除了零碎表,另外一个罕用的数据类型就是行存表的文件,通常对于存储异样、读取异样等问题,咱们都须要通过 pagehack 查问行存表的头文件信息。首先连贯 DN 上,查问到该行存表对应的 relfilenode(16502),到对应 DN 的 data 目录下,执行:pagehack -f 16502 -t heap, 后果如下:

依据解析出的后果,page 页面头构造如下

解析出的页面中一些罕用信息含意如下,对于 page 页面详细信息,前面会出一篇博文来专门介绍 page 页面构造信息

pd_lsn:本页面最初一次变更所写入的 xlog 记录对应的 lsn。

pd_special:用在索引页中,在索引页中它指向非凡空间的起始地位,在堆表页面中它指向页尾。

pd_pagesize_version:页面大小以及页面布局的版本号。

t_xmin: 保留插入该元组的事务的 txid(事务号)

t_xmax:保留删除或更新此元组的事务的 txid。如果尚未删除或更新此元组,则 t_xmax 设置为 0,即有效。

t_infomask:用于标识元组以后的状态。

t_infomask2:HOT 链更新状态和当 tuple 的属性个数。

pg_xlogdump:

GaussDB 数据库利用日志文件来避免断电之类的故障导致的数据失落,任何试图批改数据库的操作都会写一份日志记录到磁盘,这个日志称为 XLOG。在数据库定位问题时,就能够应用 pg_xlogdump 来解析 XLOG 日志,包含日志类型、对应的事务号、批改的文件等等。

Pg_xlogdump 参数应用阐明如下:

在 pg_xlog 目录下找到对应的日志文件,XLOG 文件名称 24 个字符,由三局部组成,每一部分的解析如下):

  1. 第 1 局部是 TimeLineID,
  2. 第 2 局部是逻辑文件 ID,
  3. 第 3 局部是物理文件 ID

pg_xlogdump ./000000010000000000000004 -n

LSN: 日志编号

prev:对应该条记录的上一条 xlog 记录。

xid: 事务的 xid

desc: 对日志的详细描述

通过 pg_xlogdump 能够查看 xlog 日志记录的操作的 xid 和 lsn,就能够在数据库解体后,应用 xid 进行复原等操作以及定位谬误等。

pagehack 和 pg_xlogdump 工具在定位剖析问题是罕用的两种工具,心愿这两种工具的介绍,能帮忙大家再剖析解决问题的时候,提高效率。本文章中设计的页面构造详细信息,前期会专门写一篇文章介绍,加深大家的了解。

本文分享自华为云社区《GaussDB(DWS) 存储系列之 pagehack&pg_xlogdump 工具应用办法总结》,原文作者:AndyCao。

点击关注,第一工夫理解华为云陈腐技术~

正文完
 0