MySQL集羣

(一)介紹

原理
MySQL集羣是一個無共享的、分佈式節點架構的存儲方案,其目的是提供容錯性和高性能.是MySQL適合於分佈式計算環境的高可用、高性能版本,它採用了NDB Cluster存儲引擎

MySQL集羣主要包括三個組成部分:管理節點、數據節點、SQL節點
管理節點(MGM):管理MySQL Cluster內的其他節點,提供配置數據,啓動並停止節點、運行備份等
數據節點:保存Cluster的數據
SQL節點:用來訪問Cluster數據的節點
在這裏插入圖片描述
在NDB集羣中這些組件的關係如上所示:所有這些程序一起工作來形成一個NDB集羣.當數據被NDB存儲引擎存儲時,表(和表數據)存儲在數據節點中.這樣的表可以直接從集羣中的所有MySQL服務器(SQL節點)訪問.因此,在一個將數據存儲在集羣中的工資單應用程序中,如果一個應用程序更新了僱員的工資,那麼查詢這些數據的所有其他MySQL服務器都可以立即看到這個變化.

NDB集羣核心概念
NDB CLUSTER(也稱爲NDB)是一個內存存儲引擎,提供高可用的數據持久化功能.
NDB CLUSTER存儲引擎可以配置一系列故障轉移和負載平衡.
集羣節點
集羣節點有三種類型,在最小的NDB集羣配置中,至少會有三個節點.
1. Management node
這種類型節點的作用是管理NDB集羣中的其他節點,執行諸如提供配置數據、啓動和停止節點以及運行備份等功能.因爲這個節點類型管理其他節點的配置,所以應該首先啓動這種類型的節點,在任何其他節點之前.執行ndb_mgmd命令啓動該節點.
2. Data node
這種類型節點的作用是存儲集羣數據.一個副本足以用於數據存儲,但不提供冗餘;因此,建議使用兩個(或更多)副本來提供冗餘,從而獲得高可用性.執行ndbd或ndbmtd(多線程)命令啓動該節點.NDB集羣表通常存儲在內存中,而不是在磁盤上(這就是爲什麼我們將NDB集羣稱爲內存中的數據庫).然而,一些NDB集羣數據可以存儲在磁盤上.
3. SQL node
在NDB Cluster中SQL節點是一個使用NDBCLUSTER存儲引擎的傳統MySQL服務器.期望在生產環境中使用三個節點的設置是不現實的.這樣的配置不提供冗餘;爲了從NDB集羣的高可用性特性中獲益,您必須使用多個數據和SQL節點.還強烈推薦使用多個管理節點

優點和使用場景
1:N個9的高可用性
2:快速的自動失效切換
3:靈活的分佈式體系結構,沒有單點故障
4:高吞吐量和低延遲
5:可擴展性強,支持在線擴容
6:適用於具有非常高的併發需求,對可用性要求較高,或者是數據需要分片的遵守SQL標準的傳統RDBMS系統

##### (二)實驗準備和MySQL軟件安裝
說明

本次實驗模擬MySQL集羣架構,其中使用數據庫爲MySQL集羣版本,此外準備了三個Linux服務器,其中一個用作管理節點,另外兩個服務器既充當了數據節點角色,又充當了SQL節點的角色
MySQL集羣下載和安裝
1:下載地址,文件爲壓縮文件
https://dev.mysql.com/downloads/cluster/

2:檢查防火牆,關閉防護牆

service iptables stop  # 關閉命令
chkconfig iptables off # 永久關閉防火牆
service iptables status   #查看防火牆狀態

3:檢查是否有已安裝MySQL版本,如果有刪除,本次安裝爲集羣版本

yum list installed | grep mysql
yum -y remove XXX

4:上傳文件並解壓到目錄 /usr/local/mysql,注意移動壓縮包解壓后里面文件到mysql目錄下,mysql目錄直接爲數據文件,比如bin等目錄

