天天看點

MySQL叢集節點、節點組、資料副本、以及分區

MySQL叢集節點、節點組、資料副本、以及分區

本文僅為官方檔案之翻譯

這個部分讨論MySQL叢集劃分和備援資料的手段。

下面幾段内容的話題集中讨論了這個問題。

(資料)節點。是一個ndbd程序,存儲着一個資料副本,也是一個指到節點組中節點的分區的拷貝(下面會提到)。

每個資料節點應該部署在獨立的計算機上。雖然也可以在一個機器上跑多個資料節點,但是這個不被推薦。

提到ndbd程序時,節點和資料節點有相同的意義。但是管理節點和查詢節點應該是要準确叙述的。

節點組。一個節點組包含一個或者數個節點,分區,或者副本。

節點組的數量在MySQL叢集中不能被直接指定;它是資料節點數量和副本數量(NoOfReplicas參數)的一種功能性的反映。如下所示:[number_of_node_groups] = number_of_data_nodes/ NoOfReplicas

是以,一個4個節點的MySQL叢集如果NoOfReplicas被設定為1那麼就有4個節點組,2個節點組當NoOfReplicas為2,1個節點組如果NoOfReplicas為4。資料副本将在随後講到。

注意:所有節點組在MySQL叢集中都有相同數量的資料節點。

你也線上可以添加新的節點組。

分區。這是一個叢集分區存貯的機制。一個叢集中有多少個節點這個叢集就有多少個分區。每個節點都負責至少一個指定給它的分區的拷貝(也就是一個資料副本)。

一個分區是完全屬于一個節點的;一個節點可以存貯數個資料副本。

NDB和使用者自定義分區。一般來說MySQL會自行進行資料分區,但是使用者也是可以自行定義資料分區的。但是要遵循如下的主題:

1 隻有資料庫的鍵和線性鍵可以在生産環境中做分區。

2 使用ndbd的時候,最大分區的數量是嚴格遵守如下公式的:8 * [number of node groups]

副本。一個分區的拷貝。每個節點組中的節點都儲存着一個資料副本。有時候也叫做分區副本。副本的數量與每個節點組中節點的數量相同。

下圖展示了4節點MySQL叢集,有兩個節點組,每個組兩個節點。節點1 和 2 屬于組0,3和4屬于組1.

注意:

這裡隻展示了資料節點;一個可以工作的叢集需要ndb_mgm程序以及SQL節點。

MySQL叢集節點、節點組、資料副本、以及分區

叢集存儲的資料被分為了4個區,編号0,1,2,3。每個分區都在同一個節點組裡面有多個拷貝。分區被存儲在可替換的節點裡,以如下的方式:

分區0存儲在節點組0裡面;主副本在節點1,一個後備副本在節點2裡面。

分區1存儲在節點組1裡面;主副本在節點3,一個後備副本在節點4裡面。與分區0的順序相反。

分區2存儲在節點組0裡面;主副本在節點2,一個後備副本在節點1裡面。

分區3存儲在節點組1裡面;主副本在節點4,一個後備副本在節點3裡面。與分區2的順序相反。

這樣設計的好處是,隻要節點組裡面還有一個節點在工作,那麼叢集就可以擁有一個完備的資料的拷貝可用。下個圖将展示這個内容。

MySQL叢集節點、節點組、資料副本、以及分區

在這個例子中,叢集有兩個節點組,每個節點組有兩個節點,隻要每個節點組裡面至少有一個節點在工作,那麼就可以保證叢集是活的。然而,要是節點組裡面的所有節點都失敗了,那麼叢集将失去一個完整的分區,那麼叢集也不能為用戶端提供完備的資料通路了。

繼續閱讀