如何實現(xiàn)MysqlCluster的環(huán)境搭建-創(chuàng)新互聯(lián)

創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比福貢網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式福貢網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋福貢地區(qū)。費(fèi)用合理售后完善,十年實體公司更值得信賴。

本文主要給大家介紹如何實現(xiàn)Mysql Cluster 的環(huán)境搭建,希望可以給大家補(bǔ)充和更新些知識,如有其它問題需要了解的可以持續(xù)在創(chuàng)新互聯(lián)行業(yè)資訊里面關(guān)注我的更新文章的。

MySQL Cluster 介紹

    MySQL Cluster是一個基于NDB Cluster存儲引擎的完整的分布式數(shù)據(jù)庫系統(tǒng)。不僅僅具有高可用性,而且可以自動切分?jǐn)?shù)據(jù),冗余數(shù)據(jù)等高級功能。和Oracle Real Cluster Application不太一樣的是,MySQL Cluster 是一個Share Nothing的架構(gòu),各個MySQL Server之間并不共享任何數(shù)據(jù),高度可擴(kuò)展以及高度可用方面的突出表現(xiàn)是其大的特色。

   簡單的說,MySQL Cluster 實際上是在無共享存儲設(shè)備的情況下實現(xiàn)的一種完全分布式數(shù)據(jù)庫系統(tǒng),其主要通過 NDB Cluster(簡稱 NDB)存儲引擎來實現(xiàn)。MySQL Cluster 剛剛誕生的時候可以說是一個可以對數(shù)據(jù)進(jìn)行持久化的內(nèi)存數(shù)據(jù)庫,所有數(shù)據(jù)和索引都必須裝載在內(nèi)存中才能夠正常運(yùn)行,但是現(xiàn)在的MySQL Cluster 版本分為內(nèi)存表和磁盤表,內(nèi)存表,所有數(shù)據(jù)加載到內(nèi)存中運(yùn)行,磁盤表僅僅將主鍵,索引字段裝載在內(nèi)存中,其他字段存放在磁上。如何實現(xiàn)Mysql Cluster 的環(huán)境搭建

一個 MySQL Cluster 的環(huán)境主要由以下三部分組成:

(1)負(fù)責(zé)管理各個節(jié)點(diǎn)的 Manage 節(jié)點(diǎn)主機(jī);管理節(jié)點(diǎn)負(fù)責(zé)整個Cluster集群中各個節(jié)點(diǎn)的管理工作,包括集群的配置,啟動關(guān)閉各節(jié)點(diǎn),對各個節(jié)點(diǎn)進(jìn)行常規(guī)維護(hù),以及實施數(shù)據(jù)的備份恢復(fù)等。管理節(jié)點(diǎn)會獲取整個Cluster環(huán)境中各節(jié)點(diǎn)的狀態(tài)和錯誤信息,并且將各 Cluster 集群中各個節(jié)點(diǎn)的信息反饋給整個集群中其他的所有節(jié)點(diǎn)。由于管理節(jié)點(diǎn)上保存了整個Cluster 環(huán)境的配置,同時擔(dān)任了集群中各節(jié)點(diǎn)的基本溝通工作,所以他必須是最先被啟動的節(jié)點(diǎn)。

(2)Storage 層的 NDB 數(shù)據(jù)節(jié)點(diǎn);也就是上面說的NDB Cluster。最初的NDB是一個內(nèi)存式存儲引擎,當(dāng)然也會將數(shù)據(jù)持久化到存儲設(shè)備上。但是最新的NDB Cluster存儲引擎已經(jīng)改進(jìn)了這一點(diǎn),可以選擇數(shù)據(jù)是全部加載到內(nèi)存中還是僅僅加載索引數(shù)據(jù)。NDB 節(jié)點(diǎn)主要是實現(xiàn)底層數(shù)據(jù)存儲功能,來保存Cluster 的數(shù)據(jù)。每一個Cluster節(jié)點(diǎn)保存完整數(shù)據(jù)的一個fragment,也就是一個數(shù)據(jù)分片(或者一份完整的數(shù)據(jù),視節(jié)點(diǎn)數(shù)目和配置而定),所以只要配置得當(dāng),MySQL Cluster在存儲層不會出現(xiàn)單點(diǎn)的問題。一般來說,NDB 節(jié)點(diǎn)被組織成一個一個的NDB Group,一個 NDB Group實際上就是一組存有完全相同的物理數(shù)據(jù)的NDB節(jié)點(diǎn)群。

