弄明白日志号的原理之后,一段时间又有点忘记了,干脆整理一遍:

(一)wal文件命名规则

1)在$PGDATA目录下面的pg_xlog目录中存放着xlog日志文件(10.1之后变为了pg_wal):

total 165896
-rw-r--r-- 1 apple staff 660K 11 22 15:46 000000010000000000000013.dump
-rw------- 1 apple staff 295B 11 22 16:12 000000010000000000000014.00000028.backup
-rw------- 1 apple staff 16M 12 15 16:28 000000010000000000000046
-rw------- 1 apple staff 16M 12 15 16:30 000000010000000000000047
-rw------- 1 apple staff 16M 12 15 16:30 000000010000000000000048
-rw-r--r-- 1 apple staff 357K 1 16 16:27 000000010000000000000044.dump
-rw------- 1 apple staff 16M 3 27 09:49 000000010000000000000045
-rw------- 1 apple staff 16M 3 27 09:49 000000010000000000000044
drwx------ 4 apple staff 136B 4 9 10:52 archive_status

2)wal日志号由64位组成,即有2**64个日志编号,用完了需要重置,但是这个数量已经很多了,相当于1024P个,1024*1024个T。

日志文件则由24个16进制数字组成,分三部分:时间线、LSN高32位、LSN低32位/(2**24)的值(即低32位中最高两位,表示该日志文件的LSN起始编号,结合具体的LSN方便理解一点)。

(二)在数据库查看具体的日志编号LSN

1)用到的一些方法:

apple=# select proname from pg_proc where proname like 'pg_%_location';
proname
---------------------------------
pg_current_xlog_insert_location
pg_current_xlog_location
pg_last_xlog_receive_location
pg_last_xlog_replay_location
pg_tablespace_location
(5 rows)

2)数据库中可以查询到当前的日志编号情况:

apple=# select pg_current_xlog_location();
pg_current_xlog_location
--------------------------
0/45000098
(1 row)

可以看到:

0表示LSN的高32位

45表示对应的xlog文件的最后两位

000098表示当前的LSN在对应的xlog中的偏移字节地址,我记得有人写过工具来读取xlog中对应块的数据并解析的,需要的时候再用用。

从current_xlog_location也可以推断出该日志对应的xlog文件:

时间线0000000000000045 ----> 000000010000000000000045

(三)LSN在用于恢复时

1)通过pg_controldata来获取control文件中的控制信息:

appledeMacBook-Pro-2:pg_xlog apple$ pg_controldata
pg_control version number: 942
Catalog version number: 201510051
Database system identifier: 6451705940496018968
Database cluster state: in production
pg_control last modified: 一 4/ 9 10:52:12 2018
Latest checkpoint location: 0/45000028        
Prior checkpoint location: 0/446C7878
Latest checkpoint's REDO location: 0/45000028  
Latest checkpoint's REDO WAL file: 000000010000000000000045
Latest checkpoint's TimeLineID: 1
Latest checkpoint's PrevTimeLineID: 1
Latest checkpoint's full_page_writes: on
Latest checkpoint's NextXID: 0/535519
Latest checkpoint's NextOID: 20278

2)用于恢复的两个LSN

Latest checkpoint location: 0/45000028         --表示在做checkpoint本身的日志号
Prior checkpoint location: 0/446C7878
Latest checkpoint's REDO location: 0/45000028  --表示checkpoint时wal日志的位置,也是恢复时,开始日志回滚的起始日志号,即从45这个wal文件中的28字节处开始重做wal日志

