首页 > 其他分享 >KingbaseES V8R6运维案例之---sys_waldump解析wal日志

KingbaseES V8R6运维案例之---sys_waldump解析wal日志

时间:2022-09-28 10:56:53浏览次数:58  
标签:current wal V8R6 lsn sys pg 日志

案例说明:
wal日志文件记录了,事务操作的redo日志信息,由于wal日志文件是二进制文件,无法直接读取其文件内容。sys_waldump 可以解决这个问题,通过sys_waldump来解析wal 日志来分析和解决一些问题。例如在用户误操作时,可以通过解析wal日志,获取到事务操作的具体时间、xid等,用于建立基于PITR的恢复操作的基线。
Wal日志被划分为多个类型的资源管理器(RMGR),每个资源管理器只需要负责与自己相关的日志处理(抽象出操作函数,不同的日志应用使用不同的操作函数)。
如下图所示:RMGR结构

适用版本:
KingbaseES V8R3/R6

一、查看wal日志RMGR信息
=如下所示:不同的RMGR对应不同对象的操作的日志。=

[kingbase@node101 bin]$ ./sys_waldump --rmgr=list

XLOG                 :和xlog相关的事务日志,包括checkpoint、日志切换等。
Transaction           :和事务相关的事务日志,比如事务提交、回滚、两阶段提交等。
Storage               : 存储文件的操作的操作,比如create table、truncate table等。
CLOG                  : 和事务提交相关的事务日志,事务提交会在clog中记录事务的状态。
Database              :和数据库相关的操作,比如create database等。
Tablespace            :和表空间操作相关产生的事务日志,比如create tablespace等。
TablespaceEnc         :和表空间操作相关产生的事务日志
MultiXact            :在同一元组上加多个锁产生了MultiXact的事务日志。
RelMap                :和表空间操作相关产生的事务日志
Standby              :和standby相关的事务日志,比如记录锁信息,事务运行信息等,wal_level >= WAL_LEVEL_REPLICA时,会写Standby。
Heap2                : 对heap进行操作的事务日志,例如vacuum对页面的清理操作。
Heap                 :对heap进行操作的事务日志,比如DML操作,insert、update、delete等。
Btree                :对索引进行操作的事务日志,比如对索引的更新。
Hash                  :对索引进行操作的事务日志,比如对索引的更新。
Gin                  :对索引进行操作的事务日志,比如对索引的更新。
Gist                 :对索引进行操作的事务日志,比如对索引的更新。
Sequence              :对序列(sequence)进行操作的事务日志,比如sequence的创建。
SPGist               :对索引进行操作的事务日志,比如对索引的更新。
BRIN                 :对索引进行操作的事务日志,比如对索引的更新。
CommitTs             : 和事务提交相关的事务日志
ReplicationOrigin    :和复制、热备相关的操作。
Generic               :和复制、热备相关的操作。
LogicalMessage       :和复制、热备相关的操作。

=如下所示:RMGR:XLOG对应了checkpoint类型的wal日志。=

二、测试案例
如下所示,在数据库执行DDL、DML事务操作,事务commit时,将对应的wal日志条目从wal_buffer写入wal日志文件,可通过sys_waldump解析wal日志文件,获取到对应操作的日志条目的内容。

# 查看当前数据库的lsn
test=# select pg_current_wal_lsn();
 pg_current_wal_lsn
--------------------
 4/5C003C70
(1 row)

# 创建数据库
test=# create database prod1;
CREATE DATABASE
test=# select pg_current_wal_lsn();
 pg_current_wal_lsn
--------------------
 4/5C004280
(1 row)

#创建数据库对象
prod1=# select pg_current_wal_lsn();
 pg_current_wal_lsn
--------------------
 4/5C004700
(1 row)

prod1=# create table tb1 (id int,name varchar2(10));
CREATE TABLE
prod1=# select pg_current_wal_lsn();
 pg_current_wal_lsn
--------------------
 4/5C024788
(1 row)

# 对象执行DML操作
prod1=# insert into tb1 values (10,'tom');
INSERT 0 1
prod1=# select pg_current_wal_lsn();
 pg_current_wal_lsn
--------------------
 4/5C024820
(1 row)

prod1=# insert into tb1 values (20,'jerry');
INSERT 0 1
prod1=# select pg_current_wal_lsn();
 pg_current_wal_lsn
--------------------
 4/5C024890
(1 row)

prod1=# update tb1 set name='rose' where id=20;
UPDATE 1
prod1=# select pg_current_wal_lsn();
 pg_current_wal_lsn
--------------------
 4/5C024968
(1 row)

prod1=# delete from tb1 where id=20;
DELETE 1
prod1=# select pg_current_wal_lsn();
 pg_current_wal_lsn
--------------------
 4/5C0249F8
(1 row)

# 对象执行DDL操作(truncate)
prod1=# truncate table tb1;
TRUNCATE TABLE
prod1=# select pg_current_wal_lsn();
 pg_current_wal_lsn
--------------------
 4/5C024C50
(1 row)

#  对象执行DDL操作(drop)
prod1=# drop table tb1;
DROP TABLE
prod1=# select pg_current_wal_lsn();
 pg_current_wal_lsn
--------------------
 4/5C0251D8
(1 row)

# 查看当前online的wal日志文件
prod1=# select pg_current_wal_lsn(),pg_walfile_name(pg_current_wal_lsn()),pg_walfile_name_offset(pg_current_wal_lsn());
 pg_current_wal_lsn |     pg_walfile_name      |      pg_walfile_name_offset
--------------------+--------------------------+-----------------------------------
 4/5C0251D8         | 0000001D000000040000005C | (0000001D000000040000005C,152024)
(1 row)

##如上所示,当前事务操作的wal日志flush到“0000001D000000040000005C”对应的日志文件。

三、sys_waldump解析wal日志

1、sys_waldump帮助

2、执行sys_waldump解析日志

[kingbase@node101 bin]$ ./sys_waldump /data/kingbase/r6ha/data/sys_wal/0000001D000000040000005C -s 4/5C003C70

......
rmgr: XLOG        len (rec/tot):     30/    30, tx:          0, lsn: 4/5C003C70, prev 4/5C003C40, desc: NEXTOID 197378
rmgr: Standby     len (rec/tot):     46/    46, tx:          0, lsn: 4/5C003C90, prev 4/5C003C70, desc: RUNNING_XACTS nextXid 2883 latestCompletedXid 1543519344 oldestRunningXid 2882
rmgr: Heap        len (rec/tot):    291/   291, tx:       2882, lsn: 4/5C003CC0, prev 4/5C003C90, desc: INSERT off 22 flags 0x00, blkref #0: rel 1664/0/1262 blk 0
rmgr: Btree       len (rec/tot):     55/   349, tx:       2882, lsn: 4/5C003DE8, prev 4/5C003CC0, desc: INSERT_LEAF off 9, blkref #0: rel 1664/0/2671 blk 1 FPW
rmgr: Btree       len (rec/tot):     55/   340, tx:       2882, lsn: 4/5C003F48, prev 4/5C003DE8, desc: INSERT_LEAF off 20, blkref #0: rel 1664/0/2672 blk 1 FPW
rmgr: Standby     len (rec/tot):     46/    46, tx:          0, lsn: 4/5C0040B8, prev 4/5C003F48, desc: RUNNING_XACTS nextXid 2883 latestCompletedXid 1543520440 oldestRunningXid 2882
rmgr: XLOG        len (rec/tot):    114/   114, tx:          0, lsn: 4/5C0040E8, prev 4/5C0040B8, desc: CHECKPOINT_ONLINE redo 4/5C0040B8; tli 29; prev tli 29; fpw true; xid 0:2883; oid 197378; multi 1; offset 0; oldest xid 867 in DB 1; oldest multi 1 in DB 1; oldest/newest commit timestamp xid: 0/0; oldest running xid 2882; online
......