5:安裝MySQL集羣
scripts/mysql_install_db --user=root

6:註冊服務(賦予執行權限)
cp support-files/mysql.server /etc/rc.d/init.d/mysqld
chmod +x /etc/rc.d/init.d/mysqld

此時已經完成基本配置,另外倆臺服務器相同操作

(三)集羣配置

備註:配置SQL節點和數據節點(倆臺服務器相同配置)
配置SQL和NDB節點
1:複製配置文件
cp /usr/local/mysql/my.cnf /etc/my.cnf
vi /etc/my.cnf

[client]
port=3306
socket=/tmp/mysql.sock

[mysqld]
basedir=/usr/local/mysql/
datadir=/usr/local/mysql/data
user=root
log-error=/var/lib/mysql/mysqld.err

ndbcluster
ndb-connectstring=192.168.0.107

[mysql_cluster]
ndb-connectstring=192.168.0.107

配置解釋:
1:端口
2:basedir根路徑
3:datadir存儲數據
4:user用戶
5:log-error錯誤日誌
6:如果當前節點爲數據節點的話,那麼需要添加ndbcluster,如果是SQL節點的話需要添加mysql_cluster,其中的IP指向管理節點,如果當前服務器既是數據節點又是SQL節點的話,那麼兩個都需要配置.
7:刪除配置文件中最後一行vi /etc/my.cnf

在這裏插入圖片描述
配置管理節點
準備目錄

1:複製ndb文件到bin目錄下
cp /usr/local/mysql/bin/ndb_mgm* /usr/local/bin
2:添加執行權限
cd /usr/local/bin
chmod +x ndb_mgm*

3:在lib目錄下創建目錄,用於存放節點配置文件
cd /var/lib/
mkdir mysql-cluster
cd mysql-cluster/
vi config.ini

4:配置文件添加配置內容如下

[NDBD DEFAULT]
NoOFReplicas=1
DataMemory=500M
IndexMemory=300M

[TCP DEFAULT]
portnumber=2202

[NDB_MGMD]
NodeId=1
hostname=192.168.0.107
datadir=/var/lib/mysql-cluster/

[NDBD]
NodeId=2
hostname=192.168.0.103
datadir=/usr/local/mysql/data/

[NDBD]
NodeId=3
hostname=192.168.0.105
datadir=/usr/local/mysql/data/

[MYSQLD]
NodeId=4
hostname=192.168.0.103

[MYSQLD]
NodeId=5
hostname=192.168.0.105

啓動順序
節點啓動順序爲:管理節點,NDB數據節點,Sql節點
啓動管理節點

cd /usr/local/bin
指定配置文件啓動
ndb_mgmd -f  /var/lib/mysql-cluster/config.ini
查看狀態
ndb_mgm -e show 

在這裏插入圖片描述
查看狀態,其中管理節點已經配置成功,而NDB節點和SQL節點未連接
如果後續添加了新增的節點,再次啓動使用
ndb_mgmd -f /var/lib/mysql-cluster/config.ini -initial

啓動NDB節點

本次實驗中配置倆個NDB節點,因此下面操作需要倆臺服務器都進行對應配置啓動

cp /usr/local/mysql/bin/ndbd /usr/local/bin
cd /usr/local/bin
./ndbd --initial

在這裏插入圖片描述
此時已經啓動了NDB節點,需要到管理節點上進行狀態查看
ndb_mgm -e show
此時查看管理節點,NDB服務已連接,sql節點還未連接

在這裏插入圖片描述
啓動SQL節點
cd /usr/local/bin
service mysqld start
集羣測試
選擇一臺SQL服務器登錄MySQL
cd /usr/local/mysql/bin
mysql -u root -p
密碼空

注意:所有的表必須使用ndb引擎,否則不會同步,即必須遵守以下建表語句
create table TableName (id primary key ,name varchar(20)) engine=ndb

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章