?
Ce document utilise Manuel du site Web PHP chinois Libérer
假設安裝路徑是/usr/local/pgsql庫下,并且data路徑是/usr/local/pgsql/data。 可以根據(jù)自己的安裝路徑進行相應替換。
每個PostgreSQL主要版本的內(nèi)部數(shù)據(jù)存儲格式通常會發(fā)生改變。 因此,如果你正在升級一個版本號不像"9.0.x"這樣的系統(tǒng), 你就必須按照這里說的方法備份和恢復你的數(shù)據(jù)。 如果您正在從PostgreSQL "9.0.x"升級,那么新版本可以使用當前 數(shù)據(jù)文件,應該跳過備份和恢復下面的步驟(因為不必要)。
如果正在備份,確保你的數(shù)據(jù)庫沒有更新。 雖然即使有數(shù)據(jù)更新也不會影響備份的完整性,但是很明顯更新的數(shù)據(jù)會被排除在備份之外 如果有必要, 可以編輯/usr/local/pgsql/data/pg_hba.conf(或等效的)文件中的權限以禁止除你之外的所有人訪問。
備份出數(shù)據(jù)庫的安裝,輸入:
pg_dumpall > outputfile
如果你需要保留OID(比如說當你用到它們做外鍵時), 那么帶-o選項運行pg_dumpall。
要做一個備份,你可以使用當前正在運行版本的pg_dumpall命令。 不過,最好使用來自PostgreSQL 9.0.4的pg_dumpall命令, 因為這個版本包含對老版本的錯誤修補以及改進。 雖然這個建議看起來好像很愚蠢,因為你還沒有安裝新版本, 但如果你準備安裝新版本,我們還是建議你遵循這個建議。 這個時候你可以按照平常那樣完成安裝,然后再轉(zhuǎn)換數(shù)據(jù)。 這樣將降低中斷時間。
關閉舊的數(shù)據(jù)庫服務器:
pg_ctl stop
在那些在開機時就啟動PostgreSQL的系統(tǒng)上, 可能已經(jīng)有一個啟動文件可以完成這件事。 例如,在一臺Red Hat Linux系統(tǒng)上我們可以使用:
/etc/rc.d/init.d/postgresql stop
如果從備份,重命名或刪除舊的安裝 目錄中恢復。重命名目錄而不是刪除它是一條好主意,以便你碰到麻煩后還能退回去。 記住目錄可能會占用大量的磁盤空間。用這樣的命令來重命名目錄:
mv /usr/local/pgsql /usr/local/pgsql.old
安裝PostgreSQL的新版本,參閱 Section 15.5.。
如果需要,創(chuàng)建一個新的數(shù)據(jù)庫集。要記住你必須用特殊的數(shù)據(jù)庫用戶登錄后才能執(zhí)行這些命令(如果你是升級的話這個帳戶應該已經(jīng)存在了)。
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
恢復先前的pg_hba.conf和任何postgresql.conf修改。
啟動數(shù)據(jù)庫服務器,再使用特定的數(shù)據(jù)庫用戶帳戶:
/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
最后,從備份恢復您的數(shù)據(jù):
/usr/local/pgsql/bin/psql -d postgres -f outputfile
使用new psql。
更多內(nèi)容在 Section 24.4,里, 包括當新安裝被安裝時如何繼續(xù)運行以前的安裝的說明。