Mysql-Cluster-7.5集群搭建

技術文檔——Mysql-Cluster-7.5集群搭建

前言

隨著時代的發(fā)展,新技術的層出不窮檐盟。Mysql數(shù)據(jù)庫在業(yè)務量不大的時候葵萎,我們會使用主從復制的方法實現(xiàn)服務器數(shù)據(jù)同步,一主多從或者是雙主等谎痢,但是雖然進行了讀寫分離卷雕,但是對于讀的方法限制還是比較大漫雕,所以解決數(shù)據(jù)同步的問題就是數(shù)據(jù)庫集群的意義。這里使用mysql官網(wǎng)提供的mysql-cluster實現(xiàn)集群,主要供技術學習及研究使用太雨。

mysql cluster簡介

1魁蒜、mysql-cluster已經(jīng)包含了mysql兜看,這里使用的mysql-cluster7.5,官方說明包含的是mysql版本是5.7搏予。所以不需要使用別的msyql的安裝包安裝數(shù)據(jù)庫葫哗。同時注意mysql5.7的版本在安裝的命令和配置上面和之前的版本有很大的不同,所以網(wǎng)上有很多mysql-cluster7.5之前的版本校镐,所包含的mysql版本不同鸟廓,所以安裝方法不同。

2牍陌、管理節(jié)點员咽,mysql-cluster管理節(jié)點負責管理翔试、配置、監(jiān)控整個集群滑频。

3峡迷、數(shù)據(jù)節(jié)點,使用內存存放數(shù)據(jù)彤避,保存進數(shù)據(jù)節(jié)點的數(shù)據(jù)都會自動復制并存儲到其他數(shù)據(jù)節(jié)點夯辖。

4楼雹、mysql節(jié)點尖阔,也叫數(shù)據(jù)庫節(jié)點,和我們平時使用的mysql相同谴供,作為數(shù)據(jù)庫使用桂肌。被數(shù)據(jù)節(jié)點訪問永淌。

mysql cluster架構圖及說明

環(huán)境中的配置如圖所示遂蛀,因為虛擬機占用內存較大,只使用了3臺服務器螃宙,在實際情況中最好將數(shù)據(jù)節(jié)點和mysql節(jié)點分開。在實際中負載均衡服務還需要做備份挂捅,因為萬一負載均衡服務器宕機將會導致所有數(shù)據(jù)節(jié)點都無法訪問闲先,所以需要對負載均衡服務器備份苗缩,有條件的話,分開管理節(jié)點和負載均衡器退盯。

192.168.74.21??? 管理節(jié)點

192.168.74.22??? 數(shù)據(jù)節(jié)點渊迁、sql節(jié)點

192.168.74.23??? 數(shù)據(jù)節(jié)點灶挟、sql節(jié)點

mysql cluster安裝介質

CentOS操作系統(tǒng)版本:CentOS-7-x86_64-DVD-1511.iso

mysql cluster版本:mysql-cluster-gpl-7.5.4-linux-glibc2.5-x86_64.tar.gz?

mysql cluster安裝準備工作

安裝之前稚铣,如果之前安裝過mysql,那么需要刪除相應的各種mysql文件耕漱,刪除之前請停止mysql服務抬伺。并且不要忘記刪除my.cnf這些配置文件峡钓。確保刪除干凈。不然可能會和后面的安裝有沖突寞宫。如果是實驗拉鹃,關閉防火墻统锤,實際中饲窿,防火墻打開對應端口(注意實際中需要使用的端口不只有3306端口焕蹄,還有同步需要使用的1186端口)腻脏。保證服務器之前能互相訪問,能ping通做鹰。保證固定的ip地址钾麸。保證沒有別的程序占用需要使用的端口炕桨。如3306等。這些都確認完畢后再進行安裝钥平。

關閉防火墻涉瘾、設置主機名

systemctl stopfirewalld.service

systemctl disable firewalld.service

vi /etc/hosts

192.168.74.21 hdp21

192.168.74.22 hdp22

