2012-10-16 31 views
41

我對數據庫非常陌生,我沒有在這方面工作過很多。現在我想了解術語數據庫集羣。我搜索了很多並發現了很多有用的鏈接,但我無法理解它們 - 也許是因爲我對數據庫的基本知識很少,而且它們的語言非常狡猾。什麼是PostgreSQL「集羣」,我如何創建一個?

我需要在這些問題上的建議:

  1. 什麼是PostgreSQL數據庫集羣?
  2. 如何在PostgreSQL中創建集羣?
+1

我正在使用Windows 7.i使用PostgreSQL安裝程序的Windows和版本是9.0 –

回答

79

PostgreSQL數據庫「cluster」是一個postmaster和一組補貼進程,全部管理一個包含一個或多個數據庫的共享數據目錄。

PostgreSQL中的術語"cluster"是一個歷史夸克*,和是的"compute cluster"的一般含義,其通常指的是協同工作以實現更高的性能和/或可用性計算機組完全不同。它也與PostgreSQL命令CLUSTER無關,這是關於組織表的。


如果你正在讀這篇文章,你可能實際上是在尋找高可用性,複製或池,信息在這種情況下,你應該閱讀Replication, Clustering and High Availability wiki文章和PostgreSQL的手冊high availability部分,然後看看像repmgr這樣的工具。


當您安裝PostgreSQL時,通常會爲您創建羣集;通常initdb會爲你安裝一個新的羣集。基本或中級用戶需要創建羣集或管理多個羣集是非常不尋常的,所以如果你解釋了爲什麼你想這樣做,而你試圖解決的底層問題是user manual或許可以更好地解釋這一點,因爲它假設你是從源代碼安裝PostgreSQL,而實際上這樣做的人很少。

每個集羣的數據目錄與initdb創建並與同時通過系統服務啓動郵政局長管理(Windows服務,launchdinitupstartsystemd,等這取決於操作系統和版本上),或者直接通過pg_ctl

該集羣內置數據庫template0,template1postgres;其他數據庫由用戶創建。

羣集的postmaster通過偵聽TCP端口接受傳入連接,並將這些連接關閉到工作後端。只有一個postmaster可以在給定的端口上運行,因此每個羣集必須有不同的端口。

我在this previous answer中寫了更多關於PostgreSQL結構的知識。請參閱子標題「關係?架構?呃?」。

如何在Pg中「創建」羣集完全取決於您如何運行它。既然你問了,我懷疑你使用的是使用pg_wrapper的Ubuntu系統,在這種情況下,你會使用pg_wrapper命令,如pg_createcluster


* PostgreSQL中術語一個「簇」,並且術語「集羣」的共同使用之間的混亂是一個令人困惑的,令人遺憾的歷史古怪,在討論的PostgreSQL實例的聚類時尤其如此。你可以擁有一組PostgreSQL集羣,這很痛苦。

+0

謝謝我在Windows7操作系統 –

+15

@SunilKumar祝你好運。我強烈建議你在學習時要做的主要事情是閱讀*整個* PostgreSQL手冊,它會教你大量關於SQL和數據庫的一般信息,而不僅僅是PostgreSQL。隨着'psql'的嘗試,嘗試一些想法和技巧。一旦你學到了更多東西,並且能夠理解更多,你會想要回來再讀一遍。另外,學習愛用'EXPLAIN ANALYZE'命令進行性能調優。您還應該閱讀關於數據庫理論(關係/表格,字段/列,實體,建模,主鍵和外鍵等)的介紹性文章。 –

+4

我不覺得你回答了這個問題:什麼是postgresql集羣?你能否明確解釋它是什麼,而不是停止它不是什麼? – rjurney

相關問題