
本文主要給大家介紹如何實現Mysql Cluster 的環(huán)境搭建,希望可以給大家補充和更新些知識,如有其它問題需要了解的可以持續(xù)在創(chuàng)新互聯行業(yè)資訊里面關注我的更新文章的。
MySQL Cluster 介紹
MySQL Cluster是一個基于NDB Cluster存儲引擎的完整的分布式數據庫系統(tǒng)。不僅僅具有高可用性,而且可以自動切分數據,冗余數據等高級功能。和Oracle Real Cluster Application不太一樣的是,MySQL Cluster 是一個Share Nothing的架構,各個MySQL Server之間并不共享任何數據,高度可擴展以及高度可用方面的突出表現是其大的特色。
簡單的說,MySQL Cluster 實際上是在無共享存儲設備的情況下實現的一種完全分布式數據庫系統(tǒng),其主要通過 NDB Cluster(簡稱 NDB)存儲引擎來實現。MySQL Cluster 剛剛誕生的時候可以說是一個可以對數據進行持久化的內存數據庫,所有數據和索引都必須裝載在內存中才能夠正常運行,但是現在的MySQL Cluster 版本分為內存表和磁盤表,內存表,所有數據加載到內存中運行,磁盤表僅僅將主鍵,索引字段裝載在內存中,其他字段存放在磁上。
一個 MySQL Cluster 的環(huán)境主要由以下三部分組成:
(1)負責管理各個節(jié)點的 Manage 節(jié)點主機;管理節(jié)點負責整個Cluster集群中各個節(jié)點的管理工作,包括集群的配置,啟動關閉各節(jié)點,對各個節(jié)點進行常規(guī)維護,以及實施數據的備份恢復等。管理節(jié)點會獲取整個Cluster環(huán)境中各節(jié)點的狀態(tài)和錯誤信息,并且將各 Cluster 集群中各個節(jié)點的信息反饋給整個集群中其他的所有節(jié)點。由于管理節(jié)點上保存了整個Cluster 環(huán)境的配置,同時擔任了集群中各節(jié)點的基本溝通工作,所以他必須是最先被啟動的節(jié)點。
(2)Storage 層的 NDB 數據節(jié)點;也就是上面說的NDB Cluster。最初的NDB是一個內存式存儲引擎,當然也會將數據持久化到存儲設備上。但是最新的NDB Cluster存儲引擎已經改進了這一點,可以選擇數據是全部加載到內存中還是僅僅加載索引數據。NDB 節(jié)點主要是實現底層數據存儲功能,來保存Cluster 的數據。每一個Cluster節(jié)點保存完整數據的一個fragment,也就是一個數據分片(或者一份完整的數據,視節(jié)點數目和配置而定),所以只要配置得當,MySQL Cluster在存儲層不會出現單點的問題。一般來說,NDB 節(jié)點被組織成一個一個的NDB Group,一個 NDB Group實際上就是一組存有完全相同的物理數據的NDB節(jié)點群。
上面提到了NDB 各個節(jié)點對數據的組織,可能每個節(jié)點都存有全部的數據也可能只保存一部分數據,主要是受節(jié)點數目和參數來控制的。首先在 MySQL Cluster主配置文件(在管理節(jié)點上面,一般為 config.ini)中,有一個非常重要的參數叫NoOfReplicas,這個參數指定了每一份數據被冗余存儲在不同節(jié)點上面的份數,該參數一般至少應該被設置成2,也只需要設置成2就可以了。因為正常來說,兩個互為冗余的節(jié)點同時出現故障的概率還是非常小的,當然如果機器和內存足夠多的話,也可以繼續(xù)增大來更進一步減小出現故障的概率。此外,一個節(jié)點上面是保存所有的數據還是一部分數據還受到存儲節(jié)點數目的限制。NDB 存儲引擎首先保證NoOfReplicas參數配置的要求來使用存儲節(jié)點,對數據進行冗余,然后再根據節(jié)點數目將數據分段來繼續(xù)使用多余的NDB節(jié)點。分段的數目為節(jié)點總數除以NoOfReplicas 所得。
(3)SQL 層的 SQL 云服務器節(jié)點(后面簡稱為 SQL 節(jié)點);也就是我們常說的MySQL Server。主要負責實現一個數據庫在存儲層之上的所有事情,比如連接管理,Query 優(yōu)化和響應 ,Cache 管理等等,只有存儲層的工作交給了NDB 數據節(jié)點去處理了。也就是說,在純粹的MySQL Cluster 環(huán)境中的SQL 節(jié)點,可以被認為是一個不需要提供任何存儲引擎的MySQL服務器,因為他的存儲引擎有Cluster 環(huán)境中的NDB 節(jié)點來擔任。所以,SQL 層各MySQL服務器的啟動與普通的MySQL Server 啟動也有一定的區(qū)別,必須要添加ndbcluster參數選項才行。我們可以添加在my.cnf配置文件中,也可以通過啟動命令行來指定。
MySQL Cluster 環(huán)境搭建
搭建 MySQL Cluster首先需要至少一個管理節(jié)點主機來實現管理功能,一個SQL節(jié)點主機來實現MySQL server功能和兩個ndb節(jié)點主機實現NDB Cluster的功能。我在這里測試使用雙SQL節(jié)點來搭建測試環(huán)境,具體信息如下:
1、服務器準備
192.168.1.2 管理節(jié)點
192.168.1.3 mysql節(jié)點,ndb節(jié)點
192.168.1.4 mysql節(jié)點,ndb節(jié)點
我這兒把mysq節(jié)點l和ndb數據節(jié)點放在一臺機器上面
2、軟件安裝
測試環(huán)境(3臺服務器均一樣,不是必須的,但ndb節(jié)點最好一樣,不一樣的話,內存要配一樣大,服務器均已關閉iptables,生產環(huán)境請自行開放相關端口)
安裝 MySQL 節(jié)點:
sql節(jié)點1: 192.168.1.3
sql節(jié)點2: 192.168.1.4
下載安裝包:mysql-cluster-gpl-7.6.4-linux-glibc2.12-x86_64.tar.gz ,我這里使用二進制編譯好了的,也可以自己下載源碼包編譯。這里操作一臺SQL節(jié)點服務器,另外一臺SQL節(jié)點服務器也是相同的,都執(zhí)行如下安裝步驟。
wget *.*.*/mysql-cluster-gpl-7.6.4-linux-glibc2.12-x86_64.tar.gz
[root@192.168.1.2 src]# groupadd mysql
[root@192.168.1.2 src]# useradd -r -g mysql mysql
[root@192.168.1.2 src]# tar –zvxf mysql-cluster-gpl-7.6.4-linux-glibc2.12-x86_64.tar.gz
[root@192.168.1.2 src]# mv mysql-cluster-gpl-7.6.4-linux-glibc2.12-x86_64 /usr/local/mysql
[root@192.168.1.2 src]# cd /usr/local/mysql
[root@192.168.1.2 mysql]# chown -R mysql .
[root@192.168.1.2 mysql]# mkdir /data/
[root@192.168.1.2 mysql]# chown -R mysql.mysql /data
[root@192.168.1.2 mysql]# /usr/local/mysql/bin/mysqld –initialize --user=mysql --datadir=/data/ --basedir=/usr/local/mysql
[root@192.168.1.2 mysql]# cp support-files/mysql.server /etc/init.d/mysql
[root@192.168.1.2]# echo "export PATH=$PATH:/usr/local/mysql/bin" >> /root/.bash_profile #添加環(huán)境變量
[root@192.168.1.2 mysql]# source /root/.bash_profile
修改/etc/my.cnf配置文件,追加如下配置
[mysqld]
datadir=/data/
basedir= /usr/local/mysql
ndbcluster # 運行NDB存儲引擎
ndb-connectstring=192.168.1.2 # 管理節(jié)點
[MYSQL_CLUSTER]
ndb-connectstring=192.168.1.2 #管理節(jié)點
NDB節(jié)點安裝(數據節(jié)點)
因為我的數據節(jié)點和SQL節(jié)點在一起,所以就不需要安裝了。如果ndb數據節(jié)點和SQL節(jié)點是分開的,那安裝方法和SQL節(jié)點安裝方法一樣。也是需要配置my.cnf的。
安裝管理節(jié)點
管理節(jié)點所需要的安裝更簡單,實際上只需要 ndb_mgm 和ndb_mgmd兩個程序即可,這兩個可執(zhí)行程序可以在上面的MySQL節(jié)點的MySQL安裝目錄中的bin目錄下面找到。將這兩個程序copy到管理節(jié)點上面合適的位置(自行考慮,我一般會放在/usr/local/mysql/bin下面)并且添加環(huán)境變量就可以了。(另外也可以將ndb_config 、ndb_perror 復制過來,ndb_config -q MaxNoOfAttributes #查看變量修改是否生效;ndb_perror --ndb 2308 2308為錯誤代碼)
1.在/usr/local/創(chuàng)建目錄mysql-cluster,該目錄會存放相關日志文件,以及pid號。并在目錄中創(chuàng)建配置文件config.ini
[root@192.168.1.2 ~]# mkdir /usr/local/mysql-cluster [root@192.168.1.2 ~]# cd /usr/local/mysql-cluster/ [root@192.168.1.2 mysql-cluster]# touch config.ini
2.根據我們上面提供的環(huán)境,config.ini文件配置如下
[tcp default]
SendBufferMemory=2M
ReceiveBufferMemory=2M
[ndbd default]
NoOfReplicas=2 #每個數據節(jié)點的鏡像數量,通常最低設置為2,否則就沒有意義了
DataMemory=3072M #每個數據節(jié)點中給數據分配的內存,
IndexMemory=1024M #每個數據節(jié)點中給索引分配的內存 ,7.6版本中的已經改名了
MaxNoOfOrderedIndexes=4000
MaxNoOfUniqueHashIndexes=4000
MaxNoOfAttributes=4000
MaxNoOfConcurrentOperations=1500000
MaxNoOfLocalOperations=2000000
MaxNoOfConcurrentTransactions=16000
TransactionDeadLockDetectionTimeOut=50000 #這是毫秒單位,相當于50秒
#ODirect=1
MaxNoOfTables=1024
#UndoDataBuffer=64M
#RedoBuffer=64M
#FragmentLogFileSize=512M
NoOfFragmentLogFiles=300
[ndb_mgmd]
NodeId=1
HostName=192.168.1.2 #管理節(jié)點ip
DataDir=/var/lib/mysql-cluster #管理節(jié)點數據目錄,存放相關日志,以及pid文件
[ndbd]
NodeId=2
HostName=192.168.1.3 #數據節(jié)點ip地址
DataDir=/data/ #NDB點數據存放目錄
[ndbd]
NodeId=3
HostName=192.168.1.4 #數據節(jié)點ip地址
DataDir=/data #NDB點數據存放目錄
[mysqld]
NodeId=4
HostName=192.168.1.3 #SQL節(jié)點ip地址
[mysqld]
NodeId=5
HostName=192.168.1.4 #SQL節(jié)點ip地址
[mysqld]
在上面的配置文件中,包括很多的組,組名用"[]"括起來,這里我們最關心的是3類節(jié)點組的配置,分別定義如下
NDB_MGMD] 表示管理節(jié)點的配置,只能有一個。
[NDBD DEFAULT] 表示每個數據節(jié)點的默認配置,在每個節(jié)點的[NDBD]中不用再寫這些選項,只能有一個。
[NDBD] 表示每個數據節(jié)點的配置,可以有多個。
[MYSQLD] 表示SQL節(jié)點的配置,可以有多個,分別寫上不同的SQL節(jié)點的ip地址;也可以不用寫,只保留一個空節(jié)點,表示任意一個ip地址都可以進行訪問。此節(jié)點的個數表明了可以用來連接數據節(jié)點的SQL節(jié)點總數。
每個節(jié)點都有一個獨立的id號,可以填寫,比如nodeid=2,(老版本使用id,新版本已經不使用id標識了)也可以不用填寫,系統(tǒng)會按照配置文件的填寫順序自動分配。
開始使用Cluster
上面我們都已經配置完畢了,下面說明啟動,關閉和使用方法
啟動順序為:管理節(jié)點->數據節(jié)點->SQL節(jié)點(很重要)
(1)啟動管理節(jié)點:
[root@192.168.1.2 ~]# ndb_mgmd -f /usr/local/mysql-cluster/config.ini --initial #第一次啟動加—initial參數,以后修改了config.ini 加—reload MySQL Cluster Management Server mysql-5.7.20 ndb-7.6.4 [root@192.168.0.30 ~]# netstat -ntlp | grep 1186 tcp 0 0 0.0.0.0:1186 0.0.0.0:* LISTEN 1329/ndb_mgmd
(2)啟動NDB(數據節(jié)點)
[root@192.168.1.4 ~]# ndbd --initial 2018-03-30 16:23:46 [ndbd] INFO -- Angel connected to '192.168.1.2:1186' 2018-03-30 16:23:46 [ndbd] INFO -- Angel allocated nodeid: 3
[root@192.168.1.4 /]# ps -ef | grep ndbd
root 2913 1 0 16:23 ? 00:00:00 ndbd
root 2914 2913 27 16:23 ? 00:00:43 ndbd
ndbd進程是使用NDB存儲引擎處理表中數據的進程。通過該進程,存儲節(jié)點能夠實現分布式事務管理,節(jié)點恢復,在線備份相關任務。
(3)啟動SQL節(jié)點(啟動mysql服務)
[root@192.168.1.4 /]# service mysql start
SUCCESS! MySQL running (2588)
(4)節(jié)點全部啟動成功后,在管理節(jié)點使用ndb_mgm工具的show命令查看集群狀態(tài):
[root@192.168.1.2]# /ndb_mgm
-- NDB Cluster -- Management Client --
ndb_mgm> show
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @192.168.1.3 (mysql-5.7.20 ndb-7.6.4, Nodegroup: 0, *)
id=3 @192.168.1.4 (mysql-5.7.20 ndb-7.6.4, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.1.2 (mysql-5.7.20 ndb-7.6.4)
[mysqld(API)] 2 node(s)
id=4 @192.168.1.3 (mysql-5.7.20 ndb-7.6.4)
id=5 @192.168.1.4 (mysql-5.7.20 ndb-7.6.4)
ndb_mgm工具是ndb_mgmd(MySQL Cluster Server)的客戶端管理工具,通過該工具可以方便的檢查Cluster的狀態(tài),啟動備份,關閉等功能。更詳細的方法可以通過ndb_mgm --help命令來進行查看。
到這里MySQL Cluster就已經搭建完成了。
看了以上關于如何實現Mysql Cluster 的環(huán)境搭建,希望能給大家在實際運用中帶來一定的幫助。本文由于篇幅有限,難免會有不足和需要補充的地方,如有需要更加專業(yè)的解答,可在官網聯系我們的24小時售前售后,隨時幫您解答問題的。
另外有需要云服務器可以了解下創(chuàng)新互聯cdcxhl.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
文章名稱:如何實現MysqlCluster的環(huán)境搭建-創(chuàng)新互聯
轉載來于:http://chinadenli.net/article6/pcpig.html
成都網站建設公司_創(chuàng)新互聯,為您提供電子商務、自適應網站、做網站、網站建設、手機網站建設、App開發(fā)
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