首页 > 数据库 >PostgreSQL pg_wal目录下都哪些类型的文件(译)

PostgreSQL pg_wal目录下都哪些类型的文件(译)

时间:2024-11-16 08:56:48浏览次数:1  
标签:Files 文件 WAL PostgreSQL wal pg

笔者最近写了一个PostgreSQL自动故障转移脚本,在测试的过程中,发现pg_wal目录中除了常规的wal日志文件,还会生成其他类型的文件,参考如下截图,除了wal日志,其他的这些文件代表什么意思,用什么用途?如下译文中将会给出一个完成的答案。
pg_wal目录

archive_status目录:

原文地址:What Are the Different Types of Files Stored in PostgreSQL’s pg_wal Directory? | by Sheikh Wasiu Al Hasib | Medium

 

 

PostgreSQL pg_wal目录下都哪些类型的文件

在PostgreSQL中,pg_wal目录(在PostgreSQL 10之前的版本中称为pg_xlog)对于数据库的预写日志(Write-Ahead Logging,简称WAL)系统至关重要。该目录存储各种文件,以确保数据库的持久性、一致性和恢复能力。以下是pg_wal目录内文件的类型及其用途的概述:
 

1. WAL Segment Files

命名约定:WAL(预写日志)段文件遵循特定的命名约定,例如000000010000000000000066。这个名称由时间线ID、日志文件ID和段ID组成,全部采用十六进制格式。

用途:
— 这些文件存储实际的WAL记录,这些记录会记录对数据库所做的每一项更改。WAL段文件对于确保在崩溃恢复、时间点恢复(PITR)或在向备用服务器进行复制期间可以重新播放所有事务至关重要。
— 每个WAL段文件默认通常为16MB大小(此大小可以配置)。

示例文件:000000010000000000000066
 

2. Partial WAL Files (`.partial`)

命名约定:这些文件的命名方式与WAL(预写日志)段文件相似,但带有.partial扩展名,例如000000010000000000000066.partial

用途:
— 当一个WAL段没有完全写入时(通常是由于意外关闭或崩溃导致),会创建一个.partial文件。这个文件表明WAL段是不完整的。
— 在恢复过程中,PostgreSQL会尝试尽可能地完成这些文件,或者如果认为它们无法恢复,则可能会丢弃它们。

示例文件:000000010000000000000066.partial

 

3. Timeline History Files (`.history`)

命名约定:时间线历史文件的命名格式为0000000B.history,其中数字对应于时间线ID。

用途:
— 这些文件用于跟踪时间线变更的历史。时间线变更会在某些情况下发生,例如当备用服务器被提升为主服务器时,或者在时间点恢复(PITR)过程中达到特定的恢复目标时。
— .history文件记录了时间线发生分歧的日志序列号(LSN),并提供了导致新时间线创建的事件序列的记录。

示例文件:0000000B.history

译者注:一个History文件示例内容如下:

 

4. Status Files Inside `archive_status` Directory

位置:这些文件位于pg_wal内的archive_status子目录中。

文件类型:

.ready文件:
命名约定:这些文件的命名方式与WAL段文件相似,但带有.ready扩展名,例如000000010000000000000066.ready
用途:.ready文件表示相应的WAL段文件已准备好进行归档。PostgreSQL将尝试通过执行archive_command来归档WAL段。

.done文件:
命名约定:这些文件的命名方式与WAL段文件相似,但带有.done扩展名,例如000000010000000000000066.done
用途:.done文件表示相应的WAL段已成功归档,PostgreSQL可以安全地回收或删除WAL文件。

示例文件:000000010000000000000066.ready000000010000000000000066.done
 

5. Temporary Files (`.tmp`)

命名约定:pg_wal目录中的临时文件可能具有各种扩展名,例如.tmp

用途:
— 这些文件是在写入、归档或传输WAL段的过程中创建的。它们代表中间状态,并且通常在操作完成后被重命名或删除。
— 例如,当WAL段正在被复制到归档位置时,可能会使用临时文件。

  • 示例文件:000000010000000000000066.tmp
 

6. Backup Label Files (`backup_label` and `backup_label.old`)

命名约定:该文件被命名为backup_label,其旧版本可能会被保留为backup_label.old

用途:
— 当使用pg_basebackup等工具进行基础备份时,会创建backup_label文件。它包含有关备份的信息,包括备份的起始日志序列号(LSN)和时间线。
— 在恢复过程中,此文件对于确定WAL重播的起始点至关重要。

示例文件:backup_label

译者注:PostgreSQL新版本中为该类文件后缀为backup,比如000000070000000000000013.00000028.backup,其内容如下:

 

7. End-of-Recovery Markers (`recovery.signal`, `standby.signal`)

命名约定:这些文件被命名为recovery.signalstandby.signal

用途:
— recovery.signal:表示数据库应以恢复模式启动。此文件通常在进行时间点恢复(PITR)时创建。
— standby.signal:表示数据库应以备用模式启动,通常用于复制设置以保持服务器作为热备用。

示例文件:recovery.signalstandby.signal
  译者注:原文提到了recovery.signal,standby.signal,这两(类)文件应该是在PostgreSQL实例的数据文件目录下的,不应该在WAL日志目录

 

Summary of Use Cases

WAL Segment Files: 存储对数据库恢复、复制和时间点恢复至关重要的WAL记录。
Partial Files: 表示不完整的WAL段,通常在崩溃期间创建。
History Files: 跟踪时间线变更,对于理解和管理跨不同时间线的恢复至关重要。
Status Files (`archive_status`): 管理WAL段的归档过程,指示它们是否已准备好归档或已完成归档。
Temporary Files: 在WAL处理阶段中使用,通常是暂时的,并在操作完成后被删除。
Backup Label Files: 在从基础备份恢复期间,对于确定WAL重播的起点至关重要。
End-of-Recovery Markers: 控制PostgreSQL实例的启动模式,确定它是否应以恢复模式或备用模式启动。

 

Conclusion

pg_wal目录是PostgreSQL WAL系统的重要组成部分,它包含了多种文件,这些文件在确保数据库的持久性、一致性和可恢复性方面发挥着不同的作用。了解每种文件类型的用途有助于数据库管理员更有效地管理PostgreSQL环境,特别是在涉及复制、备份和恢复的场景中。

标签:Files,文件,WAL,PostgreSQL,wal,pg
From: https://www.cnblogs.com/wy123/p/18547548

相关文章

  • 防火墙形态之详解(Detailed Explanation of Firewall Form)
     ......
  • PostgreSQL libpq的客户端故障转移
    什么是libpqlibpq是应用程序使用PostgreSQL的C接口。libpq是一个库函数的集合,它们允许客户端程序传递查询给PostgreSQL后端服务器并且接收这些查询的结果。libpq也是很多其他PostgreSQL应用接口的底层引擎,包括为C++、Perl、Python、Tcl和ECPG编写的接口。类似于Redis或者Mongo......
  • pg16源码部署
    环境:OS:Centos7pg:pg16说明:pg16已经不提供在centos7下使用yum方式安装了,只能通过源码编译的方式安装.1.源码下载:https://www.postgresql.org/ftp/source/v16.4/ 2.解压源码包[root@localhostsoft]#cd/soft/pg16[root@localhostpg16]#tar-zxvfpostgresql-16.4.tar......
  • 时序违例原因分析之 FPGA
    时序违例是FPGA设计过程中的一个常见问题,特别是当系统达到高速或复杂的级别时,故本文将重点探讨时序违例阶段中FPGA的原因分析。FPGA的设计在接收到时钟信号后,需要一定时间才能完成逻辑运算,但如果所需时间超过了时钟周期,就会导致时序违例,此时会发生一些奇怪的现象,例如输出数......
  • postgresql逆向工程
    packagestanfordcorenlp.wang.biao.diy;importcom.baomidou.mybatisplus.annotation.FieldFill;importcom.baomidou.mybatisplus.generator.FastAutoGenerator;importcom.baomidou.mybatisplus.generator.config.DataSourceConfig;importcom.baomidou.mybatisplus.g......
  • 【Unity相机和角色控制插件】RPG Cameras & Controllers 提供了一套完整的相机和角色
    RPGCameras&Controllers是一款专为RPG游戏设计的Unity插件,提供了一套完整的相机和角色控制系统,帮助开发者快速实现第三人称视角和角色移动控制。这个插件包括了多个自定义选项,允许开发者轻松调整相机和角色控制的行为,适用于动作角色扮演类游戏(ARPG)或传统RPG类型的项......
  • docker-compose安装pgsql和pgvector
    快速安装PostgreSQL和pgvector1、创建Dockerfile文件,代码如下:#使用PostgreSQL16基础镜像FROMpostgres:16#安装pgvectorRUNapt-getupdate&&\apt-getinstall-ypostgresql-16-pgvector&&\rm-rf/var/lib/apt/lists/*#设置启动命令CMD["postgr......
  • Assignment pg walkthrough Easy 通配符提权变种
    nmap扫描┌──(root㉿kali)-[~]└─#nmap-p--A192.168.157.224StartingNmap7.94SVN(https://nmap.org)at2024-11-1404:18UTCStats:0:00:53elapsed;0hostscompleted(1up),1undergoingServiceScanServicescanTiming:About66.67%done;ETC:04:......
  • Grafana:监控PostgreSQL数据运维新利器
    在数据驱动的业务环境中,数据库的性能监控是确保数据流畅和系统稳定的关键。PostgreSQL,作为强大的开源关系型数据库,其性能监控尤为重要。Grafana,一个开源的数据可视化和监控平台,提供了一个直观的界面来监控和分析数据。本文将带您了解如何利用Grafana来监控PostgreSQL,让您的数据库......
  • Zino pg walkthrough Intermediate
    nmap扫描发现smba共享文件┌──(root㉿kali)-[~]└─#nmap-p--A192.168.167.64StartingNmap7.94SVN(https://nmap.org)at2024-11-1400:33UTCStats:0:01:42elapsed;0hostscompleted(1up),1undergoingSYNStealthScanSYNStealthScanTiming:Abo......