IT貓撲網(wǎng):您身邊最放心的安全下載站! 最新更新|軟件分類|軟件專題|手機(jī)版|論壇轉(zhuǎn)貼|軟件發(fā)布

您當(dāng)前所在位置:首頁數(shù)據(jù)庫 → 配置高可用性的MySQL服務(wù)器負(fù)載均衡群集

配置高可用性的MySQL服務(wù)器負(fù)載均衡群集

時(shí)間:2015/6/28來源:IT貓撲網(wǎng)作者:網(wǎng)管聯(lián)盟我要評(píng)論(0)

這篇論壇文章(賽迪網(wǎng)技術(shù)社區(qū))主要介紹了配置一個(gè)高可用性的mysql服務(wù)器負(fù)載均衡群集的具體過程,詳細(xì)內(nèi)容請(qǐng)參考下文:

本文將告訴你如何配置一個(gè)三個(gè)節(jié)點(diǎn)的MySQL 5數(shù)據(jù)庫服務(wù)器群集:兩個(gè)存儲(chǔ)節(jié)點(diǎn)和一個(gè)

管理節(jié)點(diǎn)。這個(gè)群集是由用提供"heartbeat心跳"(用來檢查另外一個(gè)節(jié)點(diǎn)是否活動(dòng))和

"ldirectord"(將請(qǐng)求分發(fā)到MySQL群集的節(jié)點(diǎn))的Ultra Monkey安裝包的兩個(gè)節(jié)點(diǎn)組成的

一個(gè)高可用性負(fù)載均衡器。


本文我們的每個(gè)節(jié)點(diǎn)使用Debian Sarge linux系統(tǒng)。其它Linux發(fā)行版本的安裝可能一點(diǎn)點(diǎn)

區(qū)別。MySQL的版本我們使用5.0.19。如果你不想使用MySQL 5,你也可以使用MySQL 4.1,盡

管我還沒有測試過。


本文是一篇實(shí)踐應(yīng)用指導(dǎo);它沒有涉及太多的理論。關(guān)于群集的理論你可以在網(wǎng)上找到很多。


一 服務(wù)器


我使用下面的Debian服務(wù)器,它們都在同一個(gè)網(wǎng)段(本例如:192.168.0.x):

sql1.test.com: 192.168.0.101 MySQL 群集節(jié)點(diǎn) 1

sql2.test.com: 192.168.0.102 MySQL 群集節(jié)點(diǎn) 2

loadb1.test.com: 192.168.0.103 負(fù)載均衡 1 / MySQL 群集管理服務(wù)器

loadb2.test.com: 192.168.0.104 負(fù)載均衡 2

另外我們需要一個(gè)虛擬IP地址:192.168.0.105。它會(huì)安排給這個(gè)MySQL群集的負(fù)載均衡,以便于

應(yīng)用程序通過統(tǒng)一單獨(dú)的IP地址來訪問群集。


盡管我們想在MySQL群集中使用兩個(gè)節(jié)點(diǎn),但是我們?nèi)匀恍枰谌齻(gè)節(jié)點(diǎn),MySQL群集管理服務(wù)器

,主要的一個(gè)原因是:如果其中一個(gè)MySQL群集節(jié)點(diǎn)壞了,而MySQL群集管理服務(wù)器沒有運(yùn)行,那

么兩個(gè)群集節(jié)點(diǎn)上的數(shù)據(jù)將會(huì)不一致("split brain")。我們需要它來配置MySQL群集.


因此我們的安裝一般需要五臺(tái)機(jī)器:


2個(gè)MySQL群集節(jié)點(diǎn) + 1個(gè)群集管理服務(wù)器 + 2個(gè)負(fù)載均衡 = 5


因?yàn)槿杭芾矸⻊?wù)器沒有使用多少資源,系統(tǒng)將會(huì)空著什么都不做,所以我們可以把我們的第一

個(gè)負(fù)載均衡和它一起放在同一臺(tái)機(jī)器上,這樣可以節(jié)約我們一臺(tái)服務(wù)器,所以最好我們只需要四臺(tái)

機(jī)器。


二 配置MySQL群集管理服務(wù)器


