笔者最近写了一个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环境,特殊是在涉及复制、备份和恢复的场景中。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |