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

适用版本: KingbaseES V8R3/R6

一、DDL事务操作对应的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、执行sys_waldump解析日志[kingbase@node101 bin]$ ./sys_waldump /data/kingbase/r6ha/data/sys_wal/0000001D000000040000005C -s 4/5C003C70

2、分析“create database”操作日志

test=# select pg_current_wal_lsn();pg_current_wal_lsn
--------------------4/5C003C70
(1 row)test=# create database prod1;
CREATE DATABASE

1)如下图所示,“create database”事务对应的rmgr:Database,xid:288,操作类型:create,并从template0模板创建prod1数据库(copy),数据库oid:189186。

2)rmgr:XLOG,操作类型:CHECKPOINT_ONLINE,记录checkpoint对应的日志。fpw true:开启full page write。

3)rmgr:Transaction,操作类型:commit,xid为2882的事务提交,将日志条目从wal buffer同步(sync)到磁盘。
4)rmgr:Standby记录事务的状态信息。

3、分析“ create table”操作日志

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)

1)如下所示:rmgr:Storage对应的表创建,对应的操作:Create,lsn:4/5C004730,xid:2883,filenode:base/189186/189187。

2)创建表后,将更新系统表和视图及系统表的索引。在创建表后的日志条目里记录了对系统表、视图及索引的操作。如rmgr: Heap、rmgr: Btree 等,操作类型:insert。