上面提到了NDB 各個節(jié)點(diǎn)對數(shù)據(jù)的組織,可能每個節(jié)點(diǎn)都存有全部的數(shù)據(jù)也可能只保存一部分?jǐn)?shù)據(jù),主要是受節(jié)點(diǎn)數(shù)目和參數(shù)來控制的。首先在 MySQL Cluster主配置文件(在管理節(jié)點(diǎn)上面,一般為 config.ini)中,有一個非常重要的參數(shù)叫NoOfReplicas,這個參數(shù)指定了每一份數(shù)據(jù)被冗余存儲在不同節(jié)點(diǎn)上面的份數(shù),該參數(shù)一般至少應(yīng)該被設(shè)置成2,也只需要設(shè)置成2就可以了。因為正常來說,兩個互為冗余的節(jié)點(diǎn)同時出現(xiàn)故障的概率還是非常小的,當(dāng)然如果機(jī)器和內(nèi)存足夠多的話,也可以繼續(xù)增大來更進(jìn)一步減小出現(xiàn)故障的概率。此外,一個節(jié)點(diǎn)上面是保存所有的數(shù)據(jù)還是一部分?jǐn)?shù)據(jù)還受到存儲節(jié)點(diǎn)數(shù)目的限制。NDB 存儲引擎首先保證NoOfReplicas參數(shù)配置的要求來使用存儲節(jié)點(diǎn),對數(shù)據(jù)進(jìn)行冗余,然后再根據(jù)節(jié)點(diǎn)數(shù)目將數(shù)據(jù)分段來繼續(xù)使用多余的NDB節(jié)點(diǎn)。分段的數(shù)目為節(jié)點(diǎn)總數(shù)除以NoOfReplicas 所得。

(3)SQL 層的 SQL 云服務(wù)器節(jié)點(diǎn)(后面簡稱為 SQL 節(jié)點(diǎn));也就是我們常說的MySQL Server。主要負(fù)責(zé)實現(xiàn)一個數(shù)據(jù)庫在存儲層之上的所有事情,比如連接管理,Query 優(yōu)化和響應(yīng) ,Cache 管理等等,只有存儲層的工作交給了NDB 數(shù)據(jù)節(jié)點(diǎn)去處理了。也就是說,在純粹的MySQL Cluster 環(huán)境中的SQL 節(jié)點(diǎn),可以被認(rèn)為是一個不需要提供任何存儲引擎的MySQL服務(wù)器,因為他的存儲引擎有Cluster 環(huán)境中的NDB 節(jié)點(diǎn)來擔(dān)任。所以,SQL 層各MySQL服務(wù)器的啟動與普通的MySQL Server 啟動也有一定的區(qū)別,必須要添加ndbcluster參數(shù)選項才行。我們可以添加在my.cnf配置文件中,也可以通過啟動命令行來指定。

MySQL Cluster 環(huán)境搭建

搭建 MySQL Cluster首先需要至少一個管理節(jié)點(diǎn)主機(jī)來實現(xiàn)管理功能,一個SQL節(jié)點(diǎn)主機(jī)來實現(xiàn)MySQL server功能和兩個ndb節(jié)點(diǎn)主機(jī)實現(xiàn)NDB Cluster的功能。我在這里測試使用雙SQL節(jié)點(diǎn)來搭建測試環(huán)境,具體信息如下:

1、服務(wù)器準(zhǔn)備

192.168.1.2    管理節(jié)點(diǎn)

192.168.1.3   mysql節(jié)點(diǎn),ndb節(jié)點(diǎn)

192.168.1.4   mysql節(jié)點(diǎn),ndb節(jié)點(diǎn)

我這兒把mysq節(jié)點(diǎn)l和ndb數(shù)據(jù)節(jié)點(diǎn)放在一臺機(jī)器上面

2、軟件安裝

