架設 HA 高可用性:MySQL Cluster 叢集 – 7.4.11(5.6.29)

2016-07-07 MySQL

前陣子架設了一套 MySQL Cluster 叢集的架構,終於在最近補上了實作過程,叢集的概念就是把一台式架構拆分為多台式架構,並且可以提供 HA 高可用性與負載均衡的需求,更不需要擔心延展性的問題,若是 Loading 加大了只需要增加 node 去分擔 Loading

 

MySQL Cluster Nodes:

  • Manage Nodes:負責監控叢集所有 Nodes 的狀態,並且由此控制所有 Nodes 的替換。
  • Data Nodes:負責所有 SQL Data 的 Nodes,單純儲存資料,將資料寫在 RAM & Disk。
  • SQL Nodes:負責 SQL 的 Table schema 和 Client 連接的空間。

 

MySQL Cluster architecture :

MySQL Cluster

 

 

本次 LAB 的實驗架構:

  • Manage Node:172.10.0.140
  • SQL Node1:172.10.0.141
  • SQL Node2:172.10.0.142
  • Data Node1:172.10.0.143
  • Data Node2:172.10.0.144

 

 

MySQL Cluster 實作

所有的 nodes 都需要安裝 mysql-cluster

 

建立 Manage node

NoOfReplicas=2:是 Cluster 非常重要的參數,代表著存在 2 份一樣的資料在 Data node,所以你的 Data node 允許著 1 台的故障容錯還有另一份資料可以正常運行,在本篇因為 Data node 只有 2 台,所以設定 2 就可以了,再多也沒有意義只是增加 write loading

DataMemory & IndexMemory:代表著資料和索引可以儲存的記憶體容量有多大。

NodeId:每一個 nodes 都必須擁有獨一無二的 id 值

 

這邊記錄著所有 nodes 的訊息,才能進行容錯移轉

 

把 ndb_mgm 和 ndb_mgmd 等工具放到 /usr/local/bin 方便使用

 

 

建立 Data node

 

 

建立 SQL node

 

 

啟動 Cluster 環境

啟動順序 Manager node > Data node > SQL node。

如果是第一次啟動 SQL node 請使用 –initial 初始化,如果已經有資料請絕對不要使用 –initial 否則此 node 的資料全毀

 

匯入資料庫(ndbcluster)

cluster 的資料庫類型都必須為 ndbcluster,在匯入資料庫前必須改為 NDBCLUSTER

 

Cluster 確認

從 Manage node 確認所有 node 狀態

 

容錯測試

  • Data node1 中斷,服務正常
  • SQL node1 中斷,服務正常
  • Manage node 中斷,服務正常
  • Data node1 > SQL node1 順序中斷,服務正常
  • Data node1 > SQL node1 > Manage node 順序中斷,服務正常
  • Manage node > Data node1 順序中斷,服務異常
  • Manage node > SQL node1 順序中斷,服務異常

從上面測試可以理解,由於 Manage node 是所有 node 的管理者,一旦管理者掛了又觸發了容錯事件,就會無法處理而造成 cluster 中斷

 

這篇到結尾,如果你要基本的容錯機制可以允許一台故障的話,至少要 3 台才能建立起 MySQL Cluster 架構

  • Node1 (SQL + Data node)
  • Node2 (SQL + Data node)
  • Node3 (Manage node)

必須注意只擁有一台 Manage node 不能與其他的 node 共用,否則會同時觸發 Manage + node 異常而造成無法容錯的狀況。

 

這樣的架構還可以在無限延伸,包含 Manage node 也可以擁有多台進行容錯。

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

彙整

分類

open all | close all

License

訂閱 Mr. 沙先生 的文章

輸入你的 email 用於訂閱