PG_DUMP(1) | PostgreSQL Client Applications | PG_DUMP(1) |
pg_dump - 將一個PostgreSQL資料庫抽出到一個指令碼檔案或者其它歸檔檔案中
pg_dump [ option... ] [ dbname ]
pg_dump 是一個用於備份 PostgreSQL 資料庫的工具。它甚至可以在資料庫正在併發使用的時候進行完整一致的備份。 pg_dump 並不阻塞其它使用者對資料庫的訪問(讀或者寫)。
轉儲格式可以是一個指令碼或者歸檔檔案。
這個指令碼檔案的格式是純文字,它包含許多
SQL 命令, 這些 SQL
命令可以用於重建該資料庫並將之恢復到儲存成指令碼的時候的狀態。
要恢復這些指令碼,使用
psql(1)。
它們甚至可以用於在其它機器甚至是其它硬體體系的機器上重建該資料庫,
透過對指令碼進行一些修改,甚至可以在其它
SQL
資料庫產品上重建該資料庫。
另外,還有候選的歸檔檔案格式可以和
pg_restore(1)
一起使用重建資料庫,
並且它們也允許
pg_restore(1)
對恢復什麼東西進行選擇,
或者甚至是在恢復之前對需要恢復的條目進行重新排序。
歸檔檔案也是設計成可以跨平臺移植的。
如果一種候選檔案格式和
pg_restore(1)
結合,那麼pg_dump就能提供一種靈活的歸檔和傳輸機制。
pg_dump
可以用於備份整個資料庫,
然後就可以使用 pg_restore
檢查這個歸檔和/或選擇要恢復的資料庫部分。
最靈活等輸出檔案格式是
``custom(客戶化)''
格式(-Fc)。
它允許對歸檔元素進行選取和重新排列,
並且預設時是壓縮的。tar
格式(-Ft)不是壓縮的並且我們在裝載等時候不可能重排列,
不過它也很靈活;還有,它可以用其它工具,比如
tar 處理。
在執行 pg_dump
的時候,我們應該檢查輸出,
看看是否有任何警告存在(在標準錯誤上列印),特別是下面列出的限制。
下面的命令列引數用於控制輸出格式。
這個選項只是對純文字格式有意義。對於其它格式,你可以在呼叫
pg_restore
的時候宣告選項。
這個選項只是對純文字格式有意義。對於其它格式,你可以在呼叫
pg_restore
的時候宣告選項。
這個選項只對純文字格式有意義。對於其它格式,你可以在呼叫
pg_restore
的時候宣告該選項。
pg_dump 可以處理來自以前版本的PostgreSQL 的資料庫,但是太老的版本則不被支援了(目前是支援到 7.0)。 如果你需要跨越版本檢查時才使用這個選項( 而且如 pg_dump 失效,別說我沒警告你)。
這個選項只是對純文字格式有意義。對於其它格式,在你呼叫
pg_restore
的時候你可以宣告該選項。
目前,為 --disable-triggers
發出的命令必須用超級使用者來做。
因此,你應該同時用
-S
宣告一個超級使用者名稱,或者最好是用一個超級使用者的身份來啟動這個生成的指令碼。
這個選項只對純文字格式有意義。對於其它格式,你可以在呼叫
pg_restore
的時候宣告這個選項。
下面的命令列引數控制資料庫為聯接引數。
pg_dump 在內部使用 SELECT 語句。如果你執行 pg_dump 時碰到問題,確認你能夠使用象 psql(1) 這樣的程式從資料庫選取資訊。
如果你的資料庫給template1資料庫增加了任何你自己的東西, 那麼請注意把 pg_dump 的輸出恢復到一個真正空的資料庫中; 否則你可能會收到因為重複定義所追加的物件而造成的錯誤資訊。要製作一個沒有任何本地附屬物的資料庫, 可以從template0而不是template1複製,比如:
CREATE DATABASE foo WITH TEMPLATE template0;
pg_dump 有幾個限制:
tar
歸檔的成員的大小限制於
8 GB。(這個限制是 tar
檔案格式的固有限制。)
因此這個格式無法用於那些一個表的大小超過這個尺寸的原文表現。
tar
歸檔和任何其它輸出格式的總大小是不受限制的,只是可能會又作業系統的限制。
恢復完之後,我們建議在每個已恢復的物件上執行
ANALYZE。
這樣最佳化器就可以得到有用的統計。
轉儲一個數據庫:
$ pg_dump mydb > db.out
過載這個資料庫:
$ psql -d database -f db.out
輸出一個叫 mydb 的包含BLOB
的資料庫到一個 tar
檔案:
$ pg_dump -Ft -b mydb > db.tar
把這個資料庫(連同BLOB)一起恢復到一個現有的叫
newdb 的資料庫:
$ pg_restore -d newdb db.tar
pg_dump 工具最早出現在 Postgres95 版本 0.02。 非純文字輸出格式在 PostgreSQL 版本 7.1 時引入。
pg_dumpall(1), pg_restore(1), psql(1)
Postgresql 中文網站 何偉平 <laser@pgsqldb.org>
本頁面中文版由中文
man 手冊頁計劃提供。
中文 man
手冊頁計劃:https://github.com/man-pages-zh/manpages-zh
2003-11-02 | Application |