PostgreSQL日志号LSN和wal日志文件 使用lsn 获取 wal文件名的实例

日志文件则由24个16进制数字组成,分三部分:时间线、LSN高32位、LSN低32位/(2**24)的值

postgres=# 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       
--------------------+--------------------------+------------------------------------
 3FB/AE61A1A0       | 00000001000003FB000000AE | (00000001000003FB000000AE,6398368)
(1 row)

postgres=# select x'61A1A0'::int;
  int4   
---------
 6398368
(1 row)

pg_current_wal_lsn():获得当前wal日志写入位置。
pg_walfile_name():转换wal日志位置为文件名。
pg_walfile_name_offset():返回转换后的wal日志文件名和偏移量。

说明
LSN:3FB/AE61A1A0
3FB:代表wal文件的第二部分
AE:代表wal文件的最后两位
61A1A0:代表偏移量

00000001000003FB000000AE
wal文件由24个字符,三部分组成,每部分由8个字符组成,代表含义如下
00000001:代表数据库运行的时间轴,如果恢复过数据库(主备切换)这个值会增大
000003FB:对LSN的第二部分对应
000000AE:代表walfile文件的最后两位

查看wal日志记录大小

=> SELECT pg_size_pretty('0/3A69C478'::pg_lsn - '0/38E04A08'::pg_lsn);
 pg_size_pretty
----------------
 25 MB
(1 row)

  查看统计数据:

postgres$ /usr/lib/postgresql/11/bin/pg_waldump --stats -p /var/lib/postgresql/11/main/pg_wal -s 0/3A69C530 -e 0/3BE87658
Type              N      (%)   Record size      (%)   FPI size      (%)  
----              -      ---   -----------      ---   --------      ---  
XLOG           1721 (  1,03)         84329 (  0,77)   13916104 (100,00)       
Transaction   27235 ( 16,32)        926070 (  8,46)          0 (  0,00)         
Storage           1 (  0,00)            42 (  0,00)          0 (  0,00)             
CLOG              1 (  0,00)            30 (  0,00)          0 (  0,00)             
Standby           4 (  0,00)           240 (  0,00)          0 (  0,00)            
Heap2         27522 ( 16,49)       1726352 ( 15,76)          0 (  0,00)        
Heap         109691 ( 65,71)       8169121 ( 74,59)          0 (  0,00)        
Btree           756 (  0,45)         45380 (  0,41)          0 (  0,00)          
           --------               --------            --------                
Total        166931               10951564 [44,04%]   13916104 [55,96%]