首先我們要下載MySQL 5.0.19,并安裝群集管理服務(wù)器(ndb_mgmd)和群集管理客戶端 (ndb_mgm - 它

可以用來監(jiān)控群集的運(yùn)行情況). 下面的步驟是在loadb1.test.com (192.168.0.103)上進(jìn)行的:


loadb1.test.com:


mkdir /usr/src/mysql-mgm

cd /usr/src/mysql-mgm

wget https://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-max-5.0.19-linux-i686-\

glibc23.tar.gz/from/https://www.mirrorservice.org/sites/ftp.mysql.com/

tar xvfz mysql-max-5.0.19-linux-i686-glibc23.tar.gz

cd mysql-max-5.0.19-linux-i686-glibc23

mv bin/ndb_mgm /usr/bin

mv bin/ndb_mgmd /usr/bin

chmod 755 /usr/bin/ndb_mg*

cd /usr/src

rm -rf /usr/src/mysql-mgm


下一步,我們必須創(chuàng)建群集的配置文件,/var/lib/mysql-cluster/config.ini:


loadb1.test.com:


mkdir /var/lib/mysql-cluster

cd /var/lib/mysql-cluster

vi config.ini


———-

[NDBD DEFAULT]

NoOfReplicas=2

[MYSQLD DEFAULT]

[NDB_MGMD DEFAULT]

[TCP DEFAULT]

# Section for the cluster management node

[NDB_MGMD]

# IP address of the management node (this system)

HostName=192.168.0.103

# Section for the storage nodes

[NDBD]

# IP address of the first storage node

HostName=192.168.0.101

DataDir= /var/lib/mysql-cluster

[NDBD]

# IP address of the second storage node

HostName=192.168.0.102

DataDir=/var/lib/mysql-cluster

# one [MYSQLD] per storage node

[MYSQLD]

[MYSQLD]

———-

實(shí)際應(yīng)用中請(qǐng)將文件中的IP地址換成你相應(yīng)的IP。

然后我們啟動(dòng)群集管理服務(wù)器:

loadb1.test.com:

ndb_mgmd -f /var/lib/mysql-cluster/config.ini

我們應(yīng)該也需要在服務(wù)器啟動(dòng)時(shí)能夠自動(dòng)啟動(dòng)管理服務(wù)器,所以我們創(chuàng)建了一個(gè)非常簡單的初始化

腳本和相應(yīng)的啟動(dòng)連接:

loadb1.test.com:

echo ‘ndb_mgmd -f /var/lib/mysql-cluster/config.ini’ > /etc/init.d/ndb_mgmd

chmod 755 /etc/init.d/ndb_mgmd

update-rc.d ndb_mgmd defaults

三 配置MySQL群集節(jié)點(diǎn)(存儲(chǔ)節(jié)點(diǎn))

現(xiàn)在我們將分別在sql1.test.com和sql2.test.com上安裝mysql-max-5.0.19:

sql1.example.com / sql2.example.com:

groupadd mysql

useradd -g mysql mysql

cd /usr/local/

wget https://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-max-5.0.19-linux-i686-\

glibc23.tar.gz/from/https://www.mirrorservice.org/sites/ftp.mysql.com/

tar xvfz mysql-max-5.0.19-linux-i686-glibc23.tar.gz

ln -s mysql-max-5.0.19-linux-i686-glibc23 mysql

cd mysql

scripts/mysql_install_db –user=mysql

chown -R root:mysql .

chown -R mysql data

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

chmod 755 /etc/init.d/mysql.server

update-rc.d mysql.server defaults

cd /usr/local/mysql/bin

mv * /usr/bin

cd ../

rm -fr /usr/local/mysql/bin

ln -s /usr/bin /usr/local/mysql/bin


然后我們?cè)诿總(gè)節(jié)點(diǎn)上創(chuàng)建MySQL配置文件/etc/my.cnf :

vi /etc/my.cnf

[mysqld]

ndbcluster

# IP address of the cluster management node

ndb-connectstring=192.168.0.103

[mysql_cluster]

# IP address of the cluster management node

ndb-connectstring=192.168.0.103

確認(rèn)你在群集管理服務(wù)器中輸入的是正確的IP地址。

下一步我們分別在每個(gè)群集節(jié)點(diǎn)上創(chuàng)建數(shù)據(jù)目錄和啟動(dòng)MySQL服務(wù)器:

sql1.test.com / sql2.test.com:

mkdir /var/lib/mysql-cluster

