2017-02-24 73 views
1

例如,如果我有5個服務器(A,B,C,D,E)Postgres-XL可以同時分片,複製和自動平衡嗎?

我們可以設置複製因子爲3的分佈數據嗎? (例如,一個寫入到ABC,其他記錄到ABD,其他記錄到ABE,等等),所以當節點C發生某些硬件故障時,仍然存在一些記錄。

我們是否也可以添加新節點,然後在沒有停機的情況下將存儲的數據平衡到新節點?

回答

3

是的,它可以做到這一點,但不符合你的想法。你所描述的將是NoSQL設置。 Postgres-XL是一個MPP數據庫。

當您創建表時,您將其定義爲「DISTRIBUTED BY」選項,該選項可以是複製,循環,散列,模數等。您需要查看每個選項的詳細信息。您還可以將表空間定義爲在定義的節點上。

你的設置會是這樣的

  • 節點1事務管理
  • 節點2事務管理器的代理
  • 節點3 Coordinator1 &數據節點1
  • 節點4 Coordinator2 &數據節點2
  • 節點5的數據節點3

注意:重要的是要指出,因爲我剛發現Postgres-XL沒有HA或故障轉移支持。這意味着如果單個節點發生故障,數據庫關閉並需要手動干預。如果您在單個節點上丟失完全丟失數據庫的磁盤,則使用循環法,散列和模共享選項更糟糕。

您可以支持對您的每個節點進行鏡像的節點,但這會使您需要的節點數增加一倍,並且仍然不會進行故障轉移。您將不得不手動配置它以使用備用節點並重新啓動它。

+0

如果您使用keepalived和鏡像每個數據節點會怎麼樣? – Greg0ry

+0

是的,正如我所提到的,您可以鏡像設置每個節點的鏡像。這實際上使您需要的服務器數量和成本翻倍,並且管理令人頭疼。 我不認爲保持活動會起作用,因爲至少從我讀取的所有鏡像節點出於性能原因處於只讀配置狀態。此外,這將是每個節點的內部集羣設置的第二個負載均衡步驟,這可能會使事情減慢很多,並添加大量新的故障點。 – BrianC

+0

底線官方文檔說,如果一個節點出現故障,您必須手動將數據庫從配置中刪除失敗的節點,然後添加鏡像節點,然後重新啓動。 您可以試着繞​​過它,但它不會被支持,並且可能仍然會因無法預料的問題而失敗。 如果您需要HA並進行故障切換,則無法使用此選項。 – BrianC