我有一個虛擬的虛擬機無法使用舊的postgresql數據庫(用於運行PostgreSQL 8.4)進行引導。我可以訪問文件系統(和pg_data目錄)。從pg_data目錄恢復Postgres數據庫
如何從這個數據目錄中提取數據(或恢復數據庫)?
是否像將此目錄的內容複製到工作的8.4 pg_data目錄一樣簡單?
我有一個虛擬的虛擬機無法使用舊的postgresql數據庫(用於運行PostgreSQL 8.4)進行引導。我可以訪問文件系統(和pg_data目錄)。從pg_data目錄恢復Postgres數據庫
如何從這個數據目錄中提取數據(或恢復數據庫)?
是否像將此目錄的內容複製到工作的8.4 pg_data目錄一樣簡單?
其實它基本上就是這麼簡單。以下是我採取的步驟:
1)將data
目錄(/var/lib/postgres/8.4/data)歸檔爲tar.gz文件。
2)將文件移動到工作工作站(我的桌面,運行Linux的基於Debian的發行)
3)安裝PostgreSQL的APT倉庫並安裝postgresql-8.4
(或版本,這是破服務器上)使用在the PostgreSQL Linux downloads for Ubuntu找到的說明。
4)將tar.gz文件的內容提取到「新」PostgreSQL 8.4安裝(/var/lib/postgresql/8.4/main/)的主目錄中。
5)修改postgresql.conf
將port = 5432
更改爲port = 5433
。這允許我們使用端口號來控制我們連接到哪個版本的PostgreSQL(假設我們的工作站上有最新的穩定版本,比如9.1)。所以9.1將留在默認的5432,和8.4將在5433.
6)修改所提取的數據目錄,這樣的Postgres的所有權是業主:chown -R postgres:postgres /var/lib/postgresql/8.4/main/*
7)啓動Postgres服務:service postgresql start
(你會看到兩個版本啓動)
8)su
對於Postgres和使用端口5433連接,那是舊服務器上的數據庫名稱:psql -p 5433 DatabaseName