MySQL Cluster學習筆記-1

 Tue, 14 Feb 2006 09:51:12 +0800

早期的MySQL沒有內建的Cluster機制,通常要建立一個可以redundant的mysql資料庫伺服器,主要是用他的資料複製機制。mysql可以設定一個master跟數個slave伺服器,然後設定好在master發生資料寫入的時候,同步將資料寫入slave伺服器。

MySQL Cluster的架構,主要是應用一個新的storage engine,叫做NDB。利用這個技術,可以將mysql所需要做的事情分散到三種伺服器節點上,分別是管理節點(Management (MGM) nodes)、查詢節點(SQL (MySQL server) nodes)、與資料節點(Data nodes)。

不同種的節點必須位於不同的主機上,這樣可以保證分享資源所會有的干擾。

management nodes負責存放伺服器設定、啟動/停止節點、管理網路分割、建立與回復備份資料等等。

每個資料表都會被分割成數個部份(fragment),存放在不同的data nodes中,以提供mysql伺服器load balancing的能力。每個fragment,都會在其他data nodes中存放有備份,以提供mysql伺服器 redundancy能力。

實際負責對外的,則是查詢節點。一般的sql查詢都是針對查詢節點來做的。在mysql cluster中,使用者會用到的,只有查詢節點。查詢節點其實就是一般的mysql伺服器,只是使用了 ndb這個storage engine。

在使用management nodes來啟動mysql cluster之後,就不需要使用到management nodes了,這個時候management node可以關掉。所以一個運作中的mysql cluster,至少需要用到兩個主機。但是如果需要能做到load balancing以及reduncancy(or failover),就至少需要用到三台主機。