?
This document uses PHP Chinese website manual Release
pg_dumpall [connection-option...] [option...]
pg_dumpall可以轉(zhuǎn)儲(chǔ)一個(gè)數(shù)據(jù)庫(kù)集群里的所有數(shù)據(jù)庫(kù)到一個(gè)腳本文件。 該腳本文件包含可以用于作為psql輸入的SQL命令,從而恢復(fù)數(shù)據(jù)庫(kù)。 它通過(guò)對(duì)數(shù)據(jù)庫(kù)集群里的每個(gè)數(shù)據(jù)庫(kù)調(diào)用pg_dump實(shí)現(xiàn)這個(gè)功能。 pg_dumpall還轉(zhuǎn)儲(chǔ)出所有數(shù)據(jù)庫(kù)公用的全局對(duì)象。而pg_dump并不保存這些對(duì)象。 這些信息包括數(shù)據(jù)庫(kù)用戶和組,表空間以及屬性如訪問(wèn)權(quán)限,適用于整個(gè)數(shù)據(jù)庫(kù)。
因?yàn)?span id="377j5v51b" class="APPLICATION">pg_dumpall從所有數(shù)據(jù)庫(kù)中讀取表,所以你很可能需要以數(shù)據(jù)庫(kù)超級(jí)用戶的身份連接, 這樣才能生成完整的轉(zhuǎn)儲(chǔ)。同樣,你也需要超級(jí)用戶的權(quán)限執(zhí)行保存下來(lái)的腳本,這些才能增加用戶和組,以及創(chuàng)建數(shù)據(jù)庫(kù)。
SQL 腳本將寫(xiě)出到標(biāo)準(zhǔn)輸出。使用[-f|file]選項(xiàng)或者shell操作符重定向到一個(gè)文件。
pg_dumpall需要和PostgreSQL 服務(wù)器連接多次(每個(gè)數(shù)據(jù)庫(kù)一次)。如果你使用口令認(rèn)證,可能每次都會(huì)詢問(wèn)口令。 這種情況下寫(xiě)一個(gè)~/.pgpass可能會(huì)比較方便。參閱Section 31.14獲取更多信息。
下列命令行參數(shù)用于控制輸出格式。
只轉(zhuǎn)儲(chǔ)數(shù)據(jù),不轉(zhuǎn)儲(chǔ)模式(數(shù)據(jù)定義)。
在轉(zhuǎn)儲(chǔ)結(jié)果中包含那些重建之前清理(drop)數(shù)據(jù)庫(kù)對(duì)象的SQL命令。對(duì)規(guī)則和表空間 的DROP也會(huì)添加進(jìn)來(lái)。
發(fā)送輸出到指定的文件中。如果這被省略,就是用標(biāo)準(zhǔn)輸出。
只轉(zhuǎn)儲(chǔ)全局對(duì)象(角色和表空間),而不轉(zhuǎn)儲(chǔ)數(shù)據(jù)庫(kù)。
現(xiàn)在被忽略的一個(gè)棄用選項(xiàng)。
作為數(shù)據(jù)的一部分,為每個(gè)表都輸出對(duì)象標(biāo)識(shí)(OIDs)。 如果你的應(yīng)用需要OID字段的話(比如在外鍵約束中用到), 那么使用這個(gè)選項(xiàng)。否則,不應(yīng)該使用這個(gè)選項(xiàng)。
不把對(duì)象的所有權(quán)設(shè)置為對(duì)應(yīng)源數(shù)據(jù)庫(kù)。pg_dumpall ALTER OWNER 或SET SESSION AUTHORIZATION語(yǔ)句以設(shè)置創(chuàng)建的數(shù)據(jù)庫(kù)對(duì)象的所有權(quán)。 如果這些腳本將來(lái)沒(méi)有被超級(jí)用戶(或者擁有腳本中全部對(duì)象的用戶)運(yùn)行的話將會(huì)失敗。 -O選項(xiàng)就是為了讓該腳本可以被任何用戶恢復(fù)并且將腳本中對(duì)象的所有權(quán)賦予該選 項(xiàng)指定的用戶。
不要再開(kāi)始轉(zhuǎn)儲(chǔ)時(shí)永遠(yuǎn)等待獲取共享表鎖。相反,如果不能在指定的 timeout內(nèi)鎖住一個(gè)表。timeout可以通過(guò)任何 SET statement_timeout接受的格式指定。允許該數(shù)值按照您正轉(zhuǎn)儲(chǔ)的 服務(wù)器的版本變化,但是一個(gè)整數(shù)的毫秒數(shù)可以被所有7.3以后的版本接受。當(dāng)從7.3以前 的服務(wù)器轉(zhuǎn)儲(chǔ)時(shí),忽略該選項(xiàng)。
Do not output commands to create tablespaces nor select tablespaces for objects. With this option, all objects will be created in whichever tablespace is the default during restore.
只轉(zhuǎn)儲(chǔ)角色,沒(méi)有數(shù)據(jù)庫(kù)和表空間。
只輸出對(duì)象定義(模式),不輸出數(shù)據(jù)。
指定關(guān)閉觸發(fā)器時(shí)需要用到的超級(jí)用戶名。它只有使用了--disable-triggers的時(shí)候才有影響。 一般情況下最好不要輸入這個(gè)參數(shù),而是用超級(jí)用戶啟動(dòng)生成的腳本。
只轉(zhuǎn)儲(chǔ)表空間,沒(méi)有角色和數(shù)據(jù)庫(kù)。
指定冗余模式。這樣將令pg_dumpall輸出詳細(xì)的對(duì)象評(píng)注 以及轉(zhuǎn)儲(chǔ)文件的啟停時(shí)間和進(jìn)度信息到標(biāo)準(zhǔn)錯(cuò)誤上。它將同時(shí)啟用pg_dump的冗余輸出。
輸出pg_dumpall版本并退出。
禁止轉(zhuǎn)儲(chǔ)訪問(wèn)權(quán)限(grant/revoke命令)。
這個(gè)選項(xiàng)是用于就地升級(jí)工具。不建議也不支持用于其他目的。 該選項(xiàng)的性能可能在未來(lái)的版本中會(huì)改變而不會(huì)另行通知。
它像INSERT命令(而不是COPY命令)一樣轉(zhuǎn)儲(chǔ)數(shù)據(jù)。 這將使恢復(fù)非常緩慢;主要用于可以加載到非PostgreSQL 數(shù)據(jù)庫(kù)的轉(zhuǎn)儲(chǔ)。然而,因?yàn)樵撨x項(xiàng)為每一行生成一個(gè)單獨(dú)的命令,重載一行的錯(cuò)誤僅導(dǎo)致 丟失行而不是全部表內(nèi)容。請(qǐng)注意恢復(fù)可能會(huì)完全失敗,若您已重新安排列順序。 --column-inserts選項(xiàng)相對(duì)于列順序變化而言是安全的,盡管慢一些。
它像有顯式列名的INSERT命令一樣轉(zhuǎn)儲(chǔ)數(shù)據(jù)(INSERT INTO table(column, ...) VALUES ...)。這將使恢復(fù)非常緩慢;主要用于可以加載到非PostgreSQL 數(shù)據(jù)庫(kù)的轉(zhuǎn)儲(chǔ)。然而,因?yàn)樵撨x項(xiàng)為每一行生成一個(gè)單獨(dú)的命令,重載一行的錯(cuò)誤僅導(dǎo)致 丟失行而不是全部表內(nèi)容。請(qǐng)注意恢復(fù)可能會(huì)完全失敗,若您已重新安排列順序。 --column-inserts選項(xiàng)相對(duì)于列順序變化而言是安全的,盡管慢一些。
這個(gè)選項(xiàng)關(guān)閉使用美元符界定函數(shù)體。強(qiáng)制它們用SQL標(biāo)準(zhǔn)的字符串語(yǔ)法的引號(hào)包圍。
這個(gè)選項(xiàng)只是和創(chuàng)建僅有數(shù)據(jù)的轉(zhuǎn)儲(chǔ)相關(guān)。它告訴pg_dumpall包含在恢復(fù)數(shù)據(jù)時(shí)臨時(shí)關(guān)閉目標(biāo)表上觸發(fā)器的命令。 如果在表上有參照完整性檢查或者其它觸發(fā)器,而恢復(fù)數(shù)據(jù)的時(shí)候不想重載他們,那么就應(yīng)該使用這個(gè)選項(xiàng)。
目前,為--disable-triggers發(fā)出的命令必須以超級(jí)用戶來(lái)執(zhí)行。因此,你應(yīng)該同時(shí)用-S聲明一個(gè)超級(jí)用戶名,或者最好是用一個(gè)超級(jí)用戶的身份來(lái)啟動(dòng)這個(gè)生成的腳本。
輸出符合SQL標(biāo)準(zhǔn)的SET SESSION AUTHORIZATION命令而不是ALTER OWNER命令。這樣令轉(zhuǎn)儲(chǔ)更加符合標(biāo)準(zhǔn),但是如果轉(zhuǎn)儲(chǔ)文件中的對(duì)象的歷史有些問(wèn)題,那么可能不能正確恢復(fù)。
顯示關(guān)于pg_dumpall幫助并退出。命令行參數(shù)的
下面的命令行參數(shù)控制數(shù)據(jù)庫(kù)的連接參數(shù)。
指定運(yùn)行服務(wù)器的主機(jī)名。如果數(shù)值以斜杠開(kāi)頭,則被用作到Unix域套接字的路徑。 缺省從PGHOST環(huán)境變量中獲取(如果設(shè)置了的話),否則,嘗試一個(gè)Unix域套接字連接。
聲明連接到轉(zhuǎn)儲(chǔ)全局對(duì)象的數(shù)據(jù)庫(kù)名稱并發(fā)現(xiàn)什么樣的其他數(shù)據(jù)庫(kù)應(yīng)該被轉(zhuǎn)儲(chǔ)。 若未指定,將會(huì)使用postgres數(shù)據(jù)庫(kù),如果不存在,就使用 template1。
指定服務(wù)器正在偵聽(tīng)的TC 端口或本地Unix域套接字文件的擴(kuò)展(描述符)。 缺省使用PGPORT環(huán)境變量(如果設(shè)置了的話),否則,編譯時(shí)的缺省值。
要連接的數(shù)據(jù)庫(kù)名稱。
從不提示密碼。如果服務(wù)器請(qǐng)求密碼身份認(rèn)證并且一個(gè)密碼不能通過(guò)其他方式 (如.pgpass 文件)來(lái)獲得,該鏈接嘗試就會(huì)失敗。該選項(xiàng)在沒(méi)有用戶可以輸入密碼時(shí)對(duì)批量作業(yè)和腳本中是有效的。
強(qiáng)制pg_dumpall在連接到數(shù)據(jù)庫(kù)之前提示密碼。
該選項(xiàng)從來(lái)不是至關(guān)重要的,因?yàn)槿舴?wù)器請(qǐng)求密碼身份認(rèn)證pg_dumpall 將會(huì)自動(dòng)提示一個(gè)密碼。然而,pg_dumpall將浪費(fèi)一個(gè)連接嘗試發(fā)現(xiàn) 服務(wù)器需要一個(gè)密碼。在一些情況下,值得輸入-W來(lái)避免額外的連接嘗試。
請(qǐng)注意密碼提示將會(huì)對(duì)每個(gè)要轉(zhuǎn)儲(chǔ)的數(shù)據(jù)庫(kù)再次發(fā)生。通常,最好設(shè)置一個(gè)~/.pgpass 文件而不是依靠手動(dòng)輸入密碼。
指定一個(gè)用于創(chuàng)建轉(zhuǎn)儲(chǔ)的角色名。該選項(xiàng)會(huì)導(dǎo)致pg_dumpall在連接到數(shù)據(jù)庫(kù)之后發(fā)布一個(gè) SET ROLE rolename命令。 當(dāng)已驗(yàn)證的用戶(通過(guò)-U指定的)缺少pg_dumpall需要的權(quán)限,但是可以切換到 一個(gè)有請(qǐng)求的權(quán)限的角色時(shí),該選項(xiàng)是有效的。一些安裝有一個(gè)反對(duì)作為一個(gè)超級(jí)用戶直接登錄的規(guī)則, 并且使用該選項(xiàng)允許在不違法規(guī)則的情況下轉(zhuǎn)儲(chǔ)。
缺省連接參數(shù)。
該實(shí)用程序,跟大部分其他PostgreSQL實(shí)用程序一樣,也使用libpq支持的 環(huán)境變量。
因?yàn)?span id="377j5v51b" class="APPLICATION">pg_dumpall在內(nèi)部調(diào)用pg_dump,所以, 一些診斷信息可以參考pg_dump。
恢復(fù)完之后,建議在每個(gè)已恢復(fù)的對(duì)象上運(yùn)行ANALYZE。這樣優(yōu)化器就可以得到有用的統(tǒng)計(jì)。 你也可以用vacuumdb -a -z清理所有數(shù)據(jù)庫(kù)。
pg_dumpall要求所有需要的表空間目錄在進(jìn)行恢復(fù)之前就必須存在;否則, 在非標(biāo)準(zhǔn)位置創(chuàng)建數(shù)據(jù)庫(kù)將會(huì)失敗。
轉(zhuǎn)儲(chǔ)所有數(shù)據(jù)庫(kù):
$ pg_dumpall > db.out
To reload database(s) from this file, you can use: 從這個(gè)文件里恢復(fù)數(shù)據(jù)庫(kù),你可以用:
$ psql -f db.out postgres
(執(zhí)行這個(gè)命令的時(shí)候連接到哪個(gè)數(shù)據(jù)庫(kù)無(wú)關(guān)緊要,因?yàn)?span id="377j5v51b" class="APPLICATION">pg_dumpall 創(chuàng)建的腳本將會(huì)包含恰當(dāng)?shù)膭?chuàng)建和連接數(shù)據(jù)庫(kù)的命令。)
查閱pg_dump獲取關(guān)于可能的錯(cuò)誤情況的詳細(xì)信息。