写点什么

数据库的两个好帮手:pagehack 和 pg_xlogdump

发布于: 2021 年 02 月 20 日

摘要: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 。


点击关注,第一时间了解华为云新鲜技术~


发布于: 2021 年 02 月 20 日阅读数: 12
用户头像

提供全面深入的云计算技术干货 2020.07.14 加入

华为云开发者社区,提供全面深入的云计算前景分析、丰富的技术干货、程序样例,分享华为云前沿资讯动态,方便开发者快速成长与发展,欢迎提问、互动,多方位了解云计算! 传送门:https://bbs.huaweicloud.com/

评论

发布
暂无评论
数据库的两个好帮手:pagehack和pg_xlogdump