rmgr: Heap        len (rec/tot):     56/  6703, tx:       2883, lsn: 4/5C004760, prev 4/5C004730, desc: INSERT off 102 flags 0x01, blkref #0: rel 1663/189186/1247 blk 0 FPW
rmgr: Btree       len (rec/tot):     55/  8345, tx:       2883, lsn: 4/5C0061A8, prev 4/5C004760, desc: INSERT_LEAF off 793, blkref #0: rel 1663/189186/2703 blk 1 FPW
rmgr: Btree       len (rec/tot):     55/ 11952, tx:       2883, lsn: 4/5C008260, prev 4/5C0061A8, desc: INSERT_LEAF off 715, blkref #0: rel 1663/189186/2704 blk 1 FPW
rmgr: Heap        len (rec/tot):     56/  8138, tx:       2883, lsn: 4/5C00B128, prev 4/5C008260, desc: INSERT off 243 flags 0x01, blkref #0: rel 1663/189186/2608 blk 14 FPW
rmgr: Btree       len (rec/tot):     55/  8783, tx:       2883, lsn: 4/5C00D110, prev 4/5C00B128, desc: INSERT_LEAF off 635, blkref #0: rel 1663/189186/2673 blk 11 FPW
rmgr: Btree       len (rec/tot):     55/  7976, tx:       2883, lsn: 4/5C00F378, prev 4/5C00D110, desc: INSERT_LEAF off 800, blkref #0: rel 1663/189186/2674 blk 17 FPW
rmgr: Heap        len (rec/tot):    207/   207, tx:       2883, lsn: 4/5C0112B8, prev 4/5C00F378, desc: INSERT off 103 flags 0x00, blkref #0: rel 1663/189186/1247 blk 0
rmgr: Btree       len (rec/tot):     64/    64, tx:       2883, lsn: 4/5C011388, prev 4/5C0112B8, desc: INSERT_LEAF off 793, blkref #0: rel 1663/189186/2703 blk 1
rmgr: Btree       len (rec/tot):     72/    72, tx:       2883, lsn: 4/5C0113C8, prev 4/5C011388, desc: INSERT_LEAF off 103, blkref #0: rel 1663/189186/2704 blk 1
rmgr: Heap        len (rec/tot):     80/    80, tx:       2883, lsn: 4/5C011410, prev 4/5C0113C8, desc: INSERT off 247 flags 0x00, blkref #0: rel 1663/189186/2608 blk 14
rmgr: Btree       len (rec/tot):     72/    72, tx:       2883, lsn: 4/5C011460, prev 4/5C011410, desc: INSERT_LEAF off 635, blkref #0: rel 1663/189186/2673 blk 11
rmgr: Btree       len (rec/tot):     55/ 10341, tx:       2883, lsn: 4/5C0114A8, prev 4/5C011460, desc: INSERT_LEAF off 1096, blkref #0: rel 1663/189186/2674 blk 7 FPW
rmgr: Heap        len (rec/tot):     56/  3340, tx:       2883, lsn: 4/5C013D28, prev 4/5C0114A8, desc: INSERT off 2 flags 0x01, blkref #0: rel 1663/189186/1259 blk 0 FPW
rmgr: Btree       len (rec/tot):     55/  7685, tx:       2883, lsn: 4/5C014A50, prev 4/5C013D28, desc: INSERT_LEAF off 729, blkref #0: rel 1663/189186/2662 blk 1 FPW
rmgr: Standby     len (rec/tot):     46/    46, tx:          0, lsn: 4/5C016870, prev 4/5C014A50, desc: RUNNING_XACTS nextXid 2884 latestCompletedXid 1543588432 oldestRunningXid 2883
rmgr: Btree       len (rec/tot):     55/ 11364, tx:       2883, lsn: 4/5C0168A0, prev 4/5C016870, desc: INSERT_LEAF off 681, blkref #0: rel 1663/189186/2663 blk 1 FPW
rmgr: Btree       len (rec/tot):     55/  6292, tx:       2883, lsn: 4/5C019520, prev 4/5C0168A0, desc: INSERT_LEAF off 673, blkref #0: rel 1663/189186/3455 blk 1 FPW
rmgr: Heap        len (rec/tot):     56/  4147, tx:       2883, lsn: 4/5C01ADD0, prev 4/5C019520, desc: INSERT off 81 flags 0x01, blkref #0: rel 1663/189186/1249 blk 4 FPW
rmgr: Btree       len (rec/tot):     55/  5564, tx:       2883, lsn: 4/5C01BE08, prev 4/5C01ADD0, desc: INSERT_LEAF off 404, blkref #0: rel 1663/189186/2658 blk 8 FPW
rmgr: Btree       len (rec/tot):     55/  3969, tx:       2883, lsn: 4/5C01D3E0, prev 4/5C01BE08, desc: INSERT_LEAF off 359, blkref #0: rel 1663/189186/2659 blk 6 FPW
rmgr: Heap        len (rec/tot):    175/   175, tx:       2883, lsn: 4/5C01E380, prev 4/5C01D3E0, desc: INSERT off 82 flags 0x00, blkref #0: rel 1663/189186/1249 blk 4
rmgr: Btree       len (rec/tot):     72/    72, tx:       2883, lsn: 4/5C01E430, prev 4/5C01E380, desc: INSERT_LEAF off 405, blkref #0: rel 1663/189186/2658 blk 8
rmgr: Btree       len (rec/tot):     64/    64, tx:       2883, lsn: 4/5C01E478, prev 4/5C01E430, desc: INSERT_LEAF off 360, blkref #0: rel 1663/189186/2659 blk 6
rmgr: Heap        len (rec/tot):    175/   175, tx:       2883, lsn: 4/5C01E4B8, prev 4/5C01E478, desc: INSERT off 83 flags 0x00, blkref #0: rel 1663/189186/1249 blk 4
rmgr: Btree       len (rec/tot):     72/    72, tx:       2883, lsn: 4/5C01E568, prev 4/5C01E4B8, desc: INSERT_LEAF off 404, blkref #0: rel 1663/189186/2658 blk 8
rmgr: Btree       len (rec/tot):     64/    64, tx:       2883, lsn: 4/5C01E5B0, prev 4/5C01E568, desc: INSERT_LEAF off 359, blkref #0: rel 1663/189186/2659 blk 6
rmgr: Heap        len (rec/tot):    175/   175, tx:       2883, lsn: 4/5C01E5F0, prev 4/5C01E5B0, desc: INSERT off 84 flags 0x00, blkref #0: rel 1663/189186/1249 blk 4
rmgr: Btree       len (rec/tot):     72/    72, tx:       2883, lsn: 4/5C01E6A0, prev 4/5C01E5F0, desc: INSERT_LEAF off 407, blkref #0: rel 1663/189186/2658 blk 8
rmgr: Btree       len (rec/tot):     64/    64, tx:       2883, lsn: 4/5C01E6E8, prev 4/5C01E6A0, desc: INSERT_LEAF off 359, blkref #0: rel 1663/189186/2659 blk 6
rmgr: Heap        len (rec/tot):    175/   175, tx:       2883, lsn: 4/5C01E728, prev 4/5C01E6E8, desc: INSERT off 86 flags 0x00, blkref #0: rel 1663/189186/1249 blk 4
rmgr: Btree       len (rec/tot):     72/    72, tx:       2883, lsn: 4/5C01E7D8, prev 4/5C01E728, desc: INSERT_LEAF off 404, blkref #0: rel 1663/189186/2658 blk 8
rmgr: Btree       len (rec/tot):     64/    64, tx:       2883, lsn: 4/5C01E820, prev 4/5C01E7D8, desc: INSERT_LEAF off 359, blkref #0: rel 1663/189186/2659 blk 6
rmgr: Heap        len (rec/tot):    175/   175, tx:       2883, lsn: 4/5C01E860, prev 4/5C01E820, desc: INSERT off 88 flags 0x00, blkref #0: rel 1663/189186/1249 blk 4
rmgr: Btree       len (rec/tot):     72/    72, tx:       2883, lsn: 4/5C01E910, prev 4/5C01E860, desc: INSERT_LEAF off 408, blkref #0: rel 1663/189186/2658 blk 8
rmgr: Btree       len (rec/tot):     64/    64, tx:       2883, lsn: 4/5C01E958, prev 4/5C01E910, desc: INSERT_LEAF off 359, blkref #0: rel 1663/189186/2659 blk 6
rmgr: XLOG        len (rec/tot):     49/   491, tx:       2883, lsn: 4/5C01E998, prev 4/5C01E958, desc: FPI_FOR_HINT , blkref #0: rel 1663/189186/1249 fork fsm blk 2 FPW
rmgr: Heap        len (rec/tot):     56/  4800, tx:       2883, lsn: 4/5C01EB88, prev 4/5C01E998, desc: INSERT off 201 flags 0x01, blkref #0: rel 1663/189186/1249 blk 27 FPW
rmgr: Btree       len (rec/tot):     72/    72, tx:       2883, lsn: 4/5C01FE48, prev 4/5C01EB88, desc: INSERT_LEAF off 404, blkref #0: rel 1663/189186/2658 blk 8
rmgr: Btree       len (rec/tot):     64/    64, tx:       2883, lsn: 4/5C01FE90, prev 4/5C01FE48, desc: INSERT_LEAF off 359, blkref #0: rel 1663/189186/2659 blk 6
rmgr: Heap        len (rec/tot):    175/   175, tx:       2883, lsn: 4/5C01FED0, prev 4/5C01FE90, desc: INSERT off 202 flags 0x00, blkref #0: rel 1663/189186/1249 blk 27
rmgr: Btree       len (rec/tot):     72/    72, tx:       2883, lsn: 4/5C01FF80, prev 4/5C01FED0, desc: INSERT_LEAF off 409, blkref #0: rel 1663/189186/2658 blk 8
rmgr: Btree       len (rec/tot):     64/    64, tx:       2883, lsn: 4/5C01FFC8, prev 4/5C01FF80, desc: INSERT_LEAF off 359, blkref #0: rel 1663/189186/2659 blk 6
rmgr: Heap        len (rec/tot):     80/    80, tx:       2883, lsn: 4/5C020020, prev 4/5C01FFC8, desc: INSERT off 534 flags 0x00, blkref #0: rel 1663/189186/2608 blk 14
rmgr: Btree       len (rec/tot):     55/ 12130, tx:       2883, lsn: 4/5C020070, prev 4/5C020020, desc: INSERT_LEAF off 712, blkref #0: rel 1663/189186/2673 blk 10 FPW
rmgr: Btree       len (rec/tot):     55/  4590, tx:       2883, lsn: 4/5C022FF0, prev 4/5C020070, desc: INSERT_LEAF off 403, blkref #0: rel 1663/189186/2674 blk 11 FPW

