Mysql Cluster (一)

來源:互聯網
上載者:User

之前也聽過人人網曾使用過代替普通MC緩衝的方案,然後自己看了下相關的文檔,這裡記錄一下。

 

MysqlCluster主要分為三個核心部分:cluster manager 、  sql node 、 ndb node

cluster manager : 類似一個管理節點,負責管理sql node 和 ndb node , 同時也會儲存中繼資料資訊,這個對高可用要求不高,掛了不影響服務.

sql node : 其實就是一個裝了NDB engine 的Mysql Server,負責提供服務,但是不做資料存放區。

ndb node : 主要做資料存放區用,預設全記憶體的,也可以指定為磁碟的檔案,也叫做data node。

安全配置就不說了,網上很多,文檔也有介紹。

 

HA , 高可用:

ndb node 有group 的概念,比如有兩個ndb node : node1 , node2 。這兩個做一個group , 那麼這個group 會存兩份資料,這樣有一份壞掉,資料的完整性也能保證,如果有四個節點,可以做兩個group , group 之間做資料分區,group 之內做資料冗餘,目前一台機器只能啟一個ndb node .一個Group之間的Node也有主和從的概念,只能有一個主,主掛了會從從節點中選主。

sql node 的高可用官方就是啟動多個sql node ,但是我覺得這樣沒啥用,因為程式只能連一個sql node ,前端可以做LVS或者用keepalive,對多個SQLNode做高可用。

mysql cluster 最大的優點就是可以動態增加節點,因為資料是存記憶體的,所以加節點就類似於擴容,加節點需要一台一台的重啟ndb manager 、 sql node  、ndb node,因為資料有多份,所以可以做到線上的變更,當節點加入叢集,資料需要重新分配,這個也是線上的。

mysql cluster 也能做到備份和恢複,類似於在每個資料節點上做一個快照,每個資料節點目錄下都會有一份備份檔案,恢複也靠這個恢複。

mysql cluster 也是能支援事務的,也有自己的redo 和undo , redo統一存在磁碟,Undo則是看情況,記憶體表在記憶體,磁碟表在磁碟。

Mysql cluster 之間也能做複製,就是說兩個叢集之間也能做複製,有個前提:binlog 格式必須是ROW Based,寫binlog是有一個injector thread來完成的,為什麼不同MysqlServer來寫Binlog呢?因為如果是MysqlServer寫Binlog,如果程式直接通過NDB的API操作資料Binlog就會少很多,所以又新啟了一個線程。

Mysql cluster 資料切分,Mysql cluster 預設的切分方法是根據主鍵做Hash,如果沒主鍵則用唯一建,如果連唯一建都沒有則採用Innodb的Rowid。

 

至於效能倒是沒測試,資料全存記憶體應該不會差。mysql cluster算是目前Mysql主推的一個產品,但是貌似大家對這種全記憶體的方案不是太感冒,應用到生產環境還需要更多的嘗試和測試。

 

 

 

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.