mysql叢集是一個無共享的(shared-nothing)、分布式節點架構的存儲方案,其目的是提供容錯性和高性能。
資料更新使用讀已送出隔離級别(read-committedisolation)來保證所有節點資料的一緻性,使用兩階段送出機制(two-phasedcommit)保證所有節點都有相同的資料(如果任何一個寫操作失敗,則更新失敗)。
無共享的對等節點使得某台伺服器上的更新操作在其他伺服器上立即可見。傳播更新使用一種複雜的通信機制,這一機制專用來提供跨網絡的高吞吐量。
通過多個mysql伺服器配置設定負載,進而最大程式地達到高性能,通過在不同位置存儲資料保證高可用性和備援。
應用程式層:負責與mysql伺服器通信的各種應用程式。
mysql伺服器層:處理sql指令,并與ndb存儲引擎通信和mysql伺服器。
ndb叢集元件層:ndb叢集元件有時也稱資料節點,負責處理查詢,然後将結果傳回給mysql伺服器。
其中mysql資料庫叢集主要包括如下三部分:
1) sql節點(sql node - 下圖對應為 mysqld):分布式資料庫。包括自身資料和查詢中心結點資料
2) 資料節點(data node - ndbd):叢集共享資料(記憶體中)
3) 管理伺服器(management server - ndb_mgmd):管理叢集 sql node,data node
拓撲結構圖如下所示:
二、環境說明
1、系統環境
伺服器
角色
說明
192.168.3.115
管理伺服器
系統:centos 6.2 64位
192.168.3.116
資料節點、sql節點
92.168.3.117
注:主要是為了學習mysql叢集的環境搭建,加上資源有限,故将資料節點和sql節點安裝在一起。
2、軟體環境
mysql叢集版本:
注:依據系統,在mysql官網自行下載下傳。
三、搭建叢集(linux環境)
1、安裝叢集版本
a、準備工作
不管是management server,還是data node、sql node,都需要先安裝mysql叢集版本,然後根據不用的配置來決定目前伺服器有哪幾個角色。
安裝之前準備好mysql使用者和mysql使用者組,
相關指令:
為了友善測試,确定相關機器的防火牆已關閉(或者設定防火牆這幾台機器之間的網絡連接配接是暢通無阻的),
b、安裝叢集版本
1.上傳安裝包至/usr/local目錄下,并解壓
2.重命名檔案夾
3.授權
4.切換mysql使用者
5.安裝mysql
注:所有伺服器上都需要執行上述操作來安裝mysql叢集版本。
2、叢集配置
a、管理節點
1.root使用者下,建立目錄和配置檔案
config.ini配置資訊如下:
2.授權
3.切換使用者
4.啟動管理服務
注:指令行中的ndb_mgmd是mysql cluster的管理伺服器,後面的-f表示後面的參數是啟動的參數配置檔案。
如果在啟動後過了幾天又添加了一個資料節點,這時修改了配置檔案啟動時就必須加上--initial參數,不然添加的節點不會作用在mysql cluster中。
b、資料節點
1.編輯/etc/my.cnf檔案
2.切換使用者
3.啟動資料節點服務
注:第一次啟動需要加參數:–initial,以後就不用加了,直接運作: /usr/local/mysql/bin/ndbd
c、sql節點
1.編輯/etc/my.cnf檔案(資料節點和sql節點在統一伺服器時可省略)
2.複制mysqld到系統服務裡面去
4.啟動資料節點服務
d、完成效果
四、常用指令與問題整理
1) ndb_mgmd管理指令:/usr/local/mysql/bin/ndb_mgm 執行之後就是管理控制台了,裡面可以繼續輸入指令。(具體指令可以使用help檢視)
2) 停止叢集伺服器的指令:/usr/local/mysql/bin/ndb_mgm -e shutdown
3) 停止sql節點的指令:/usr/local/mysql/bin/mysqladmin -uroot shutdown
4)使用需要注意如下兩點: