Mysql-Cluster-7.5集群搭建

技術(shù)文檔——Mysql-Cluster-7.5集群搭建

前言

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

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é)點(diǎn),mysql-cluster管理節(jié)點(diǎn)負(fù)責(zé)管理、配置、監(jiān)控整個集群。

3、數(shù)據(jù)節(jié)點(diǎn),使用內(nèi)存存放數(shù)據(jù),保存進(jìn)數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)都會自動復(fù)制并存儲到其他數(shù)據(jù)節(jié)點(diǎn)。

4、mysql節(jié)點(diǎn),也叫數(shù)據(jù)庫節(jié)點(diǎn),和我們平時使用的mysql相同,作為數(shù)據(jù)庫使用。被數(shù)據(jù)節(jié)點(diǎn)訪問。

mysql cluster架構(gòu)圖及說明

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

192.168.74.21??? 管理節(jié)點(diǎn)

192.168.74.22??? 數(shù)據(jù)節(jié)點(diǎn)、sql節(jié)點(diǎn)

192.168.74.23??? 數(shù)據(jù)節(jié)點(diǎn)、sql節(jié)點(diǎn)

mysql cluster安裝介質(zhì)

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安裝準(zhǔn)備工作

安裝之前,如果之前安裝過mysql,那么需要刪除相應(yīng)的各種mysql文件,刪除之前請停止mysql服務(wù)。并且不要忘記刪除my.cnf這些配置文件。確保刪除干凈。不然可能會和后面的安裝有沖突。如果是實驗,關(guān)閉防火墻,實際中,防火墻打開對應(yīng)端口(注意實際中需要使用的端口不只有3306端口,還有同步需要使用的1186端口)。保證服務(wù)器之前能互相訪問,能ping通。保證固定的ip地址。保證沒有別的程序占用需要使用的端口。如3306等。這些都確認(rèn)完畢后再進(jìn)行安裝。

關(guān)閉防火墻、設(shè)置主機(jī)名

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é)點(diǎn)

將下載后的包上傳至服務(wù)器/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é)點(diǎn)

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é)點(diǎn)

/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進(jìn)去管理了

cd /usr/local/bin

ndb_mgm

ndb_mgm>show

ndb_mgm>show(使用show命令查看管理情況,當(dāng)數(shù)據(jù)節(jié)點(diǎn)配置完畢之后,我們再用這個命令查看和管理)

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

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

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

新增用戶組mysql和用戶msyql

groupadd mysql

useradd -g mysql -s/bin/false mysql

新建文件夾并賦予權(quán)限

mkdir /var/lib/mysql-cluster

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

將下載后的包上傳至服務(wù)器/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)的對應(yīng)版本的安裝命令。)

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

cd /usr/local/mysql/bin

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

如果初始化成功之后,系統(tǒng)會提示一個隨機(jī)生成的數(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的初始化密碼

修改權(quán)限

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é)點(diǎn)

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é)點(diǎn)的IP

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

/etc/init.d/mysql.serverstart

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

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

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

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

啟動ndbd

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

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

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

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

關(guān)閉管理節(jié)點(diǎn):

ndb_mgm -e shutdown

關(guān)閉SQL節(jié)點(diǎn):

/etc/init.d/mysql.serverstop

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

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

cd /usr/local/bin

ndb_mgm>show

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

/usr/local/mysql/bin/ndbd

啟動SQL節(jié)點(diǎn):

/etc/init.d/mysql.serverstart

都啟動后結(jié)果是下面那樣就是成功了

mysql cluster測試

修改mysql密碼統(tǒng)一,修改mysql的訪問權(quán)限,使外部ip能遠(yuǎn)程訪問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,否則表不會進(jìn)行同步

use hdp;

CREATE TABLE student(age INT) ENGINE=NDBCLUSTER;


下面是測試的截圖

同樣的,插入數(shù)據(jù),增加、刪除、更改庫表都會同步,這里就不一一測了。

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

/etc/init.d/mysql.serverstop

接下來新增一個表

CREATE TABLE student2(age INT) ENGINE=NDBCLUSTER;

再次啟動服務(wù)

/etc/init.d/mysql.serverstart

mysql cluster集群啟動和關(guān)閉

啟動mysql集群。啟動順序為:管理節(jié)點(diǎn)→數(shù)據(jù)節(jié)點(diǎn)→SQL節(jié)點(diǎn)。

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

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

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

cd /usr/local/bin

ndb_mgm>show

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

/usr/local/mysql/bin/ndbd

SQL節(jié)點(diǎn):

/etc/init.d/mysql.server start

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

管理節(jié)點(diǎn)關(guān)閉命令:

ndb_mgm -e shutdown

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

關(guān)閉SQL節(jié)點(diǎn):

/etc/init.d/mysql.serverstop

總結(jié)

1、在實際中需要分開數(shù)據(jù)節(jié)點(diǎn)和sql節(jié)點(diǎn)。

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

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

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容