PostgreSQL 17增量备份

由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"}
### 实现 Windows 环境下 PostgreSQL 数据库增量备份 在 Windows 系统上实现 PostgreSQL增量备份主要依赖于 `pg_basebackup` 和 `pg_receivewal` 工具。这两种工具提供了不同的方式来执行增量备份。 #### 使用 pg_receivewal 进行增量备份 `pg_receivewal` 是一种用于连续接收 WAL (Write-Ahead Logging) 文件并保存到指定位置的命令行工具。通过这种方式可以有效地创建增量备份,因为每次只需要复制自上次备份以来更改的数据[^1]。 ```bash "D:\PostgreSQL\pg10\bin\pg_receivewal.exe" --host=数据库IP --port=端口 --username=用户名 -D D:\wal_backup_directory --progress -v ``` 此命令会持续监听新的WAL文件并将它们存储在一个目录中(`D:\wal_backup_directory`)。当需要恢复时,可以通过配置参数指向这个包含所有必要日志条目的路径来进行时间点恢复(PITR)。 #### 设置计划任务自动完成每日增量备份 为了确保定期获取最新的变更记录,在 Windows 上可通过 Task Scheduler 创建一个定时任务来运行上述命令。这使得即使无人值守也能保持最新状态下的增量备份副本[^2]。 - 打开 "Task Scheduler" - 选择 "Create Basic Task..." - 设定触发器为每天特定时间点启动 - 动作设置为 “Start a program” - 浏览找到 `pg_receivewal.exe`, 并填入相应参数作为附加选项 这样就完成了基于 Windows 计划任务机制上的自动化增量备份流程构建。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值