EDB 很高興宣布 Barman 3.11.1 和 3.11.0 版本的發布。
`
barman-cloud-backup-delete`
中的失敗。由於先前版本引入的錯誤,此命令在應用保留策略時會失敗。新增對 Postgres 17+ 增量備份的支援。此主要功能由幾個小變更組成
將 `
--incremental`
命令行選項新增至 `
barman backup`
命令。這用於在進行增量備份時指定父備份。父備份可以是完整備份或另一個增量備份。
新增 `
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`
重新命名為 `
resource_savings`
,位於 `
base_backup_information`
下。
將 `
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 檔案從暫存目錄移動到 `
pg_wal`
,而不是複製它們。如果暫存目錄和 `
pg_wal`
目錄位於同一個分割區,這可以提高效能。
現在 `
barman check-backup`
會在輸出和日誌中顯示備份被標記為 `
FAILED`
的原因。先前,使用者需要執行 `
barman show-backup`
命令才能知道備份被標記為 `
FAILED`
的原因。
在 `
barman-cloud-backup`
中新增配置選項 `
aws_await_snapshots_timeout`
以及對應的 `
--aws-await-snapshots-timeout`
命令列選項。這指定等待快照備份達到完成狀態的逾時時間(秒)。
為基於 rsync 的備份新增了 keep-alive 機制。先前,Barman 為了執行 `
pg_backup_start()`
和 `
pg_backup_stop()`
所建立的 Postgres 會話,會閒置很長時間,直到基本備份複製完成。這可能導致防火牆或路由器因為長時間閒置而中斷連線。keep-alive 機制會透過該連線向 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`
程式已經在執行中,所以無法啟動 `
pg_receivewal`
程式。
修正並改進 `
barman diagnose`
輸出中關於 Python 的資訊
現在,該命令確保在使用 `
python_ver`
JSON 金鑰輸出 Python 版本時,使用與安裝 Barman 時相同的 Python 直譯器。 先前,如果環境有多個 Python 安裝和/或虛擬環境,則輸出最終可能會產生誤導,因為它可能是從不同的 Python 直譯器獲取的。
新增了 `
python_executable`
金鑰到 JSON 輸出。 其中包含 Barman 正在使用的確切 Python 直譯器的路徑。
此資訊也發佈在 Barman 的 NEWS 中。
備份與還原管理器 (Barman) 是一個開放原始碼的管理工具,用於企業關鍵環境中 PostgreSQL 伺服器的遠端備份和災難還原。 它依賴於 PostgreSQL 強大且可靠的 Point-In-Time Recovery 技術,讓 DBA 可以從一個位置遠端管理完整備份目錄,並管理多個遠端伺服器的還原階段。 Barman 根據 GNU GPL 3 發布,並由 EDB 維護。