KingbaseES V8R6运维案例之---wal日志解析DML操作

案例说明:
通过sys_waldump解析DML操作,获取DML操作的日志条目具体内容。

适用版本:KingbaseES V8R3/R6

一、DML事务操作对应的wal日志文件

# 查看当前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、分析‘insert’操作日志

prod1=# select pg_current_wal_lsn();
 pg_current_wal_lsn
--------------------
 4/5C024788
(1 row)

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)

如下图所示:insert操作对应的rmgr: Heap,操作类型:INSERT,每一行操作都代表一个事务,完成后立刻commit,在记录中记录事务的xid,及对象filenode。

2、分析‘update’操作日志

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)

如下图所示:update操作对应的rmgr: Heap,操作类型:HOT_UPDATE,每一行操作都代表一个事务,完成后立刻commit,在记录中记录事务的xid,及对象filenode。

3、分析‘delete’操作日志

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)

如下图所示:delete操作对应的rmgr: Heap,操作类型:DELETE,每一行操作都代表一个事务,完成后立刻commit,在记录中记录事务的xid,及对象filenode。

三、总结
通过对wal日志的解析,可以加深DML事务操作的理解及获取事务在wal日志中的具体操作记录信息,可用于数据库事务操作的分析和数据的恢复。
相比较DDL操作,DML操做的wal日志记录相对比较简洁。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值