測試環(huán)境(3臺服務(wù)器均一樣,不是必須的,但ndb節(jié)點(diǎn)最好一樣,不一樣的話,內(nèi)存要配一樣大,服務(wù)器均已關(guān)閉iptables,生產(chǎn)環(huán)境請自行開放相關(guān)端口)

安裝 MySQL 節(jié)點(diǎn):

sql節(jié)點(diǎn)1: 192.168.1.3
sql節(jié)點(diǎn)2: 192.168.1.4

下載安裝包:mysql-cluster-gpl-7.6.4-linux-glibc2.12-x86_64.tar.gz ,我這里使用二進(jìn)制編譯好了的,也可以自己下載源碼包編譯。這里操作一臺SQL節(jié)點(diǎn)服務(wù)器,另外一臺SQL節(jié)點(diǎn)服務(wù)器也是相同的,都執(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                                       # 運(yùn)行NDB存儲引擎
ndb-connectstring=192.168.1.2      # 管理節(jié)點(diǎn)
[MYSQL_CLUSTER]
ndb-connectstring=192.168.1.2     #管理節(jié)點(diǎn)

NDB節(jié)點(diǎn)安裝(數(shù)據(jù)節(jié)點(diǎn))

因為我的數(shù)據(jù)節(jié)點(diǎn)和SQL節(jié)點(diǎn)在一起,所以就不需要安裝了。如果ndb數(shù)據(jù)節(jié)點(diǎn)和SQL節(jié)點(diǎn)是分開的,那安裝方法和SQL節(jié)點(diǎn)安裝方法一樣。也是需要配置my.cnf的。

安裝管理節(jié)點(diǎn)

管理節(jié)點(diǎn)所需要的安裝更簡單,實際上只需要 ndb_mgm 和ndb_mgmd兩個程序即可,這兩個可執(zhí)行程序可以在上面的MySQL節(jié)點(diǎn)的MySQL安裝目錄中的bin目錄下面找到。將這兩個程序copy到管理節(jié)點(diǎn)上面合適的位置(自行考慮,我一般會放在/usr/local/mysql/bin下面)并且添加環(huán)境變量就可以了。(另外也可以將ndb_config 、ndb_perror 復(fù)制過來,ndb_config -q MaxNoOfAttributes #查看變量修改是否生效;ndb_perror --ndb 2308 2308為錯誤代碼)

1.在/usr/local/創(chuàng)建目錄mysql-cluster,該目錄會存放相關(guān)日志文件,以及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.根據(jù)我們上面提供的環(huán)境,config.ini文件配置如下

[tcp default]
SendBufferMemory=2M
ReceiveBufferMemory=2M

[ndbd default]
NoOfReplicas=2                          #每個數(shù)據(jù)節(jié)點(diǎn)的鏡像數(shù)量,通常最低設(shè)置為2,否則就沒有意義了
DataMemory=3072M                   #每個數(shù)據(jù)節(jié)點(diǎn)中給數(shù)據(jù)分配的內(nèi)存,
IndexMemory=1024M                  #每個數(shù)據(jù)節(jié)點(diǎn)中給索引分配的內(nèi)存  ,7.6版本中的已經(jīng)改名了


MaxNoOfOrderedIndexes=4000
MaxNoOfUniqueHashIndexes=4000
MaxNoOfAttributes=4000

MaxNoOfConcurrentOperations=1500000
MaxNoOfLocalOperations=2000000
MaxNoOfConcurrentTransactions=16000
TransactionDeadLockDetectionTimeOut=50000               #這是毫秒單位,相當(dāng)于50秒

#ODirect=1

MaxNoOfTables=1024

#UndoDataBuffer=64M
#RedoBuffer=64M

#FragmentLogFileSize=512M
NoOfFragmentLogFiles=300

[ndb_mgmd]
NodeId=1
HostName=192.168.1.2               #管理節(jié)點(diǎn)ip
DataDir=/var/lib/mysql-cluster      #管理節(jié)點(diǎn)數(shù)據(jù)目錄,存放相關(guān)日志,以及pid文件

[ndbd]
NodeId=2
HostName=192.168.1.3        #數(shù)據(jù)節(jié)點(diǎn)ip地址
DataDir=/data/                       #NDB點(diǎn)數(shù)據(jù)存放目錄

[ndbd]
NodeId=3
HostName=192.168.1.4         #數(shù)據(jù)節(jié)點(diǎn)ip地址
DataDir=/data                        #NDB點(diǎn)數(shù)據(jù)存放目錄


[mysqld]
NodeId=4
HostName=192.168.1.3         #SQL節(jié)點(diǎn)ip地址

[mysqld]
NodeId=5
HostName=192.168.1.4       #SQL節(jié)點(diǎn)ip地址

[mysqld]

在上面的配置文件中,包括很多的組,組名用"[]"括起來,這里我們最關(guān)心的是3類節(jié)點(diǎn)組的配置,分別定義如下

NDB_MGMD] 表示管理節(jié)點(diǎn)的配置,只能有一個。

[NDBD DEFAULT] 表示每個數(shù)據(jù)節(jié)點(diǎn)的默認(rèn)配置,在每個節(jié)點(diǎn)的[NDBD]中不用再寫這些選項,只能有一個。

[NDBD] 表示每個數(shù)據(jù)節(jié)點(diǎn)的配置,可以有多個。

[MYSQLD] 表示SQL節(jié)點(diǎn)的配置,可以有多個,分別寫上不同的SQL節(jié)點(diǎn)的ip地址;也可以不用寫,只保留一個空節(jié)點(diǎn),表示任意一個ip地址都可以進(jìn)行訪問。此節(jié)點(diǎn)的個數(shù)表明了可以用來連接數(shù)據(jù)節(jié)點(diǎn)的SQL節(jié)點(diǎn)總數(shù)。

每個節(jié)點(diǎn)都有一個獨(dú)立的id號,可以填寫,比如nodeid=2,(老版本使用id,新版本已經(jīng)不使用id標(biāo)識了)也可以不用填寫,系統(tǒng)會按照配置文件的填寫順序自動分配。

開始使用Cluster

上面我們都已經(jīng)配置完畢了,下面說明啟動,關(guān)閉和使用方法

啟動順序為:管理節(jié)點(diǎn)->數(shù)據(jù)節(jié)點(diǎn)->SQL節(jié)點(diǎn)(很重要)

(1)啟動管理節(jié)點(diǎn):

[root@192.168.1.2 ~]# ndb_mgmd -f /usr/local/mysql-cluster/config.ini  --initial   #第一次啟動加—initial參數(shù),以后修改了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(數(shù)據(jù)節(jié)點(diǎn))
[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進(jìn)程是使用NDB存儲引擎處理表中數(shù)據(jù)的進(jìn)程。通過該進(jìn)程,存儲節(jié)點(diǎn)能夠?qū)崿F(xiàn)分布式事務(wù)管理,節(jié)點(diǎn)恢復(fù),在線備份相關(guān)任務(wù)。

(3)啟動SQL節(jié)點(diǎn)(啟動mysql服務(wù))

[root@192.168.1.4 /]# service mysql start
 SUCCESS! MySQL running (2588)

(4)節(jié)點(diǎn)全部啟動成功后,在管理節(jié)點(diǎn)使用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),啟動備份,關(guān)閉等功能。更詳細(xì)的方法可以通過ndb_mgm --help命令來進(jìn)行查看。

到這里MySQL Cluster就已經(jīng)搭建完成了。

看了以上關(guān)于如何實現(xiàn)Mysql Cluster 的環(huán)境搭建,希望能給大家在實際運(yùn)用中帶來一定的幫助。本文由于篇幅有限,難免會有不足和需要補(bǔ)充的地方,如有需要更加專業(yè)的解答,可在官網(wǎng)聯(lián)系我們的24小時售前售后,隨時幫您解答問題的。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

文章名稱:如何實現(xiàn)MysqlCluster的環(huán)境搭建-創(chuàng)新互聯(lián)
轉(zhuǎn)載來于:http://muchs.cn/article6/pcpig.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、自適應(yīng)網(wǎng)站、做網(wǎng)站、網(wǎng)站建設(shè)、手機(jī)網(wǎng)站建設(shè)、App開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)