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

关键字:

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;

  • 17
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值