PostgreSQL日志号LSN和wal日志文件简记的更多相关文章

  1. PgSQL · 追根究底 · WAL日志空间的意外增长

    问题出现 我们在线上巡检中发现,一个实例的pg_xlog目录,增长到4G,很是疑惑.刚开始怀疑是日志归档过慢,日志堆积在pg_xlog目录下面,未被清除导致.于是检查归档目录下的文件,内容如下.但发现 ...

  2. WAL日志文件名称格式详解

    转自:http://blog.osdba.net/534.html WAL日志文件名称格式详解 PostgreSQL的WAL日志文件在pg_xlog目录下,一般情况下,每个文件为16M大小: osdb ...

  3. postgresql如何维护WAL日志/归档日志

    WAL日志介绍 wal全称是write ahead log,是postgresql中的online redo log,是为了保证数据库中数据的一致性和事务的完整性.而在PostgreSQL 7中引入的 ...

  4. PostgreSQL WAL日志详解

    wal日志即write ahead log预写式日志,简称wal日志.wal日志可以说是PostgreSQL中十分重要的部分,相当于oracle中的redo日志. 当数据库中数据发生变更时:chang ...

  5. KingbaseES通过sys_waldump解析wal日志

    前言 oracle中的redo日志我们无法直接读取,然而对于KingbaseES数据库,我们可以利用sys_waldump工具解析wal日志,查看wal日志记录的信息. 我们可以利用 sys_wald ...

  6. SQL Server数据库事务日志序列号(LSN)介绍

    原文:http://blog.csdn.net/tjvictor/article/details/5251463     日志序列编号(LSN)是事务日志里面每条记录的编号. 当你执行一次备份时,一些 ...

  7. postgresql数据库配置csv格式的日志输出

    postgresql数据库配置csv格风格日志输出 以下介绍postgresql数据库中关于csv格式日志(pg中一种比較具体的日志输出方式)的设置方法. 1.进入$PGDATA文件夹(pg的安装文件 ...

  8. Log4j配置详解及不同的包(package)下的日志写入到不同的日志文件下

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt262 以下都是log4j.properties要写入的内容: 一:参数介绍: ...

  9. 主库的wal日志已经被归档或异常丢失如何搭建从库

      关键字:wal日志归档  搭建从库 restore_command master 194.1 slave 194.4 wal归档目录 /backup/pgsql/pg_arch/ xlog目录 / ...

随机推荐

  1. GIT使用—补丁与钩子

    一.补丁 生成补丁 [root@localhost buding]# echo B > file;git add file;git commit -m "B" [master ...

  2. CSS 图片廊

    CSS 图片廊 一.示例一 代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8" ...

  3. 浅谈web应用的负载均衡、集群、高可用(HA)解决方案

    http://aokunsang.iteye.com/blog/2053719   声明:以下仅为个人的一些总结和随写,如有不对之处,还请看到的网友指出,以免误导. (详细的配置方案请google,这 ...

  4. 异常: error MSB8008: 指定的平台工具集(V120)未安装或无效

    打开项目属性->配置属性->常规,平台工作集,选为v100

  5. Linux下ping命令参数详细解析

    -a Audible ping. #Audible ping. -A Adaptive ping. Interpacket interval adapts to round-trip time, so ...

  6. 如何使用curl进行网页授权

    答:使用curl的-u选项,使用方法如下 curl -u username URL (会提示输入密码)

  7. 常用git代码提交命令

    知识点:本篇博客记录了日常开发中,所涉及到git代码提交命令 (一)初始化本地仓库,提交代码,提交到远程git远程仓库 git init    //初始化本地仓库 git add .   //将当前目 ...

  8. WIN7环境安装informatica 提示 不能创建Domain或者node

    查看infa安装的bat文件install.bat,会发现,它调用的是.\Server\Windows\Disk1\InstData\VM\install.exe.所以,我们在安装执行,右键insta ...

  9. PAT L3-012 水果忍者

    占个坑,等自己数学好一点以后再来重新把这个题写一遍 附上链接 附上大牛代码: #include <stdio.h> #include <algorithm> #define I ...

  10. counting the buildings - 第一类斯特灵数

    2017-08-10 21:10:08 writer:pprp //TLE #include <iostream> #include <cstdio> #include < ...