Ubuntu帶的mySQL服務軟件包 已經包含了mySQL羣集所需的3個組件:node
mySQLmysql
mySQL NDBsql
mySQL NDB Management 數據庫
mySQL使用NDB來實現羣集,NDB是一種「內存中」的存儲引擎,可用性高、數據一致性好。ubuntu
數據保存在存儲節點(Data Nodes)中,也就是圖中的ndbd節點。SQL語句在SQL節點上執行,也就是圖中的mySQLd節點,羣集中的右下角DNB管理服務器也就是ndb_mgmd節點。安全
關於mySQL羣集的3個主要組成部分,咱們來介紹一下。服務器
負載均衡節點 是用來訪問羣集數據的。網絡
存儲節點 是用來保存羣集數據的 其服務的啓停是由腳本/etc/init.d/mysql-ndb來管理的。架構
管理節點 用來管理羣集內的其餘節點,好比配置信息,啓動或中止及誒單,執行備份等。其服務的啓停是由/etc/init.d/mysql-ndb-mgm腳本管理的,因爲這類節點是管理者,該節點必須先啓動,其餘兩類節點再啓動。負載均衡
如下操做系統均是ubuntu server 11.10
安裝的Mysql版本mysql-server-5.1
安裝的mysql羣集版本mysql-cluster-server-5.1
兩個數據節點 Data1和Data2
一個管理節點mgm
要求這些虛擬機都能訪問Internet,由於安裝mysql-server-5.1和mysql-cluster-server-5.1都須要從internet下載安裝包。
IP地址和計算機名稱以下所示
1. 克隆系統
使用安裝了mySQL的ubuntu克隆出新的系統,更改服務器名稱和IP地址。
data1的IP地址192.168.80.223 服務器名稱爲data1
data2的IP地址爲192.168.80.224 服務器名稱爲data2
mgm的地址爲192.168.80.225 服務器名稱爲mgm
2. 禁用防火牆
在三個節點上禁用防火牆。
ufw disable
管理節點須要
3. 安裝管理節點
root@mgm:~# apt-get install mysql-server-5.1
root@mgm:~# apt-get install mysql-cluster-server-5.1
由於已經安裝了mySQL,因此只須要安裝mysql-cluster-server-5.1
設置mysql管理員密碼
4. 配置mgm
在mgm服務器上完成
5. 建立配置文件
root@mgm:~# vi /etc/mysql/ndb_mgmd.cnf
6. 編輯配置文件 去掉註釋
[NDBD DEFAULT]
NoOfReplicas=2 #每一個數據節點的鏡像數量
DataMemory=10MB #每一個數據節點中給數據分配的內存
IndexMemory=25MB #每一個數據節點中給索引分配的內存
MaxNoOfTables=256
MaxNoOfOrderedIndexes=256
MaxNoOfUniqueHashIndexes=128
[MYSQLD DEFAULT]
[NDB_MGMD DEFAULT]
[TCP DEFAULT]
#The NDB Management Node (this one)
[NDB_MGMD]
Id=1 #管理節點ID,羣集中每一個節點都有獨立的id
HostName=192.168.80.225 #管理節點IP
DataDir=/var/lib/mysql-cluster #管理節點數據目錄
#the first NDB Data Node
[NDBD]
#數據節點配置
Id=2
HostName=192.168.80.223
DataDir=/var/lib/mysql-cluster
#the second NDB Data Node
[NDBD]
#數據節點配置
Id=3
HostName=192.168.80.224
DataDir=/var/lib/mysql-cluster
#the first mySQL node
[MYSQLD]
#mysql節點
Id=4
HostName=192.168.80.223 #指定HostName代表能夠鏈接數據節點的sql節點地址
#若是不寫該地址,代表任意地址的sql節點均可以鏈接
#the second mySQL node
[MYSQLD]
Id=5
HostName=192.168.80.224
7. 啓動服務管理服務
/etc/init.d/mysql-ndb-mgm restart
在如下兩個服務器配置data1和data2進行配置。
8. 安裝mysql和mysql-cluster
先安裝mysql服務器,若是已經安裝,只須要安裝mysql-cluster-server-5.1
root@data2:~# apt-get install mysql-server-5.1
root@data2:~# apt-get install mysql-cluster-server-5.1
9. 配置my.cnf
root@data1:~# vi /etc/mysql/my.cnf
將如下文本按圖示位置拷貝到配置文件
ndbcluster
ndb-connectstring=192.168.80.225
[MYSQL_CLUSTER]
ndb-connectstring=192.168.80.225
10. 啓動mysql服務,或重啓mySQL服務 restart,若是啓動失敗,請仔細查看配置。
root@data1:~# /etc/init.d/mysql start
* Starting MySQL database server mysqld [ OK ]
11. 啓動NDB服務 start-initial是初始化,第一次啓動使用該參數,之後重啓該服務使用restart參數。
root@data1:~# /etc/init.d/mysql-ndb start-initial
* Initial start of MySQL NDB Data Node ndbd 2012-03-29 15:18:18 [ndbd] INFO -- Angel connected to '192.168.80.201:1186'
2012-03-29 15:18:18 [ndbd] INFO -- Angel allocated nodeid: 3
[ OK ]
12. 在data2上執行data1上全部步驟
13. 在管理節點mgm上測試配置存儲節點
輸入如下命令,進入mgm客戶端界面
Ndb_mgm
Show 注意 必須出現以下輸出才能,能夠看到一個管理節點,兩個mysql數據庫,兩個存儲節點ndb,在這裏NDB和mySQL是同一個服務器。
若是一個斷掉data1的網卡,
再次查看狀態
14. 鏈接data1網卡
Quit命令退出
若是鏈接出現問題,必須在兩個存儲節點,重啓兩個服務,直到成功爲止。
配置爲羣集的mysql,建立的數據庫可以自動同步到其餘存儲節點。建立表時使用engine=ndbcluster做爲參數,可以將表放置到羣集中,自動在多個mysql同步數據。
15. 查看data1和data2上現有數據庫
16. 在data1上建立一個數據庫db1
17. 在data2上建立數據庫
18. 在羣集環境中建立數據庫和表
在data1數據存儲節點建立一個數據db1,在該數據庫建立一個表,該表放置於羣集中。若是建立表時不添加engine=ndbcluster;則該表只存在域data1,不會複製到data2。
注意:
mysql> use db1;
mysql> create table t1 (sid int,sname varchar(20))engine=ndbcluster;
mysql> insert t1 values (1,'han');
mysql> create table t2 (sid int,sname varchar(20));
mysql> insert t2 values (1,'han');
19. 在data2上查看
能夠看到db1的數據庫中出現t1表。數據也複製過來。
在data2上插入一條記錄
20. 在data1上查看
發如今data2上插入的記錄再data1也出現。
若是服務器斷電須要重啓,首先啓動mgm節點,再開啓存儲節點。一切正常。
羣集關係一旦產生,管理節點能夠關機,兩個存儲節點照樣複製功。
廣告