3)更新(update)操作前,需获取对象锁(lock),rmgr: Standby类型记录获取lock的日志条目,操作类型:Lock。

4)当表创建和系统表更新完成后,执行事务的commit。rmgr: Transaction资源类型记录事务commit操作。

5)通过wal日志记录的系统表的oid,可以获取创建表时,需要更新的系统表信息。

prod1=#  select oid,relname from sys_class where oid in(1247,2703,2704,2608,2673,2674,1259,2662,2663,3455,1249,2658,2659,1249);oid  |              relname
------+-----------------------------------1247 | pg_type2658 | pg_attribute_relid_attnam_index2659 | pg_attribute_relid_attnum_index2662 | pg_class_oid_index2663 | pg_class_relname_nsp_index3455 | pg_class_tblspc_relfilenode_index2673 | pg_depend_depender_index2674 | pg_depend_reference_index2703 | pg_type_oid_index2704 | pg_type_typname_nsp_index1249 | pg_attribute1259 | pg_class2608 | pg_depend
(13 rows)

3、分析“truncate table”操作日志

prod1=# select pg_current_wal_lsn();pg_current_wal_lsn
--------------------4/5C0249F8
(1 row)prod1=# truncate table tb1;
TRUNCATE TABLEprod1=# select pg_current_wal_lsn();pg_current_wal_lsn
--------------------4/5C024C50
(1 row)