cd /var/lib/mysql-cluster

ndbd –initial

/etc/init.d/mysql.server start

(請(qǐng)記。何覀冎皇窃诘谝淮螁(dòng)MySQL時(shí)或loadb1.test.com上面的

/var/lib/mysql-cluster/config.ini發(fā)生改變時(shí),才使用ndbd –initial)

現(xiàn)在,是時(shí)候給MySQL root帳號(hào)設(shè)置密碼了:

sql1.test.com / sql2.test.com:

mysqladmin -u root password yourrootsqlpassword

我們需要在服務(wù)器啟動(dòng)時(shí),啟動(dòng)群集節(jié)點(diǎn),所以我們創(chuàng)建一個(gè)ndbd初始化腳本和相應(yīng)的

系統(tǒng)啟動(dòng)連接:

sql1.test.com / sql2.test.com:

echo ‘ndbd’ > /etc/init.d/ndbd

chmod 755 /etc/init.d/ndbd

update-rc.d ndbd defaults

四 測試MySQL群集

我們的MySQL群集配置工作已經(jīng)完成,現(xiàn)在是測試它的時(shí)間了。在群集管理服務(wù)器

(loadb1.test.com)上,運(yùn)行群集管理客戶端ndb_mgm來檢查群集節(jié)點(diǎn)是否連接:

loadb1.test.com:

ndb_mgm

你將會(huì)看到這些:

– NDB Cluster — Management Client –

ndb_mgm>

在命令行輸入 show;

show;

輸出的信息應(yīng)該是這樣的:

ndb_mgm> show;

Connected to Management Server at: localhost:1186

Cluster Configuration

———————

[ndbd(NDB)] 2 node(s)

id=2 @192.168.0.101 (Version: 5.0.19, Nodegroup: 0, Master)

id=3 @192.168.0.102 (Version: 5.0.19, Nodegroup: 0)

[ndb_mgmd(MGM)] 1 node(s)

id=1 @192.168.0.103 (Version: 5.0.19)

[mysqld(API)] 2 node(s)

id=4 @192.168.0.101 (Version: 5.0.19)

id=5 @192.168.0.102 (Version: 5.0.19)

ndb_mgm>

如果你看到你的節(jié)點(diǎn)都已經(jīng)連接上了。那么一切都很順利!

輸入

quit;

退出 ndb_mgm 客戶端控制臺(tái)。

現(xiàn)在我們?cè)趕ql1.test.com節(jié)點(diǎn)上創(chuàng)建一個(gè)測試數(shù)據(jù)庫,并創(chuàng)建一個(gè)測試表,

填入一些測試數(shù)據(jù):

mysql -u root -p

CREATE DATABASE mysqlclustertest;

USE mysqlclustertest;

CREATE TABLE testtable (i INT) ENGINE=NDBCLUSTER;

INSERT INTO testtable () VALUES (1);

SELECT * FROM testtable;

quit;

(看看上面這個(gè)CREATE語句:我們想群集起來的所有數(shù)據(jù)庫的表,必須使用 ENGINE=NDBCLUSTER!

如果你使用其它的ENGINE,那么群集將不會(huì)工作。

SELECT出的結(jié)果應(yīng)該是:

mysql> SELECT * FROM testtable;

+

關(guān)鍵詞標(biāo)簽:MySQL,服務(wù)器,負(fù)載均衡

相關(guān)閱讀

文章評(píng)論
發(fā)表評(píng)論

熱門文章

相關(guān)下載

人氣排行 配置高可用性的MySQL服務(wù)器負(fù)載均衡群集教你在MySQL 5.0以上版本中配置主從庫適宜做簡單搜索的MySQL數(shù)據(jù)庫全文索引個(gè)人經(jīng)驗(yàn)總結(jié):完全卸載MySQL數(shù)據(jù)庫5.0MySQL環(huán)境下導(dǎo)入數(shù)據(jù)時(shí)是否需要禁用索引講解MaxDB數(shù)據(jù)庫和MySQL數(shù)據(jù)庫的主要差別數(shù)據(jù)庫應(yīng)用經(jīng)驗(yàn):如何簡單安裝MySQL數(shù)據(jù)庫如何在Unix系統(tǒng)環(huán)境下安裝MySQL數(shù)據(jù)庫