時(shí)間:2015-06-28 00:00:00 來(lái)源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評(píng)論(0)
這篇論壇文章(賽迪網(wǎng)技術(shù)社區(qū))主要介紹了配置一個(gè)高可用性的MySQL服務(wù)器負(fù)載均衡群集的具體過(guò)程,詳細(xì)內(nèi)容請(qǐng)參考下文:
本文將告訴你如何配置一個(gè)三個(gè)節(jié)點(diǎn)的MySQL 5數(shù)據(jù)庫(kù)服務(wù)器群集:兩個(gè)存儲(chǔ)節(jié)點(diǎn)和一個(gè)
管理節(jié)點(diǎn)。這個(gè)群集是由用提供"heartbeat心跳"(用來(lái)檢查另外一個(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,盡
管我還沒(méi)有測(cè)試過(guò)。
本文是一篇實(shí)踐應(yīng)用指導(dǎo);它沒(méi)有涉及太多的理論。關(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)用程序通過(guò)統(tǒng)一單獨(dú)的IP地址來(lái)訪問(wèn)群集。
盡管我們想在MySQL群集中使用兩個(gè)節(jié)點(diǎn),但是我們?nèi)匀恍枰谌齻€(gè)節(jié)點(diǎn),MySQL群集管理服務(wù)器
,主要的一個(gè)原因是:如果其中一個(gè)MySQL群集節(jié)點(diǎn)壞了,而MySQL群集管理服務(wù)器沒(méi)有運(yùn)行,那
么兩個(gè)群集節(jié)點(diǎn)上的數(shù)據(jù)將會(huì)不一致("split brain")。我們需要它來(lái)配置MySQL群集.
因此我們的安裝一般需要五臺(tái)機(jī)器:
2個(gè)MySQL群集節(jié)點(diǎn) + 1個(gè)群集管理服務(wù)器 + 2個(gè)負(fù)載均衡 = 5
因?yàn)槿杭芾矸?wù)器沒(méi)有使用多少資源,系統(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 - 它
可以用來(lái)監(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 http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-max-5.0.19-linux-i686-\
glibc23.tar.gz/from/http://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è)非常簡(jiǎn)單的初始化
腳本和相應(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 http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-max-5.0.19-linux-i686-\
glibc23.tar.gz/from/http://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
四 測(cè)試MySQL群集
我們的MySQL群集配置工作已經(jīng)完成,現(xiàn)在是測(cè)試它的時(shí)間了。在群集管理服務(wù)器
(loadb1.test.com)上,運(yùn)行群集管理客戶端ndb_mgm來(lái)檢查群集節(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è)測(cè)試數(shù)據(jù)庫(kù),并創(chuàng)建一個(gè)測(cè)試表,
填入一些測(cè)試數(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語(yǔ)句:我們想群集起來(lái)的所有數(shù)據(jù)庫(kù)的表,必須使用 ENGINE=NDBCLUSTER!
如果你使用其它的ENGINE,那么群集將不會(huì)工作?。?/p>
SELECT出的結(jié)果應(yīng)該是:
mysql> SELECT * FROM testtable;
+
關(guān)鍵詞標(biāo)簽:MySQL,服務(wù)器,負(fù)載均衡
相關(guān)閱讀
熱門文章 詳細(xì)介紹查詢優(yōu)化技術(shù)在現(xiàn)實(shí)系統(tǒng)中的運(yùn)用 教你在MySQL 5.0以上版本中配置主從庫(kù) 適宜做簡(jiǎn)單搜索的MySQL數(shù)據(jù)庫(kù)全文索引 如何在Unix系統(tǒng)環(huán)境下安裝MySQL數(shù)據(jù)庫(kù)
人氣排行 配置高可用性的MySQL服務(wù)器負(fù)載均衡群集 教你在MySQL 5.0以上版本中配置主從庫(kù) 個(gè)人經(jīng)驗(yàn)總結(jié):完全卸載MySQL數(shù)據(jù)庫(kù)5.0 適宜做簡(jiǎn)單搜索的MySQL數(shù)據(jù)庫(kù)全文索引 MySQL環(huán)境下導(dǎo)入數(shù)據(jù)時(shí)是否需要禁用索引 講解MaxDB數(shù)據(jù)庫(kù)和MySQL數(shù)據(jù)庫(kù)的主要差別 數(shù)據(jù)庫(kù)應(yīng)用經(jīng)驗(yàn):如何簡(jiǎn)單安裝MySQL數(shù)據(jù)庫(kù) 如何在Unix系統(tǒng)環(huán)境下安裝MySQL數(shù)據(jù)庫(kù)