一、准備
1、准備服務器
計划建立有5個節點的MySQL CLuster體系,需要用到5台服務器,但是我們做實驗時沒有這么多機器,可以只用2台,我就是一台本機,一台虛擬機搭建了有5個節點的MySQL CLuster體系,將一個SQL節點一個數據節點一個SQL節點放在了一台服務器上(192.168.1.252),將另一個SQL節點和一個數據節點放在了另外一台服務器上(192.168.1.52)。
節點 | 對應的IP和端口 |
管理節點(1個) | 192.168.1.252 |
SQL節點 (2個) | 192.168.1.252:3331 |
192.168.1.52:3331 | |
數據節點 (2個) | 192.168.1.252 |
192.168.1.52 |
2、准備軟件包
現在的mysql提供了一個專門作集群的安裝包,這樣就不用一個個的下載所需要的工具了。我在網上找到了最新的而且下載比較快的資源,第一步先是下載,有200M左右。
cd /var/tmp
wget http://mysql.ntu.edu.tw/Downloads/MySQL-Cluster-7.1/
mysql-cluster-gpl-7.1.9a-linux-i686-glibc23.tar.gz
二、安裝
1、數據節點和SQL節點
第一步 添加mysql用戶和組,這是必需的。
groupadd mysql
useradd -g mysql mysql
第二步 開始安裝,下載的版本是免編譯的,復制過來就可以用了。
cd /var/tmp
tar -C /usr/local-zxvf mysql-cluster-gpl-7.1.9a-linux-i686-glibc23.tar.gz
cd /usr/local
mv mysql-cluster-gpl-7.1.9a-linux-i686-glibc23.tar.gz mysql
第三步 在mysql修改目錄權限,這也是必需的,不然第四步會報錯的。
cd mysql
chown -R root .
chown -R mysql data
chgrp -R mysql .
第四步 安裝初始的數據庫表
scripts/mysql_install_db --user=mysql
第五步 設置mysql服務為開機自啟動
cp support-files/mysql.server /etc/rc.d/init.d/mysqld
chmod +x /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
第六步 啟動mysql服務,如果報錯請參考
service mysqld start
這六步,在252和52服務器上都執行一次,數據節點和SQL節點就算安裝好了。
2、管理節點
管理節點的安裝更簡單,只要在252服務器上復制些文件出來就行了,雖然只有一步,便這一步在目前環境下(管理節點和SQL節點在同一台服務器上)也不是必需的。
cd mysql
cp bin/ndb_mgm*/usr/local/bin
cd /usr/local/bin
chmod +x ndb_mgm*
管理節點只要ndb_mgm和ndb_mgmd兩個文件和一個配置文件即可,因此把這三個文件復制到那里,那里就是管理節點了。ndb_mgmd是mysql cluster管理服務器,ndb_mgm是客戶端管理工具,等一下會用到它們的。到目前為止兩個SQL節點兩個數據節點和一個管理節點都安裝完成了,但是還不能工作,得進行配置,把這幾個節點聯系在一起協同工作。
三、配置
1、數據節點和SQL節點
mysql服務啟動時會默認加載/etc/my.cnf作為其配置文件,要將一個mysql服務器配置成一個數據節點和SQL節點也非常的簡單,這是配置前的my.cnf的內容:
[client]
port =3306
socket =/tmp/mysql.sock
[mysqld]
basedir =/usr/local/mysql/
datadir =/usr/local/mysql/data
user = mysql
log-error =/var/lib/mysql/mysqld.err
只要在內容結尾加上4行就將這個mysql服務器變成了一個數據節點和SQL節點。
ndbcluster #運行NDB存儲引擎
#指定管理節點 以上兩行聲明其為SQL節點
ndb-connectstring=192.168.1.252
[mysql_cluster]
#指定管理節點 以上兩行聲明其為數據節點
ndb-connectstring=192.168.1.252
注意兩台服務器都得這樣配置。
2、管理節點
管理節點的配置復雜一點,在管理服務器252的/var/lib/mysql-cluster/目錄中創建config.ini文件。
cd /var/lib
mkdir mysql-cluster
cd mysql-cluster
vim config.ini
在config.ini文件中添加以下內容:
[NDBD DEFAULT]
NoOfReplicas=1 #每個數據節點的鏡像數量
DataMemory=500M #每個數據節點中給數據分配的內存
IndexMemory=300M #每個數據節點中給索引分配的內存
[TCP DEFAULT]
portnumber=2202 #數據節點的默認連接端口
[NDB_MGMD] #配置管理節點
hostname=192.168.1.252
datadir=/var/lib/mysql-cluster/ #管理節點數據(日志)目錄
[NDBD] #數據節點配置
hostname=192.168.1.252
datadir=/usr/local/mysql/data/ #數據節點目錄
[NDBD]
hostname=192.168.1.52
datadir=/usr/local/mysql/data/
[MYSQLD] #SQL節點目錄
hostname=192.168.1.252
[MYSQLD]
hostname=192.168.1.52
[NDBD DEFAULT]:表示每個數據節點的默認配置在每個節點的[NDBD]中不用再寫這些選項,只能有一個。
[NDB_MGMD]:表示管理節點的配置,只有一個。
[NDBD]:表示每個數據節點的配置,可以有多個。
[MYSQLD]:表示SQL節點的配置,可以有多個,分別寫上不同SQL節點的IP地址,也可以什么都不寫,只保留一個空節點,表示任意一個IP地址都可以進行訪問,此節點的個數表明了可以用來連接數據節點的SQL節點總數。
四、啟動
1、管理節點
mysql cluster 需要各個節點都 進行啟動后才可以工作,節點的啟動順序為管理節點->數據節點->SQL節點。首先啟動管理節點
cd /usr/local/bin
./ndb_mgmd -f /var/lib/mysql-cluster/config.ini
命令行中的ndb_mgmd是mysql cluster的管理服務器,后面的-f表示后面的參數是啟動的參數配置文件。如果在啟動后過了幾天又添加了一個數據節點,這時修改了配置文件啟動時就必須加上--initial參數,不然添加的節點不會作用在mysql cluster中。
./ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial
啟動時可能會報個WARNING,如WARNING -- at line 7: [TCP] portnumber is deprecated,這個不用管。可以正常工作的。
2、數據節點
安裝后第一次啟動數據節點時要加上--initial參數,其它時候不要加,除非是在備份、恢復或配置變化后重啟時。
cd mysql/bin/ndbd --initial
如果顯示以下信息說明啟動完成:
2010-12-31 12:48:03 [ndbd] INFO -- Angel connected to '192.168.1.252:1186'
2010-12-31 12:48:03 [ndbd] INFO -- Angel allocated nodeid: 3
3、SQL節點
service mysqld start
4、客戶端管理
cd /usr/local/bin
./ndb_mgm
這時就進入到客戶端,可以對mysql cluster進行各項操作,進入后會有ndb_mgm > 提示符出現,首先來查看各節點的連接情況,在ndb_mgm> 提示符下輸入show:
ndb_mgm> show
ClusterConfiguration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @192.168.1.252 (mysql-5.1.51 ndb-7.1.9,Nodegroup:0,Master)
id=3 @192.168.1.52 (mysql-5.1.51 ndb-7.1.9,Nodegroup:1)
[ndb_mgmd(MGM)]1 node(s)
id=1 @192.168.1.252 (mysql-5.1.51 ndb-7.1.9)
[mysqld(API)] 2 node(s)
id=4 @192.168.1.252 (mysql-5.1.51 ndb-7.1.9)
id=5 @192.168.1.52 (mysql-5.1.51 ndb-7.1.9)
可以看到各個節點已經連接上了,至此,mysql cluster配置完成。
五、關閉
mysql cluster的關閉也很簡單,只需在ndb_mgm> 提示符下輸入 shutdown即可,這時會顯示各節點的關閉信息,再輸入exit即可退出ndb_mgm管理,回到shell中。雖然mysql cluster 關閉了,但是SQL節點的mysql服務並不會停止的。接下來就可以做各種試驗了。