PG_DUMPALL(1) | PostgreSQL Client Applications | PG_DUMPALL(1) |
pg_dumpall - 抽出一個 PostgreSQL 資料庫叢集到指令碼檔案中
pg_dumpall [ option... ]
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 可能會比較方便。
下列命令列引數用於控制輸出格式:
pg_dumpall 可以處理來自以前版本的 PostgreSQL 的資料庫,但是太老的資料庫就不再支援了(目前到 7.0)。 如果你需要覆蓋版本檢查,那麼可以使用這個選項(如果 pg_dumpall 失敗了,可別說我們沒警告你。)
下面的命令列引數控制資料庫連線引數。
因為 pg_dumpall 內部呼叫 pg_dump,所以,一些診斷資訊 可以參考 pg_dump。
恢復完之後,我們建議在每個已恢復的物件上執行
ANALYZE。
這樣最佳化器就可以得到有用的統計。
你也可以用 vacuumdb -a -z
清理所有資料庫。
轉儲所有資料庫:
$ pg_dumpall > db.out
重新載入這個資料庫:
$ psql -f db.out template1
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
2003-11-02 | Application |