一、實驗介紹
MYsql資料庫叢集由三部分組成,管理節點、存儲節點和SQL節點。
管理節點是用來管理存儲節點和SQL節點的,存儲節點和SQL節點都要與管理節點通信;
存儲節點是用來負載均衡存儲資料,所用的存儲引擎為NDB;
SQL節點是對外接口,用來與應用程式進行通信,應用程式隻能通路它;
配置檔案有兩種:管理節點配置檔案和普通節點配置檔案,
config.ini是管理節點配置檔案;my.cnf是資料節點和SQL節點配置檔案。
config.ini檔案中[ndb_mgmd]指明管理節點位址,[ndbd]指明資料節點位址,[mysqld]指明SQL節點位址。
一、 搭建實驗環境
1、建立三台虛拟機,網卡選用VMnet3,機器IP分别是:
linuxtro1:172.16.10.5
linuxtro2:172.16.10.6
linuxtro3:172.16.10.7
2、Linux作業系統版本:RedHat企業版5.4
3、Mysql資料庫版本:mysql-max-5.1.5-alpha-linux-i686-glibc23.tar
二、安裝操作步驟
1、 将下載下傳好的mysql軟體包分别傳到虛拟機中,由于linuxtro1和linuxtro2的配置是相同的,這裡就以linuxtro2為例進行配置,将mysql包複制到/usr/local/目錄下,并解壓之。如下圖:
<a href="http://linuxtro.blog.51cto.com/attachment/201010/21/1239505_1287631347qQvF.jpg"></a>
2、将解壓後的軟體包重命名為mysql,然後建立mysql使用者群組,如圖:
<a href="http://linuxtro.blog.51cto.com/attachment/201010/21/1239505_1287631350G539.jpg"></a>
3、執行scripts/mysql_install_db --user=mysql指令建立mysql資料,如圖:
<a href="http://linuxtro.blog.51cto.com/attachment/201010/21/1239505_1287631353yX19.jpg"></a>
4、将/usr/local/mysql/support-files/my-medium.cnf檔案複制到 /etc/my.cnf下,修改/etc/my.cnf配置檔案,在第38行處添加兩行,如圖:
ndbcluster
ndb-connectstring=172.16.10.7
<a href="http://linuxtro.blog.51cto.com/attachment/201010/21/1239505_1287631358a6AS.jpg"></a>
在檔案尾部添加如下6行,
[ndbd]
connect-string=172.16.10.7
[ndb_mgm]
[ndb_mgmd]
config-file=/var/lib/mysql-cluster
完成後,儲存退出。并在/var/lib/下建立mysql-cluster檔案,如圖:
<a href="http://linuxtro.blog.51cto.com/attachment/201010/21/1239505_1287631361bCpx.gif"></a>
5、為友善實驗進行,建立一些快捷指令,當然也可不建立。
将mysql.server檔案複制到init.d檔案下,增加可執行權限,使其為開機自啟動,并建立ndbd資料節點連結檔案,然後在/etc/rc.local 檔案中最後新增一行ndbd,
如圖:
<a href="http://linuxtro.blog.51cto.com/attachment/201010/21/1239505_128763136345WI.jpg"></a>
linuxtro1的配置與linuxtro2配置完全相同,請參照之。
6、接下來,就是配置管理節點linuxtro3了。前面步驟大緻相同,解壓縮,檔案重命名為mysql,建立mysql使用者群組,并修改檔案權限。将/usr/local/mysql/support-files/my-medium.cnf檔案複制到/etc/my.cnf中。修改my.cnf檔案,在38行添加2行,在檔案尾部添加6行,修改完畢後,儲存退出。如圖:
<a href="http://linuxtro.blog.51cto.com/attachment/201010/21/1239505_128763136602zh.jpg"></a>
7、建立/var/lib/mysql-cluster檔案夾,并在該目錄下建立config.ini檔案
<a href="http://linuxtro.blog.51cto.com/attachment/201010/21/1239505_1287631369aSY7.jpg"></a>
#touch config.ini
#vi config.ini
[NDBD DEFAULT]
NoOfReplicas= 2
DataDir= /var/lib/mysql-cluster
[NDB_MGMD]
Hostname= 172.16.10.7
[NDBD]
HostName= 172.16.10.6
HostName= 172.16.10.5
[MYSQLD]
如圖所示:
<a href="http://linuxtro.blog.51cto.com/attachment/201010/21/1239505_1287631371SnK7.gif"></a>
8、接下來需要設定一些快捷指令,将mysql.server檔案複制到init.d檔案下,增加可執行權限,使其為開機自啟動,并建立ndb_mgm和ndb_mgmd管理節點連結檔案,
<a href="http://linuxtro.blog.51cto.com/attachment/201010/21/1239505_1287631373WNUH.jpg"></a>
9、在/etc/rc.local檔案末尾添加如下一行,并儲存退出。
/usr/local/mysql/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini
如圖:
<a href="http://linuxtro.blog.51cto.com/attachment/201010/21/1239505_12876313766yDy.jpg"></a>
三、啟動mysql叢集服務
【注】
1、mysql叢集在啟動過程中必須提前啟動管理節點伺服器,等管理節點啟動成功後,再啟動其它節點。
2、關閉整個叢集的時候最好最後關閉管理節點
3、管理節點當機後,剩下的某台主機再當機後,這樣就失去了叢集的意義了。管理節點要保證7x24。
先啟動作為管理節點的伺服器(linuxtro3):
執行/usr/local/mysql/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini
指令,然後啟動mysql資料庫。
<a href="http://linuxtro.blog.51cto.com/attachment/201010/21/1239505_1287631379hoRk.jpg"></a>
然後再啟動作為普通節點的linuxtro1和linuxtro2,
執行/usr/local/mysql/bin/ndbd –initial 指令
注:隻在第一次啟動ndbd時使用--initial參數
然後啟動mysql資料庫,指令為:service mysqld start
四、檢查工作狀态
在linuxtro3上執行ndb_mgm指令,如顯示如下資訊則說明工作正常!如圖:
<a href="http://linuxtro.blog.51cto.com/attachment/201010/21/1239505_1287631382FUGK.jpg"></a>
接下來測試mysql,現在linuxtro1的test資料庫上建立一張linuxtro表,來驗證三台機器的mysql是否能夠同步。如圖:
此處mysql沒有設定密碼,在實際生産環境中建議設定資料庫的root密碼。
<a href="http://linuxtro.blog.51cto.com/attachment/201010/21/1239505_1287631385USCq.jpg"></a>
現在到linuxtro2上的資料庫中檢視資料是否已經同步,如圖:
<a href="http://linuxtro.blog.51cto.com/attachment/201010/21/1239505_12876313899jOW.jpg"></a>
資料已經成功同步到linuxtro2資料庫裡面了,在linuxtro3資料庫裡面,同樣可以看到同步過來的資料。
五、破壞性測試
接下來,真正的考驗來了,假設linuxtro1伺服器當機了,資料庫内資料丢失。為了模拟這種場景,在linuxtro1将ndbd程序殺掉,以達到破壞資料庫叢集的目的。如圖:
<a href="http://linuxtro.blog.51cto.com/attachment/201010/21/1239505_1287631392zTa9.jpg"></a>
現在切換到另外的資料庫伺服器上,使用SELECT進行查詢,如圖:
<a href="http://linuxtro.blog.51cto.com/attachment/201010/21/1239505_1287631395v4qb.jpg"></a>
與此同時,在管理節點linuxtro3伺服器上,可以使用show指令檢視到被破壞的資料庫伺服器。如圖:
<a href="http://linuxtro.blog.51cto.com/attachment/201010/21/1239505_1287631399HNGD.jpg"></a>
測試完成後,隻需要重新啟動被破壞伺服器的ndbd程序即可恢複資料庫。
本文轉自 linuxtro 51CTO部落格,原文連結:http://blog.51cto.com/linuxtro/408611,如需轉載請自行聯系原作者