1)如下图所示:执行‘truncate table’需要在表上获取lock,rmgr: Standby 的资源类型记录获取锁的操作,操作类型:lock。
2)‘truncate table’资源类型:rmgr: Storage,操作类型:Create,只是原对象的filenode“base/189186/189190”被更新。
3)对系统表、视图、索引进行更新。rmgr: Heap 、rmgr: Tree,操作类型:insert、update、clean等。rmgr: Heap2资源类型,对应的操作类型:CLEAN。
4)执行事务的commit,rmgr: Transaction ,操作类型:commit,并记录commit的时间戳。

4、分析“drop table”操作日志

prod1=# select pg_current_wal_lsn();pg_current_wal_lsn
--------------------4/5C024C50
(1 row)prod1=# drop table tb1;
DROP TABLE
prod1=# select pg_current_wal_lsn();pg_current_wal_lsn
--------------------4/5C0251D8
(1 row)

1)如下图所示:‘drop table’和‘truncate table’一样,需要获取对象lock。rmgr: Standby资源类型对应的操作:lock。
2)将对象drop后,将会delete系统表中所有的记录。rmgr: Heap,对应的操作为:DELETE

3)drop table后,完成事务的commit;rmgr: Transaction,对应的操作为:COMMIT。

5、分析“create |drop tablespace”操作日志

# 删除表空间操作
prod=# drop tablespace users;
DROP TABLESPACE
prod=# select pg_current_wal_lsn();pg_current_wal_lsn
--------------------4/66006700
(1 row)# 创建自定义表空间
prod=# create tablespace user_tbs1 location '/data/kingbase/tbs/users';
CREATE TABLESPACE
prod=# select pg_current_wal_lsn();pg_current_wal_lsn
--------------------4/66006AA8
(1 row)test=# select oid,* from sys_tablespace where spcname='user_tbs1';oid   |  oid   |  spcname  | spcowner | spcacl | spcoptions
--------+--------+-----------+----------+--------+------------189205 | 189205 | user_tbs1 |       10 |        |
(1 row)

1)如下图所示:‘drop tablespace’对应的资源类型:rmgr: Tablespace,操作类型为:DROP,记录表空间oid。执行完成后,立刻commit。
2)记录系统表更新操作,rmgr: Heap 、Tree,操作类型:INSERT、INSERT_LEAF

3)‘create tablespace’对应的资源类型:rmgr: Tablespace,操作类型:CREATE,创建完成后,事务commit。

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