=如下所示,wal日志中记录的日志条目的lsn信息。=

三、sys_waldump应用案例

1、直接进行两个日志及其之间的信息的打印

[kingbase@node101 sys_wal]$ /home/kingbase/cluster/R6HA/kha/kingbase/bin/sys_waldump 0000001F000000040000006A 0000001F000000040000006B

rmgr: XLOG        len (rec/tot):    114/   114, tx:          0, lsn: 4/6A000028, prev 4/69001580, desc: CHECKPOINT_SHUTDOWN redo 4/6A000028; tli 31; prev tli 31; fpw true; xid 0:2968; oid 189209; multi 1; offset 0; oldest xid 867 in DB 1; oldest multi 1 in DB 1; oldest/newest commit timestamp xid: 0/0; oldest running xid 0; shutdown
rmgr: Standby     len (rec/tot):     42/    42, tx:          0, lsn: 4/6A0000A0, prev 4/6A000028, desc: RUNNING_XACTS nextXid 2968 latestCompletedXid 0 oldestRunningXid 2968
rmgr: Heap        len (rec/tot):     56/  4850, tx:       2968, lsn: 4/6A0000D0, prev 4/6A0000A0, desc: INSERT off 171 flags 0x00, blkref #0: rel 1663/32786/32886 blk 3 FPW
......

2、指定资源类型和起始lsn

[kingbase@node101 sys_wal]$ /home/kingbase/cluster/R6HA/kha/kingbase/bin/sys_waldump 0000001F000000040000006A -s 4/6A000028 -b -f -r transaction

rmgr: Transaction len (rec/tot):     34/    34, tx:       2968, lsn: 4/6A0013C8, prev 4/6A0000D0, desc: COMMIT 2022-09-23 14:57:25.783575 CST
rmgr: Transaction len (rec/tot):     34/    34, tx:       2969, lsn: 4/6A001480, prev 4/6A0013F0, desc: COMMIT 2022-09-23 14:57:28.560264 CST
rmgr: Transaction len (rec/tot):     34/    34, tx:       2970, lsn: 4/6A001548, prev 4/6A0014D8, desc: COMMIT 2022-09-23 15:10:40.205866 CST
rmgr: Transaction len (rec/tot):     34/    34, tx:       2971, lsn: 4/6A001628, prev 4/6A0015A0, desc: COMMIT 2022-09-23 15:10:42.318860 CST
......

3、指定事务xid

[kingbase@node101 sys_wal]$ /home/kingbase/cluster/R6HA/kha/kingbase/bin/sys_waldump 0000001F000000040000006A -x '2971'


rmgr: Heap        len (rec/tot):    132/   132, tx:       2971, lsn: 4/6A0015A0, prev 4/6A001570, desc: INSERT off 174 flags 0x00, blkref #0: rel 1663/32786/32886 blk 3
rmgr: Transaction len (rec/tot):     34/    34, tx:       2971, lsn: 4/6A001628, prev 4/6A0015A0, desc: COMMIT 2022-09-23 15:10:42.318860 CST

4、对当前的日志进行一个分析和汇总,这里面就包含每种数据类型所占的比例以及统计分析

[kingbase@node101 sys_wal]$ /home/kingbase/cluster/R6HA/kha/kingbase/bin/sys_waldump 0000001F000000040000006A 0000001F000000040000006B -z