192.168.74.23 hdp23

安裝配置管理節(jié)點

將下載后的包上傳至服務器/usr/local下

cd /usr/local

tar xvfmysql-cluster-gpl-7.5.4-linux-glibc2.5-x86_64.tar.gz

將需要的文件取出

cd mysql-cluster-gpl-7.5.4-linux-glibc2.5-x86_64

cp bin/ndb_mgm*/usr/local/bin

cd /usr/local/bin

chmod +x ndb_mgm*

新建配置文件并且初始化管理節(jié)點

mkdir/var/lib/mysql-cluster

mkdir /usr/local/mysql

vi/var/lib/mysql-cluster/config.ini

下面是配置文件睡汹,根據(jù)自己的需求修改寂殉。

[ndbd default]

NoOfReplicas=2

DataMemory=512M

IndexMemory=18M


[ndb_mgmd]

HostName=192.168.74.21

DataDir=/var/lib/mysql-cluster


[ndbd]

HostName=192.168.74.22

DataDir=/var/lib/mysql-cluster


[ndbd]

HostName=192.168.74.23

DataDir=/var/lib/mysql-cluster


[mysqld]

HostName=192.168.74.22

[mysqld]

HostName=192.168.74.23

使用配置文件初始化管理節(jié)點

/usr/local/bin/ndb_mgmd-f /var/lib/mysql-cluster/config.ini --initial

出現(xiàn)MySQL Cluster Management Server mysql-5.7.16 ndb-7.5.4

然后就能使用ndbd進去管理了

cd /usr/local/bin

ndb_mgm

ndb_mgm>show

ndb_mgm>show(使用show命令查看管理情況友扰,當數(shù)據(jù)節(jié)點配置完畢之后庶柿,我們再用這個命令查看和管理)

到此為止管理節(jié)點配置完畢浮庐,接下去配置數(shù)據(jù)和sql節(jié)點

安裝配置數(shù)據(jù)和mysql節(jié)點

以下的所有操作需要在所有的集群節(jié)點(管理節(jié)點除外)都要進行相同的操作

新增用戶組mysql和用戶msyql

groupadd mysql

useradd -g mysql -s/bin/false mysql

新建文件夾并賦予權限

mkdir /var/lib/mysql-cluster

chown root:mysql/var/lib/mysql-cluster

將下載后的包上傳至服務器/usr/local下

解壓

cd /usr/local

tar xvfmysql-cluster-gpl-7.5.4-linux-glibc2.5-x86_64.tar.gz

創(chuàng)建鏈接方便訪問

ln -s /usr/local/mysql-cluster-gpl-7.5.4-linux-glibc2.5-x86_64/usr/local/mysql

初始化數(shù)據(jù)庫(這里要注意,如果安裝的版本不同梭域,數(shù)據(jù)庫初始化的命令可能不同的病涨,很多之前的版本會使用:scripts/mysql_install_db --user=mysql來初始化,這個已經(jīng)被mysql在新的版本中廢棄了赎懦,所以需要使用下面的命令安裝励两,如果需要安裝別的版本請參考mysql官網(wǎng)的對應版本的安裝命令囊颅。)

進入剛才創(chuàng)建的目錄的bin目錄下初始化迁酸,正常安裝mysql如何初始化就如何進行安裝就可以了,這里還可以設置安裝數(shù)據(jù)庫的data目錄等參數(shù)焙畔。

cd /usr/local/mysql/bin

./mysqld --initialize--user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

如果初始化成功之后串远,系統(tǒng)會提示一個隨機生成的數(shù)據(jù)庫密碼澡罚,此時需要記住這個密碼,之后登錄數(shù)據(jù)庫需要使用這個密碼更胖。

