2012-07-19 87 views
2

我想在Ubuntu上使用PostgreSQL。我安裝了它,一切工作正常。但是,由於空間限制,我需要更改數據庫的位置,所以我嘗試了一個在線指南來執行此操作。Postgresql未能啓動

我開始停止PostgreSQL中,創建一個新的空目錄,並通過使用

chown postgres:postgres /my/dir/path 

細工作太給它的權限。然後我用

initdb -D /my/dir/path 

啓用我的數據庫。我還將postgresql.conf文件中的path_data更改爲我的新目錄。

當我現在嘗試啓動數據庫時,它說:The postgresql server failed to start, please check the log file。但是,沒有日誌文件!當我更改默認目錄時,有些東西搞砸了。我該如何解決?

+1

嘗試/ var/log/messages – bos 2012-07-19 14:06:02

+0

請包括Ubuntu和PostgreSQL版本等基本信息以及任何錯誤消息的確切文本。 – 2012-07-20 02:21:13

+0

你對這個問題的回答很差,因爲它缺少最小合理的信息量。 「在線指南」?哪一個。鏈接到它。當你說你編輯'postgresql.conf'時 - 那個文件在哪裏? '/ etc/postgresql /'?你的數據庫?當你「嘗試啓動數據庫」 - 使用*哪個確切的命令*?顯示錯誤消息和確切的命令。詳細和具體。 – 2012-07-23 13:37:55

回答

4

第一:您可能會發現更容易地管理您的PG使用自定義工具Ubuntu中的pg_wrapper部分在Ubuntu上安裝:pg_dropclusterpg_ctlclusterpg_createcluster,等等。這些整合與Ubuntu的啓動腳本和移動配置/etc/postgresql/哪裏Ubuntu喜歡保留它,而不是數據庫中的PostgreSQL默認值。要移動存儲實際文件的位置,請使用符號鏈接(請參閱下文)。

當您遇到問題時,您如何啓動PostgreSQL?

如果您通過pg_ctl啓動它,它應該可以正常工作,因爲您必須指定數據目錄位置。但是,如果您正在使用發行版軟件包腳本,他們不知道您已移動數據目錄。

在Ubuntu上,您需要更改/etc/postgresql中的配置,以告知腳本數據目錄的位置,可能爲pg_ctl.confstart.conf以獲取適當的版本。我不確定具體情況,因爲我從來不需要這樣做。這就是爲什麼:

雖然有更好的方法。使用從舊數據庫位置到新數據庫位置的符號鏈接。 PostgreSQL和安裝腳本會很高興地遵循它,你不需要改變任何配置。

cd /var/lib/postgresql/9.1/main 
mv main main.old 
ln -s /new/datadir/location main 

我猜「9.1」,因爲你沒有給你的Ubuntu版本或你的PostgreSQL版本。

另一種方法是使用mount -o bind將新的datadir位置映射到舊的位置,所以沒有任何注意到它們的差異。然後將綁定安裝添加到/etc/fstab以使其在重新啓動時保持不變。如果其中一種工具不喜歡符號鏈接方法,則只需要這樣做。我認爲這不是pg_wrapper等問題。

您還應該注意,由於您已經手動使用了initdb,因此您的新datadir將直接在datadir內部進行配置,而不是/etc/postgresql/

如果您只是使用Ubuntu集羣管理腳本,它會更容易。