暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

人大金仓数据库KingbaseES --wal日志

数据猿 2023-11-24
732


关键字:

WAL,LSN,人大金仓,KingbaseES

WAL日志介绍

Wal日志即writes achead log预写式日志,简称wal日志,是数据库的重要组成部分,存储了数据库系统中所有更改和操作的历史记录,以确保数据库不会因为故障而丢失数据。

WAL日志重要概念

WAL日志存放在$DATA/sys_wal中。

1. LSN:LSN即日志序列号Log Sequence Number。表示XLOG Record记录写入到事务日志中的位置。LSN的值为无符号64位整型。在事务日志中,LSN是单调递增且唯一。

2. Checkpoint :

检查点Checkpoint由Checkpointer进程执行,主要的处理流程如下:

1) 获取Redo point,构造包含此Redo point检查点信息的XLOG Record并写入到wal segment file中;

2) 刷新脏页到磁盘上;

3) 更新Redo point等信息到数据库控制文件中。

WAL日志常用命令

  1. 查看wal日志的大小及级别设置

test=# \l

test=# show archive_mode;

test=# show wal_level;

test=# show min_wal_size;

test=# show max_wal_size;

  1. 定位当前正在使用的WAL日志

test=# select txid_current(),sys_current_wal_lsn(),sys_walfile_name(sys_current_wal_lsn()),sys_walfile_name_offset(sys_current_wal_lsn());

其中sys_current_wal_lsn():获得当前 wal 日志写入位置。

sys_walfile_name():转换 wal 日志位置为文件名。

sys_walfile_name_offset():返回转换后的 wal 日志文件名和偏移量。

WAL: 000000010000000000000003;WAL的名称由3部分组成,每个部分代表8个数字,第一部分是TimeLine ID,从1开始。第二部分是逻辑文件ID,从0开始。第三部分是物理文件ID,从00开始,知道FF,周二复制的循环。

00000001:代表数据库运行的时间轴,如果恢复过数据库(这备切换)这个值会增大;

00000000:与LSN的第二部分相对应

00000003:代表waifile文件的最后两位

  1. 切换日志,定位当前正在使用的wal日志

select sys_switch_wal();命令为查看是否归档

test=# select sys_switch_wal();

test=# checkpoint;

test=# select txid_current(),sys_current_wal_lsn(),sys_walfile_name(sys_current_wal_lsn()),sys_walfile_name_offset(sys_current_wal_lsn());

  1. 偏移量的计算
  2. 先查看当前的LSN

test=# select sys_current_wal_lsn();

  1. 转换LSN

test=# select x'3000230'::int;


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论