PG_DUMPALL(1)

NAME
pg_dumpall - 抽出一個 PostgreSQL 資料庫叢集到指令碼檔案中

SYNOPSIS

pg_dumpall [ option... ]

DESCRIPTION 描述

pg_dumpall 是一個用於寫出（"轉儲"）一個數據庫集群裡的所有 PostgreSQL 資料庫到一個指令碼檔案的工具。 該指令碼檔案包含可以用於作為 psql(1) 的輸入恢復資料庫的SQL命令。 它通過對資料庫集群裡的每個資料庫呼叫 pg_dump(1) 實現這個功能。 pg_dumpall 還轉儲出所有資料庫公用的全域性物件。 （pg_dump(1) 並不儲存這些物件。） 這些資訊目前包括資料庫使用者和組，以及適用於整個資料庫的訪問許可權。

 因此，pg_dumpall 是備份你的資料庫的一體化解決方案。 但是請注意它的侷限性：它無法轉儲"大物件"，因為 pg_dump 無法把這樣的物件轉儲到純文本檔案中。如果你的資料庫裡有大物件， 那麼你應該使用 pg_dump 的非文本輸出格式之一轉儲它們。

 因為 pg_dumpall 從所有資料庫中讀取表， 所以你很可能需要以資料庫超級使用者的身份聯接，這樣才能生成完整的轉儲。 同樣，你也需要超級使用者的許可權執行儲存下來的指令碼，這些才能增加使用者和組， 以及建立資料庫。

SQL指令碼將寫出到標準輸出。你應該使用合適的 shell 運算子把它重定向到檔案。

pg_dumpall 需要和 PostgreSQL 伺服器連線多次，可能每次都問你口令。這種情況下寫一個 $HOME/.pgpass 可能會比較方便。

OPTIONS 選項

 下列命令列引數用於控制輸出格式：

-a

--data-only
     只轉儲資料，不轉儲模式（資料定義）。

-c

--clean
     包括那些重建之前清理（刪除）資料庫物件的SQL命令。

-d

--inserts
     把資料當作 INSERT 命令輸出（而不是 COPY）。這樣將令恢復過程非常緩慢， 但是會令輸出更容易移植到其他 SQL 資料庫包中。

-D

--column-inserts

--attribute-inserts
     把資料以某種帶著明確欄位名（INSERT INTO table (column, ...) VALUES ...）的 INSERT 命令形式轉儲出來。 這樣會令恢復非常慢，但是如果需要重排欄位順序就是必須的。

-g

--globals-only
     只轉儲全域性物件（使用者和組），而不轉儲資料庫。

-i

--ignore-version
     忽略 pg_dumpall 和資料庫伺服器之間的版本差別。

    pg_dumpall 可以處理來自以前版本的 PostgreSQL 的資料庫，但是太老的資料庫就不再支援了（目前到 7.0）。 如果你需要覆蓋版本檢查，那麼可以使用這個選項（如果 pg_dumpall 失敗了，可別說我們沒警告你。）

-o

--oids
     為每個錶轉儲物件識別符號（OID）。 如果你的應用在某種角度引用了 OID 欄位，那麼使用這個選項 （比如，在外部索引鍵約束裡）。否則，不應該使用這個選項。

-s

--schema-only
     只轉儲模式（資料定義），不轉儲資料。

-v

--verbose
     宣告冗餘模式。這樣將令 pg_dumpall 向標準錯誤列印進度資訊。

-x

--no-privileges

--no-acl
     避免轉儲訪問許可權（授權/撤銷命令）。

 下面的命令列引數控制資料庫連線引數。

-h host
     宣告資料庫伺服器所執行的機器的主機名。 如果數值以斜扛開頭，那麼就把它用做 Unix 域套接字的目錄。 預設是從 PGHOST 環境變數裡拿來的（如果設定了）， 否則使用 Unix 域套接字。

-p port
     宣告伺服器監聽的 TCP 埠號或者 Unix 域套接字檔案擴充套件。 預設是 PGPORT 環境變數（如果設定了）， 或者是編譯時的預設。

-U username
     以給定使用者身分聯接。

-W
     強制口令提示。如果伺服器需要口令認證，那麼這個動作應該自動發生。

ENVIRONMENT 環境

PGHOST

PGPORT

PGUSER
     預設連線引數。

NOTES 注意

 因為 pg_dumpall 內部呼叫 pg_dump，所以，一些診斷資訊 可以參考 pg_dump。

 恢復完之後，我們建議在每個已恢復的物件上執行 ANALYZE。 這樣最佳化器就可以得到有用的統計。 你也可以用 vacuumdb -a -z 清理所有資料庫。

EXAMPLES 例子

 轉儲所有資料庫：

$ pg_dumpall > db.out

 重新載入這個資料庫：

$ psql -f db.out template1

 （在這裡你和哪個資料庫聯接並不重要，因為 pg_dumpall 建立的指令碼檔案將包含合適的命令用於建立和聯接儲存的資料庫。）

SEE ALSO 參見

pg_dump(1). Check there for details on possible error conditions.

譯者
Postgresql 中文網站 何偉平 <laser@pgsqldb.org>

跋
本頁面中文版由中文 man 手冊頁計劃提供。
中文 man 手冊頁計劃：https://github.com/man-pages-zh/manpages-zh