案例说明:

通过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日志记录相对比较简洁。

KingbaseES V8R6运维案例之---wal日志解析DML操作的更多相关文章

  1. KingbaseES V8R6备份恢复案例之---自定义表空间指定恢复目录数据恢复

    案例说明: KingbaseES V8R6在通过sys_rman执行物理备份恢复时,可以通过参数'--kb1-path',指定恢复的数据(data)目录,但如果原备份中包含自定义表空间时,需要建立表空 ...

  2. 【运维工具】logrotate 日志管理神器

    服务器经常会产生各种各样的日志文件,我们需要定期清理 日志的分类 系统日志 应用日志 系统日志 例如系统的history 历史信息   crontab的运行日志  一般系统日志系统都帮我们运维好了,不 ...

  3. Nginx-Tomcat 等运维常用服务的日志分割-logrotate

    目录 一 .Nginx-Tomcat 等常用服务日志分析 Nginx 日志 Tomcat日志 MongoDB 日志 Redis 日志 二 .日志切割服务 logrotate 三.日志切割示例 Ngin ...

  4. KingbaseES V8R6集群管理运维案例之---repmgr standby switchover故障

    案例说明: 在KingbaseES V8R6集群备库执行"repmgr standby switchover"时,切换失败,并且在执行过程中,伴随着"repmr stan ...

  5. KingbaseES V8R6集群运维案例之---repmgr standby promote应用案例

    案例说明: 在容灾环境中,跨区域部署的异地备节点不会自主提升为主节点,在主节点发生故障或者人为需要切换时需要手动执行切换操作.若主节点已经失效,希望将异地备机提升为主节点. $bin/repmgr s ...

  6. KingbaseES V8R3集群运维案例之---cluster.log ERROR: md5 authentication failed

    案例说明: 在KingbaseES V8R3集群的cluster.log日志中,经常会出现"ERROR: md5 authentication failed:DETAIL: password ...

  7. KingbaseES V8R6备份恢复案例之--删除test数据库后sys_backup.sh备份

    案例说明: KingbaseES V8R6通过sys_backup.sh执行物理备份,默认sys_backup.sh执行备份初始化时,需要连接test数据库进行身份的认证:在一些生产环境为了安全需求, ...

  8. KingbaseES V8R6备份恢复案例之---同一数据库创建不同stanza备份

    案例说明: 在生产环境,有的应用需要调用数据库的sys_rman做备份,为了区分数据库自身的sys_rman备份和应用的备份,可以使用不同的stanza name创建备份.本案例介绍了,如何在King ...

  9. KingbaseES V8R6备份恢复案例之---手工清理冗余历史备份

    案例说明: 对于KingbaseES V8R6的通过sys_rman执行的物理历史备份,可以在执行备份时,备份的保留(retention)策略自动清理.不能通过手工删除备份,可以通过expire参数手 ...

  10. 网站运维工具使用iis日志分析工具分析iis日志(iis日志的配置)

    我们只能通过各种系统日志来分析网站的运行状况,对于部署在IIS上的网站来说,IIS日志提供了最有价值的信息,我们可以通过它来分析网站的响应情况,来判断网站是否有性能问题,或者存在哪些需要改进的地方 对 ...

随机推荐

  1. 手动实现apply、call、bind

    手动实现apply.call.bind 每个Function对象都存在apply().call().bind()方法,其作用都是可以在特定的作用域中调用函数,等于设置函数体内this对象的值,以扩充函 ...

  2. od命令

    od命令 od命令会读取所指定的文件的内容,并将其内容以八进制字节码呈现出来. 语法 od [OPTION]... [FILE]... od [-abcdfilosx]... [FILE] [[+]O ...

  3. Java集合框架学习(十一) Hashtable详解

    Hashtable介绍 1. 继承自Dictionary; 2. 线程安全: 3. 支持Iterator和Enumeration: 4. key和value都不可为null; 5. 一般用于多线程环境 ...

  4. 详解SSL证书系列(1)什么是SSL证书?

    你一定遇到过这种情况,打开一个网站,浏览器弹出警告"您与此网站之间建立的连接不安全.由于此连接不安全,因此信息(如密码或信用卡)不会安全地发送到此网站,并且可能被其他人截获或看到" ...

  5. context讲解

    context包 context包介绍 ​ 在go语言中,每个独立调用一般都会被单独的协程处理.但在处理一个请求时,往往可能需要在多个协程之间进行信息传递,甚至包括一层层地递进顺序传递,而且这种信息往 ...

  6. 【ACM专项练习#03】打印图形、栈的合法性、链表操作、dp实例

    运营商活动 题目描述 小明每天的话费是1元,运营商做活动,手机每充值K元就可以获赠1元,一开始小明充值M元,问最多可以用多少天? 注意赠送的话费也可以参与到奖励规则中 输入 输入包括多个测试实例.每个 ...

  7. linux centos文本编辑模式快速进入末尾最后一行快捷键与跳转首行、行尾和某一行快捷键

    前言 使用vim的过程中想要快速移动光标至行首.行尾.第一行.最后一行或者某一行,本文对此简单介绍. 具体操作 1.快速至当前行的行首:home键最简单 (1) Home键: (2) 符号^(要按sh ...

  8. ip 表单验证 vue iview

    ip 表单验证 vue iview template <Row v-show="config.bindIP"> <Col span="12"& ...

  9. vue-helper 导致找到2个函数定义,跳转需要多点一下,禁用vue-helper即可

    vue-helper 导致找到2个函数定义,跳转需要多点一下,禁用vue-helper即可

  10. snippet n. 小片, 片断, 摘录 单词记忆

    snippet 助记:snip[剪断] + -et小词后缀. 关键是 snip 怎么记忆 snip : 拟声词,模仿剪断东西的声音. 助记单词 slip 滑 根据字母 n是done的缩写,可以 想成 ...