192.168.74.22 ??? p.(V9O+2*etk ???????????????????? #記錄192.168.74.22的初始化密碼

192.168.74.23???? vKeCI;+4Igl?? ???????????????????? #記錄192.168.74.23的初始化密碼

修改權限

chown -R root .

chown -R mysql data

chgrp -R mysql .

cp support-files/mysql.server/etc/rc.d/init.d/

chmod +x/etc/rc.d/init.d/mysql.server

chkconfig --addmysql.server

配置數(shù)據(jù)節(jié)點

vi /etc/my.cnf


[client]

port = 3306

socket =/tmp/mysql.sock


[mysqld]

basedir=/usr/local/mysql/

datadir=/usr/local/mysql/data

user=root

port=3306

socket=/tmp/mysql.sock

server-id = 1

ndbcluster

ndb-connectstring=192.168.74.21


[mysql_cluster]

ndb-connectstring=192.168.74.21

其中的IP為管理節(jié)點的IP

啟動集群節(jié)點上面的服務啟動mysql(成功會有success)

/etc/init.d/mysql.serverstart

啟動mysql成功之后請自己登錄進mysql內然后進行密碼修改等操作,就和正常安裝完成mysql的操作一樣括眠。需要注意的是掷豺,集群數(shù)據(jù)庫的密碼需要相同薄声。

./mysql -uroot -p??? ??????????????????????????? #登錄mysql默辨,密碼粘貼上面記錄的初始密碼

setpassword=password('123456'); ?????? #修改密碼

./mysql -uroot -p123456??????? ????????????? #測試修改后的密碼是否能夠登錄

啟動ndbd

/usr/local/mysql/bin/ndbd–initial

如果出現(xiàn)下述現(xiàn)象就成功了

最后當所有的節(jié)點配置完成婴程,回到管理節(jié)點档叔,使用上述說過的show查看,如下的類似顯示铃肯,證明已經(jīng)連接完成

到這押逼,數(shù)據(jù)節(jié)點跟sql節(jié)點配置就完成了惦界,但是管理節(jié)點查看的狀態(tài)可能還是有些連接不上的沾歪,比如上圖的sql節(jié)點就沒有連上,這個時候不要慌挫望,先把集群關閉了狂窑,再啟動一次就行了

關閉管理節(jié)點:

ndb_mgm -e shutdown

關閉SQL節(jié)點:

/etc/init.d/mysql.serverstop

啟動管理節(jié)點:

/usr/local/bin/ndb_mgmd-f /var/lib/mysql-cluster/config.ini

cd /usr/local/bin

ndb_mgm>show

啟動數(shù)據(jù)節(jié)點:

/usr/local/mysql/bin/ndbd

啟動SQL節(jié)點:

/etc/init.d/mysql.serverstart

都啟動后結果是下面那樣就是成功了

mysql cluster測試

修改mysql密碼統(tǒng)一媳板,修改mysql的訪問權限,使外部ip能遠程訪問mysql

cd /usr/local/mysql/bin

GRANT ALL PRIVILEGES ON*.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

然后創(chuàng)建在一臺上面創(chuàng)建數(shù)據(jù)庫泉哈,看另一臺是否被同步蛉幸,然后創(chuàng)建表,然后新增刪除等等丛晦。

下列命令都在192.168.74.22上執(zhí)行奕纫,同時在192.168.74.22和192.168.74.23上查看

create database hdp;

show databases;


需要注意的是,創(chuàng)建表的時候必須選擇表的引擎為NDBCLUSTER,否則表不會進行同步

use hdp;

CREATE TABLE student(age INT) ENGINE=NDBCLUSTER;


下面是測試的截圖

同樣的搁骑,插入數(shù)據(jù)斧吐,增加又固、刪除、更改庫表都會同步煤率,這里就不一一測了仰冠。

下面測試其中一臺(192.168.74.23)宕機的情況,這里采取停掉服務的方式

/etc/init.d/mysql.serverstop

接下來新增一個表

CREATE TABLE student2(age INT) ENGINE=NDBCLUSTER;

再次啟動服務

/etc/init.d/mysql.serverstart

mysql cluster集群啟動和關閉

啟動mysql集群蝶糯。啟動順序為:管理節(jié)點→數(shù)據(jù)節(jié)點→SQL節(jié)點洋只。

啟動的命令上面都有,刪去--initial即可昼捍。

管理節(jié)點:

/usr/local/bin/ndb_mgmd-f /var/lib/mysql-cluster/config.ini

cd /usr/local/bin

ndb_mgm>show

數(shù)據(jù)節(jié)點:

/usr/local/mysql/bin/ndbd

SQL節(jié)點:

/etc/init.d/mysql.server start

關閉時只需要關閉管理節(jié)點识虚,后面的數(shù)據(jù)節(jié)點會同時被關閉,mysql就和原來一樣即可

管理節(jié)點關閉命令:

ndb_mgm -e shutdown

(執(zhí)行完成之后管理節(jié)點會關閉妒茬,數(shù)據(jù)節(jié)點也會關閉担锤,但SQL節(jié)點不會,也就是數(shù)據(jù)庫服務需要手動到每一臺服務器上停止以保證數(shù)據(jù)同步)

關閉SQL節(jié)點:

/etc/init.d/mysql.serverstop

總結

1乍钻、在實際中需要分開數(shù)據(jù)節(jié)點和sql節(jié)點肛循。

2、安裝最好參考官網(wǎng)的文檔進行配置安裝银择,網(wǎng)上的博客安裝的可能為舊版本多糠,命令可能不同,連我自己現(xiàn)在寫的不知道你看的時候是不是官網(wǎng)又出了新版本浩考,可能在某些地方進行了改動夹孔。

3、配置文件過于簡單怀挠,還有很多配置會在實際中被使用到析蝴,需要參考文檔進行添加。(my.cnf文件的配置需要根據(jù)你的實際進行修改)

4绿淋、經(jīng)過測試各種節(jié)點斷開闷畸、服務器停止、數(shù)據(jù)庫服務停止吞滞、未會出現(xiàn)數(shù)據(jù)異常等特殊情況佑菩,但是宕機的機器恢復后如果有刪庫操作,不會同步裁赠,其他刪表殿漠、刪數(shù)據(jù)不會影響。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末佩捞,一起剝皮案震驚了整個濱河市绞幌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌一忱,老刑警劉巖莲蜘,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谭确,死亡現(xiàn)場離奇詭異,居然都是意外死亡票渠,警方通過查閱死者的電腦和手機逐哈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來问顷,“玉大人昂秃,你說我怎么就攤上這事《耪” “怎么了肠骆?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長羞芍。 經(jīng)常有香客問我哗戈,道長,這世上最難降的妖魔是什么荷科? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任唯咬,我火速辦了婚禮,結果婚禮上畏浆,老公的妹妹穿的比我還像新娘胆胰。我一直安慰自己,他們只是感情好刻获,可當我...
    茶點故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布蜀涨。 她就那樣靜靜地躺著,像睡著了一般蝎毡。 火紅的嫁衣襯著肌膚如雪厚柳。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天沐兵,我揣著相機與錄音别垮,去河邊找鬼。 笑死扎谎,一個胖子當著我的面吹牛碳想,可吹牛的內容都是我干的。 我是一名探鬼主播毁靶,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼胧奔,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了预吆?” 一聲冷哼從身側響起龙填,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后岩遗,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體胶背,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年喘先,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片廷粒。...
    茶點故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡窘拯,死狀恐怖,靈堂內的尸體忽然破棺而出坝茎,到底是詐尸還是另有隱情涤姊,我是刑警寧澤,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布嗤放,位于F島的核電站思喊,受9級特大地震影響,放射性物質發(fā)生泄漏次酌。R本人自食惡果不足惜恨课,卻給世界環(huán)境...
    茶點故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望岳服。 院中可真熱鬧剂公,春花似錦、人聲如沸吊宋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽璃搜。三九已至拖吼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間这吻,已是汗流浹背吊档。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留橘原,地道東北人籍铁。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓,卻偏偏與公主長得像趾断,于是被迫代替她去往敵國和親拒名。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,612評論 2 350

推薦閱讀更多精彩內容