由Robert Haas主导提交的增量备份特性是17版本官宣的重量级特性,本文将从特性起源、特性示例、注意事项几方面来进行介绍。
特性起源
对于开发增量备份特性这个项目工程,作者一开始信心满满,项目参与者也是如此。最早计划在13版本实现,但实际开发过程中发现复杂度较高,最终在13版本阶段性完成了备份清单的功能设计以及备份验证工具pg_verifybackup。
从13版本开始,使用pg_basebackup工具执行备份时会自动生成备份清单文件。备份完成之后在备份目录下会存在一个backup_manifest文件,它是一个JSON格式的对象:
- PostgreSQL-Backup-Manifest-Version: 备份清单的版本
- Files: 备份中包含的文件列表,以及每个文件的相对路径,来自PGDATA和重要的元数据,例如大小、最后修改时间和校验和
- WAL-Ranges: 时间线、备份开始的LSN、备份结束的LSN
- Manifest-Checksum: 备份清单文件的校验和
备份清单文件内容示例如下:
{ "PostgreSQL-Backup-Manifest-Version": 1,
"Files": [
{ "Path": "backup_label", "Size": 224, "Last-Modified": "2024-07-10 05:22:40 GMT", "Checksum-Algorithm":"CRC32C", "Checksum": "5a14ed2a" },
...
],
"WAL-Ranges": [
{ "Timeline": 1, "Start-LSN": "0/2000028", "End-LSN": "0/2000100" }
],
"Manifest-Checksum": "1f04834810e2fc9758011503284440d0fb630554f8096b2d4d1aa97eab8c3670"}