登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
博客
发1篇日志+1圆
记录
发1条记录+2圆币
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
VIP网盘
VIP申请
网盘
联系我们
道具
勋章
任务
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
安全
›
PostgreSQL pg_wal目录下都哪些类型的文件(译) ...
PostgreSQL pg_wal目录下都哪些类型的文件(译)
[ 复制链接 ]
站竣凰
2025-6-10 18:57:48
笔者最近写了一个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.ready,000000010000000000000066.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.signal和standby.signal。
用途:
— recovery.signal:表示数据库应以恢复模式启动。此文件通常在进行时间点恢复(PITR)时创建。
— standby.signal:表示数据库应以备用模式启动,通常用于复制设置以保持服务器作为热备用。
示例文件:recovery.signal,standby.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环境,特别是在涉及复制、备份和恢复的场景中。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
代码
业界
签约作者
程序园优秀签约作者
发帖
站竣凰
2025-6-10 18:57:48
关注
0
粉丝关注
24
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
敖可
9984
黎瑞芝
9990
杭环
9988
4
猷咎
9988
5
凶契帽
9988
6
接快背
9988
7
氛疵
9988
8
恐肩
9986
9
虽裘侪
9986
10
里豳朝
9986
查看更多