KingbaseES V8R6运维案例之---wal日志解析DDL操作相关推荐

  1. KingbaseES V8R6 运维案例 --ksql访问动态库问题

    KingbaseES V8R6数据库运维案例之---ksql访问动态库问题 案例说明: CentOS环境下,在安装和初始化数据库实例后,启动数据库服务,通过ksql连接访问时出现以下故障: 经检查,是 ...

  2. 20个MySQL运维案例,请查收!

    墨墨导读:日常MySQL运维中,会遇到各种各样的问题,下面分享二十个MySQL运维案例,附有问题的分析和解决办法,希望你遇到同样的问题的时候,可以淡定地处理. 数据技术嘉年华,十周年盛大开启,点我立即 ...

  3. 运维人必备:日志分析工具日志易之银行业解决方案

    运维人必备:日志分析工具日志易之银行业解决方案 银行和金融服务行业面临着因为技术革新带来的许多挑战和机遇.系统每天产生数以 TB 计的交易.支付.渠道等各种日志数据.银行机构必须为迅速增长的海量数据建 ...

  4. 智能运维案例系列 | 新网银行 X 袋鼠云:银行核心业务系统日志监控平台建设实践...

    在聊今天的案例之前,我想首先和大家聊聊当前最热的词汇之一:"数据驱动". 双11就要到了,当你打开手淘页面,你会收到平台推荐给你的优惠活动信息,你可能感兴趣的商家或者商品, 你随意 ...

  5. iis日志字段解析 网站运维工具使用iis日志分析工具分析iis日志(iis日志的配置)

    网站运维工具使用iis日志分析工具分析iis日志(iis日志的配置) https://www.cnblogs.com/fuqiang88/p/5870306.html 我们只能通过各种系统日志来分析网 ...

  6. was这么做的负载均衡_中间件(WAS、WMQ)运维 9个常见难点解析

    原标题:中间件(WAS.WMQ)运维 9个常见难点解析 本文由社区中间件达人wangxuefeng266.ayy216226分享整理,包括WAS.WMQ在安装.巡检.监控.优化过程中的常见难点. 安装 ...

  7. postgresql 安装 配置远程访问 PostgreSQL WAL日志解析工具: wal2json cdc数据同步方案

    文章目录 一.安装postgres 二.WAL日志解析工具 三.cdc增量数据同步方案 一.安装postgres (1)新增postgres用户组: groupadd postgres 新增postg ...

  8. KingbaseES V8R6集群运维案例之---sys_rewind应用分析

    ​案例说明: sys_rewind是用于在数据库cluster的时间线分叉以后,同步一个 KingbaseES 数据库cluster 和同一数据库cluster另一份拷贝的工具.一种典型的场景是在失效 ...

  9. KingbaseES V8R6集群运维案例---数据块故障自动修复(auto_bmr)

    案例说明: 在Oracle11.2版本之后,DataGuard 若搭建实时应用日志的物理备库,那么在主库数据文件少 量坏块的情况下,可以利用ABCR技术快速修复坏块. Starting in Orac ...

最新文章

  1. python-day05正则表达式
  2. 小编教您Springboot项目中异常拦截设计与处理
  3. 深入分析 Java 中的中文编码问题--转
  4. 2020-12-08 Halcon初学者知识:【3-1】Halcon的语法
  5. 服务器内存傲腾基本参数信息,服务器加傲腾内存
  6. 新年第一笔收入:支付宝开奖,你分了多少?
  7. 为防范“手机低头族”出交通事故 韩国开发行人警示系统
  8. 关联容器----关联容器概述,关联容器操作,无序容器
  9. python安装环境配置
  10. springmvc mybatis redis mysql maven搭建基本开发框架 (二)
  11. Go语言 gorutine和channel协同工作经典应用案例 (Golang经典编程案例)
  12. 陈欧:创业是最美好的生活方式
  13. matlab矩阵求和速度慢,matlab – 将完整矩阵转换为完整矩阵的速度很慢?
  14. 手机网站支付唤起支付宝app
  15. sd卡卡槽_SD卡面包板插槽DIY图解
  16. 铁乐学Python_day05-字典dict
  17. 软件特性开发的流程感想
  18. 双月学习OKR(67月)
  19. python手势识别控制幻灯片翻页系统_基于Emgu CV 的手势识别实现PPT的控制放映
  20. 两例司法实践撕开了一个口子,区块链应用落地会加速吗?

热门文章

  1. Jackson之注解大全
  2. 细说联想企业网盘背后的安全那些事儿
  3. Nginx Rewrite研究笔记
  4. mysql全文索引实现搜索功能(关键词查询)
  5. mysql查询关键字_MySQL查询关键词
  6. mysql 多字段关键词模糊查询
  7. php中的网页漂浮代码,网页中上下漂浮的按钮JS代码-DEDE
  8. 日常生活开支记账明细_教你记账管理家庭日常生活收入支出明细的实例
  9. 前端学习-盒模型和怪异盒模型
  10. 网页视频播放器代码Vcastr2