2025年9月25日: PostgreSQL 18 釋出!
支援的版本:當前 (18) / 17 / 16 / 15 / 14 / 13
開發版本:devel
不支援的版本:12

pg_checksums

pg_checksums — 在 PostgreSQL 資料庫叢集中啟用、停用或檢查資料校驗和

概要

pg_checksums [選項...] [[ -D | --pgdata ]資料目錄]

描述

pg_checksums 檢查、啟用或停用 PostgreSQL 叢集中的資料校驗和。在執行 pg_checksums 之前,伺服器必須已乾淨關閉。在驗證校驗和時,如果沒有校驗和錯誤,退出狀態為零;如果檢測到一個或多個校驗和失敗,退出狀態為非零。在啟用或停用校驗和時,如果操作失敗,退出狀態為非零。

在驗證校驗和時,將掃描叢集中的每個檔案。在啟用校驗和時,將就地重寫每個校驗和已更改的關聯檔案塊。停用校驗和僅更新 pg_control 檔案。

選項

以下命令列選項可用

-D directory
--pgdata=directory

指定資料庫叢集儲存的目錄。

-c
--check

檢查校驗和。如果未指定其他選項,則為預設模式。

-d
--disable

停用校驗和。

-e
--enable

啟用校驗和。

-f 檔案節點
--filenode=檔案節點

僅驗證檔案節點為 檔案節點 的關聯的校驗和。

-N
--no-sync

預設情況下,pg_checksums 會等待所有檔案安全寫入磁碟。此選項會導致 pg_checksums 在不等待的情況下返回,這樣更快,但這意味著後續的作業系統崩潰可能會導致更新的資料目錄損壞。通常,此選項對於測試很有用,但不應在生產環境中安裝時使用。使用 --check 時,此選項無效。

-P
--progress

啟用進度報告。啟用此選項後,將在檢查或啟用校驗和時提供進度報告。

--sync-method=method

設定為 fsync(這是預設設定)時,pg_checksums 將遞迴地開啟並同步資料目錄中的所有檔案。檔案搜尋將遵循 WAL 目錄和每個配置的表空間的符號連結。

在 Linux 上,還可以使用 syncfs 來要求作業系統同步包含資料目錄、WAL 檔案和每個表空間的整個檔案系統。有關使用 syncfs 時需要注意的注意事項,請參閱 recovery_init_sync_method

當使用 --no-sync 時,此選項無效。

-v
--verbose

啟用詳細輸出。列出所有已檢查的檔案。

-V
--version

列印 pg_checksums 版本並退出。

-?
--help

顯示關於 pg_checksums 命令列引數的幫助,然後退出。

環境變數

PGDATA

指定資料庫叢集儲存的目錄;可以使用 -D 選項覆蓋。

PG_COLOR

指定是否在診斷訊息中使用顏色。可能的值為 alwaysautonever

註釋

在大型叢集中啟用校驗和可能會花費很長時間。在此操作期間,叢集或其他寫入資料目錄的程式不得啟動,否則可能會發生資料丟失。

當使用執行關聯檔案塊直接複製的工具(例如 pg_rewind)的複製設定時,啟用或停用校驗和可能會導致頁面損壞(表現為不正確的校驗和),如果操作在所有節點上不一致。因此,在複製設定中啟用或停用校驗和時,建議在所有叢集切換之前停止所有叢集。銷燬所有備用伺服器,在主伺服器上執行操作,然後從頭開始重新建立備用伺服器也是安全的。

如果在啟用或停用校驗和時 pg_checksums 被中止或殺死,叢集的資料校驗和配置將保持不變,並且可以重新執行 pg_checksums 來執行相同的操作。

提交更正

如果您在文件中發現任何不正確、與您對特定功能的體驗不符或需要進一步說明的內容,請使用 此表格 報告文件問題。