2013-08-02 123 views
9

那麼集羣背後的想法是什麼?虛擬機的Mysql集羣

  1. 您有多臺機器,其中有相同的數據庫副本,您在哪裏傳播讀/寫?它是否正確?

  2. 此意見是如何工作的?當我進行選擇查詢時,羣集會分析哪些服務器讀/寫較少並將查詢指向該服務器?

  3. 當你應該開始使用集羣時,我知道這是一個棘手的問題,但是有人可以給我一個例子,例如100萬次訪問和1億行DB。

回答

9

1)Correct。每個數據節點都不包含集羣數據的完整副本,但每個數據位至少存儲在兩個節點上。

2)Essentially correct。 MySQL羣集支持分佈式事務。

3)當垂直縮放是不可能的了,和複製變得不切實際:)


作爲承諾,一些推薦的讀數:

+0

謝謝,你在第3點上究竟是怎麼說的:「複製變得不切實際」,你能舉個例子嗎? – Uffo

+0

您是在詢問複製何時變得不切實際,或者完全關於複製?水平縮放可以通過負載平衡器後面的[循環複製](http://dev.mysql.com/doc/refman/5.6/en/mysql-cluster-replication-multi-master.html)來實現。但是當你開始實施這些事情時,你應該問自己實施一個集羣。 – RandomSeed

+0

[This answer](http://stackoverflow.com/a/5326403/1446005)可能也是你感興趣的。 – RandomSeed

2

1->你的第一點是正確的方式。但我想如果多臺機器共享相同的數據,它將是複製,而不是集羣。 在聚類中,數據在不同的機器之間進行劃分,並且存在水平劃分意味着數據的劃分基於行,記錄通過使用這些機器之間的一些算法劃分。

數據的分割是這樣完成的,即每個記錄都會得到一個唯一的鍵值,就像鍵值對一樣,並且每個機器也有一個唯一的machine_id相關的值,用於定義哪個鍵值對會去哪臺機器。

我們稱每臺機器爲一個集羣,每個集羣包含一個單獨的mysql服務器,單個數據和一個集羣管理器,並且所有集羣節點之間都有數據共享,以便所有數據都可用節點在任何時候。

檢索數據是通過memcached設備/服務器完成的,以便快速檢索,並且還有一個用於特定羣集的複製服務器來保存數據。

2-是的,有可能是因爲在所有羣集節點之間共享所有數據。也可以使用負載平衡器來平衡負載。但負載平衡器的想法很平常,因爲它們被大多數服務器使用。但如果您只是爲了您的知識而嘗試,那麼就沒有必要,因爲您不會注意到負載平衡器需求的負載類型,因此集羣管理器本身可以完成整個任務。

3-> RandomSeed是正確的。當您的複製變得不切實際時,您確實感到需要集羣,這意味着如果您正在使用主服務器進行寫入操作,從服務器進行讀取操作,然後在流量變得巨大時導致服務器無法順利運行,那麼您將感受到集羣的需要。只是爲了加快整個過程。 這不是唯一的情況,這只是其中一種情況,這僅僅是一種情況。

希望這對你有幫助!

+0

謝謝您的時間,偉大的信息! – Uffo