天天看點

RedHat企業版5.4下Mysql5.1叢集配置

一、實驗介紹

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,如需轉載請自行聯系原作者