Type                                           N      (%)          Record size      (%)             FPI size      (%)        Combined size      (%)
----                                           -      ---          -----------      ---             --------      ---        -------------      ---
XLOG                                          16 (  7.34)                 1270 (  7.29)                29040 (  6.35)                30310 (  6.38)
Transaction                                   14 (  6.42)                 2021 ( 11.60)                    0 (  0.00)                 2021 (  0.43)
Storage                                        3 (  1.38)                  126 (  0.72)                    0 (  0.00)                  126 (  0.03)
CLOG                                           0 (  0.00)                    0 (  0.00)                    0 (  0.00)                    0 (  0.00)
Database                                       0 (  0.00)                    0 (  0.00)                    0 (  0.00)                    0 (  0.00)
Tablespace                                     0 (  0.00)                    0 (  0.00)                    0 (  0.00)                    0 (  0.00)
TablespaceEnc                                  0 (  0.00)                    0 (  0.00)                    0 (  0.00)                    0 (  0.00)
......

四、总结
wal日志通过资源管理器RMGR对不同操作类型的日志进行管理,对于wal日志可以通过sys_waldump解析其内容,获取到事务处理的具体信息:如日志条目的lsn、事务操作执行语句、事务操作对象、xid、事务commit的时间等。
下面的篇章将对具体的事务(Transaction)操作进行分析。

标签:current,wal,V8R6,lsn,sys,pg,日志
From: https://www.cnblogs.com/tiany1224/p/16737189.html

相关文章

  • BUUCTF web 第一题[极客大挑战 2019]EasySQL
    BUUCTFweb第一题sql注入之万能密码[极客大挑战2019]EasySQL✔解题方法1.判断类型为:有回显、字符型sql注入当输入343、343)、343’‘、343’‘)当输入343‘时当......
  • msys2 : yosys Cross-Building for Windows with MXE
    Checkhttp://mxe.cc/#requirementsandinstallallmissingrequirements.安装 msys2-x86_64-20220904.exe,需要加装一些包。比如安装  mingw-w64-python-mako ......
  • python中sys.path.append('..')用法
    一般用处:import时,如果包不在同一个文件里,需要跨文件导入,则用sys.path.append('..')来更改导入的路径。例子:文件结构如图:主程序在code文件中,调用其他.py中的函数#mai......
  • 多线程爬取wallhaven
    前言最近整理自己的项目时,发现之前自己写的爬取wallhaven网站顿时有来的兴趣决定再写一遍来回顾自己以前学的知识网站地址:"https://wallhaven.cc/"1.url参数结构从ur......
  • Skywalking on the way-千亿级的数据储能、毫秒级的查询耗时
    本文转载自架构染色,已获得作者授权,原文链接https://mp.weixin.qq.com/s/DlphAJ59COtBM958q_0TsA1、开篇自从Skywaling开始在公司推广,时不时会在排查问题的人群中听到......
  • 01.base-sys 基础搭建
    脚手架base-sys0.简介1.基于SpringBoot+MybatisPlus-Plus的快速开发脚手架,具有完整的权限管理功能,前端使用Vue;2.技术选型:SpringBoot2.7.0容器+M......
  • Wallys//Industrial_Wireless_AP//network,card//QCN6024/QCN9074/QCN9024,WiFi,Card
    QCN9074WiFiCardIPQ6010,802.11ax,2x22.4G&5G,SupportOpenWRT//QCN9074802.11ax4x4MU-MIMO6GHzwifi6EQCN9074 11ax 4x46G M.2   1.DR9074-6E(PN02......
  • 基于Docker部署Skywalking
     这里用的版本是9.2.0,如果用最新版,需查看配置是否需要更改,此处使用的为默认配置,如需修改配置请自行前往官网学习https://skywalking.apache.org/docs/main/v9.2.0/en/s......
  • Linux防火墙firewall只允许特定IP访问
    1、https://blog.csdn.net/haoqi9999/article/details/125988881一、概述1、目的服务A使用端口9001,只有允许的应用才可以访问,其它未经允许服务无法正常访问(即默认应用无......
  • C#的System.Data.DataTable各个属性和方法
    在项目中常常常使用到DataTable,假设DataTable使用得当,不仅能使程序简洁有用,并且可以提高性能,达到事半功倍的效果,现对DataTable的使用技巧进行一下总结。1、添加引用usin......