EDB 很高兴地宣布 Barman 3.11.1 和 3.11.0 版本的发布。
`
barman-cloud-backup-delete`
中的失败问题。由于上一个版本引入的错误,此命令在应用保留策略时会失败。添加对 Postgres 17+ 增量备份的支持。此主要功能由几个小的更改组成
向 `
barman backup`
命令添加 `
--incremental`
命令行选项。这用于指定进行增量备份时的父备份。父备份可以是完整备份或另一个增量备份。
添加 `
latest-full`
快捷备份 ID。与 `
latest`
一起,这可以用作选择增量备份的父备份的快捷方式。虽然 `
latest`
独立获取最新的备份(无论它是完整备份还是增量备份),但 `
latest-full`
获取最新的完整备份。
当 `
backup_method = postgres`
时,`
barman keep`
命令只能应用于完整备份。如果完整备份有依赖于它的增量备份,则所有增量备份也会被 Barman 保留。
删除备份时,所有依赖于它的增量备份(如果有)也会被删除。
保留策略不考虑增量备份。由于在没有完整备份可用的完整备份链的情况下无法恢复增量备份,因此只有完整备份才会计入保留策略。
`
barman recover`
在恢复时需要将完整备份与增量备份链组合在一起。新的 CLI 选项 `
--local-staging-path`
和相应的 `
local_staging_path`
配置选项用于指定在恢复增量备份时将备份组合在 Barman 主机中的路径。
更改 `
barman show-backup`
输出
添加“估计集群大小”字段。在恢复备份时,估计集群的数据目录大小很有用。当恢复压缩备份或增量备份时,这尤其有用,因为在这些情况下,备份的大小不能反映 Postgres 中数据目录的大小。在 JSON 格式中,它存储为 `
cluster_size`
。
添加“WAL 汇总器”字段。此字段显示在进行备份时是否在 Postgres 中启用了 `
summarize_wal`
。在 JSON 格式中,它存储为 `
server_information.summarize_wal`
。对于 Postgres 16 及更早版本,将省略此字段。
添加“数据校验和”字段。这显示在进行备份时是否在 Postgres 中启用了 `
data_checkums`
。在 JSON 格式中,它存储为 `
server_information.data_checksums`
。
添加“备份方法”字段。这显示此备份使用的备份方法。在 JSON 格式中,它存储为 `
base_backup_information.backup_method`
。
将“磁盘使用量”字段重命名为“备份大小”。后者提供了一个更全面的名称,表示 Barman 主机中备份的大小。`
base_backup_information`
下的 JSON 字段也从 `
disk_usage`
重命名为 `
backup_size`
。
添加“WAL 大小”字段。这显示备份所需的 WAL 的大小。在 JSON 格式中,它存储为 `
base_backup_information.wal_size`
。
重构“增量大小”字段。它现在被命名为“资源节省”,现在显示在使用 `
rsync`
或 `
pg_basebackup`
进行增量备份时节省的资源估计值。它将备份大小与估计的集群大小进行比较,以估计通过进行增量备份节省的磁盘和网络资源量。在 JSON 格式中,该字段从 `
incremental_size`
重命名为 `
base_backup_information`
下的 `
resource_savings`
。
将 `
system_id`
字段添加到 JSON 文档。此字段包含 Postgres 的系统标识符。它以控制台格式存在,但在 JSON 格式中缺失。
添加与 Postgres 增量备份相关的字段
“备份类型”:指示 Postgres 备份是完整备份还是增量备份。在 JSON 格式中,它存储为 `
base_backup_information`
下的 `
backup_type`
。
“根备份”:一个或多个增量备份链的根的完整备份的 ID。在 JSON 格式中,它存储为 `
catalog_information.root_backup_id`
。
“父备份”:从中进行此增量备份的完整或增量备份的 ID。在 JSON 格式中,它存储为 `
catalog_information.parent_backup_id`
。
“子备份”:以此备份为父备份进行的增量备份的 ID。在 JSON 格式中,它存储为 `
catalog_information.children_backup_ids`
。
“备份链大小”:从该增量备份到根备份的链中的备份数。在 JSON 格式中,它存储为 `
catalog_information.chain_size`
。
更改 `
barman list-backup`
输出
它现在在 JSON 输出中包含备份类型,对于使用 rsync 进行的备份,该类型可以是 `
rsync`
,对于使用 `
pg_basebackup`
进行的备份,该类型可以是 `
full`
或 `
incremental`
,对于云快照,该类型可以是 `
snapshot`
。当打印到控制台时,备份类型由相应的标签 `
R`
、`
F`
、`
I`
或 `
S`
表示。
从输出中删除表空间信息。这会使输出膨胀。表空间信息仍然可以在 `
barman show-backup`
的输出中找到。
在通过 `
barman recover`
配置 `
recovery_target_time`
时,始终设置一个带有时间戳的时间戳。以前,如果没有通过 `
--target-time`
显式设置时区,Barman 将在 Postgres 中配置没有时区的 `
recovery_target_time`
。如果没有时区,Postgres 会假定通过 Postgres 中的 `
timezone`
GUC 配置的内容。从现在开始,如果用户没有通过 `
--target-time`
选项设置时区,Barman 将发出警告并使用 Barman 主机的时区配置 `
recovery_target_time`
。
当使用“no get wal”方法恢复备份并且设置了 `
--target-lsn`
时,仅复制到达配置目标所需的 WAL 文件。以前,Barman 会将其存档中的所有 WAL 文件复制到 Postgres。
当使用“no get wal”方法恢复备份并且设置了 `
--target-immediate`
时,仅复制到达一致点所需的 WAL 文件。以前,Barman 会将其存档中的所有 WAL 文件复制到 Postgres。
`
barman-wal-restore`
现在将 WAL 从 spool 目录移动到 `
pg_wal`
而不是复制它们。如果 spool 目录和 `
pg_wal`
目录位于同一分区,则可以提高性能。
`
barman check-backup`
现在在输出和日志中显示备份被标记为 `
FAILED`
的原因。以前,用户要了解备份被标记为 `
FAILED`
的原因,他们需要运行 `
barman show-backup`
命令。
在 `
barman-cloud-backup`
上添加配置选项 `
aws_await_snapshots_timeout`
和相应的 `
--aws-await-snapshots-timeout`
命令行选项。这指定等待快照备份达到完成状态的超时时间(以秒为单位)。
为基于 rsync 的备份添加保持活动机制。以前,Barman 创建的运行 `
pg_backup_start()`
和 `
pg_backup_stop()`
的 Postgres 会话会保持空闲状态,只要基础备份复制需要花费时间。这可能会导致防火墙或路由器因为长时间空闲而断开连接。保持活动机制通过该连接向 Postgres 发送心跳查询,从而降低连接被断开的可能性。心跳之间的间隔可以通过新的配置选项 `
keepalive_interval`
和 `
barman backup`
命令的相应 CLI 选项 `
--keepalive-interval`
来控制。
当使用“no get wal”方法恢复备份并设置了 `
--target-time`
时,复制所有 WAL 文件。以前,Barman 会尝试“猜测”Postgres 需要的 WAL 文件才能达到配置的目标时间。但是,该机制不够强大,因为它基于 Barman 主机中 WAL 文件的统计信息(更具体地说,是创建时间)。例如:如果 Postgres 和 Barman 之间存在归档或流式传输延迟,则这可能足以导致恢复失败,因为 Barman 会因为基于文件统计的薄弱检查而遗漏复制所有需要的 WAL 文件。
在通过 Python 3.6 或更早版本运行 Barman 时,将 `
python-snappy`
固定到 `
0.6.1`
。较新版本的 `
python-snappy`
需要 `
cramjam`
版本 `
2.7.0`
或更高版本,而这些版本仅适用于 Python 3.7 或更高版本。
`
barman receive-wal`
现在在以下情况下以代码 `
1`
而不是 `
0`
退出
由于 `
pg_receivewal`
正在运行,因此无法使用 `
--reset`
标志运行。
由于 `
pg_receivewal`
进程已在运行,因此无法启动该进程。
修复并改进 `
barman diagnose`
输出中有关 Python 的信息
该命令现在确保在通过 `
python_ver`
JSON 键输出 Python 版本时,使用安装 Barman 时所用的同一个 Python 解释器。之前,如果一个环境中有多个 Python 安装和/或虚拟环境,输出结果可能会产生误导,因为它可能从不同的 Python 解释器获取。
在 JSON 输出中添加了一个 `
python_executable`
键。它包含 Barman 正在使用的确切 Python 解释器的路径。
此信息也发布在 Barman 的 NEWS 中。
备份和恢复管理器(Barman)是一个开源的管理工具,用于在业务关键环境中远程备份和灾难恢复 PostgreSQL 服务器。它依赖于 PostgreSQL 强大而可靠的即时点恢复技术,允许 DBA 从一个位置远程管理完整的备份目录和多个远程服务器的恢复阶段。Barman 基于 GNU GPL 3 许可发布,并由 EDB 维护。