mysql叢集
叢集/群集:用一組伺服器提供相同的服務
LB叢集:負載均衡叢集(多台伺服器共同工作)
HA叢集:高可靠叢集(一個做備用)
一、mysql叢集架構中的主機的角色:
類型
服務程序
主要用途
管理節點
ndb_mgmd
提供叢集配置,啟動或停止節點,
執行備份、群集監控等任務
管理節點必須第一個啟動
資料節點
ndbd (單線程)
ndb_mtd (多線程)
存儲實際的表記錄,可以有多個副本
推薦至少2個資料節點
SQL節點
mysqld
可了解為支援NDB的标準MySQL伺服器,
僅存儲表結構、獨立的使用者授權
面向用戶端提供使用者鑒權、SQL查詢等
通路服務
二、安裝
不需要安裝mysql-server軟體了,是以可以關掉mysql服務
在叢集中的所有主機上安裝mysql-cluster叢集軟體
mysql-cluster軟體提供3種程序:
1,mysqld程序:供使用者通路和執行sql語句
2,資料程序ndbd:存儲資料
3,管理程序mgmd:管理叢集中的所有的主機
三、具體思路:
1,配置管理節點:server1
ip位址:192.168.1.1
mkdir/var/log/my-cluster
vim/etc/my-cluster.ini (該檔案不存在,需要建立)
[ndbd default] //設定資料節點的預設參數
NoOfReplicas=2 //保留2份資料拷貝
DataMemory=80M //資料緩存大小
IndexMemory=18M //索引緩存大小
[ndb_mgmd] //設定管理節點
nodeid=1 //管理節點的辨別
hostname=192.168.1.1 //管理節點的IP位址
datadir=/var/log/my-cluster //工作目錄
[mysqld] //設定SQL節點server1
nodeid=2 //ID辨別
hostname=192.168.1.20 //此節點的IP位址
[mysqld] //設定SQL節點server2
nodeid=3
hostname=192.168.1.30
[ndbd] //設定資料節點server4
nodeid=4 //ID辨別
hostname=192.168.1.40 //此節點的IP位址
datadir=/var/log/mysql-cluster //工作目錄
[ndbd] //設定資料節點server5
nodeid=5
hostname=192.168.1.50
datadir=/var/log/mysql-cluster
2,配置sql節點(server2,server3)
編輯sql節點的配置檔案/etc/my.cnf(本身不存在,需要建立)
vim /etc/my.cnf
[mysqld]
ndbcluster //使用ndb叢集引擎
default-storage-engine=ndbcluster //設定預設引擎
[mysql_cluster]
ndb-connectstring=192.168.1.1 //指定管理節點ip位址
server3上配置和server2相同
3,配置資料節點(server4,server5)
首先建立server1上配置檔案指定的檔案夾:
mkdir/var/log/mysql-cluster
然後給資料節點編輯配置檔案(/etc/my.cnf 本身不存在,需要建立)
vim /etc/my.cnf
datadir=/var/log/mysql-cluster //工作目錄,在管理節點上配置檔案指定的那個目錄
ndb-connectstring=192.168.1.1 //管理本台主機的ip位址
ndbcluster //使用ndb叢集存儲引擎為ndbcluster
[mysql_cluster] //指定管理叢集的主機
ndb-connectstring=192.168.1.1 //指定管理叢集的ip位址
注:server4和server5上的配置一樣
4,初始化授權庫
5,啟動所有server的服務
第一個:先啟動管理主機上的管理程序
在server1上:
ndb_mgmd -f /etc/my-cluster.ini //啟動管理程序的時候加載配置檔案my-cluster.ini
ndb_mgm //登入
show //檢視急群衆所有主機的狀态
關閉該程序使用:pkill-9 ndbd_mgmd
第二個:啟動資料節點主機上的ndbd程序(server4、server5)
在server4和server5上:
ndbd //開啟ndbd程序
如果想要關閉,使用kill殺死程序号或pkill殺死ndbd程序
第三個:啟動sql節點(server2,server3)
啟動mysql服務
service mysql start
MySQL叢集配置示例:
環境:
server1:192.168.1.1
server2:192.168.1.20
server3:192.168.1.30
server4:192.168.1.40
server5:192.168.1.50
第一步:server1配置:
[root@server1 ~]# mkdir /var/log/my-cluster
[root@server1 ~]# cat /etc/my-cluster.ini
[ndbd default]
NoOfReplicas=2
DataMemory=80M
IndexMemory=18M
[ndb_mgmd]
nodeid=1
hostname=192.168.1.1
datadir=/var/log/my-cluster
nodeid=2
hostname=192.168.1.20
nodeid=3
[ndbd]
nodeid=4
hostname=192.168.1.40
datadir=/var/log/mysql-cluster
nodeid=5
hostname=192.168.1.50
[root@server1 ~]#
注:ip位址為192.168.1.1
第二步:server2和server3的配置:
[root@server2 ~]# ifconfig | grep addr
eth1 Link encap:Ethernet HWaddr 00:0C:29:22:B2:31
inet addr:192.168.1.20 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe22:b231/64 Scope:Link
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
[root@server2 ~]# vim /etc/my.cnf
[root@server2 ~]# cat /etc/my.cnf
ndbcluster
default-storage-engine=ndbcluster
ndb-connectstring=192.168.1.1
[root@server2 ~]#
注:server3和server2配置相同,ip位址為192.168.1.30
第三步:server4和server5上的配置:
[root@server4 ~]# ifconfig | head -2
eth1 Link encap:Ethernet HWaddr 00:0C:29:B6:6A:99
inet addr:192.168.1.40 Bcast:192.168.1.255 Mask:255.255.255.0
[root@server4 ~]# vim /etc/my.cnf
[root@server4 ~]# cat /etc/my.cnf
ndbcluster
[root@server4 ~]#
第四步:
首先啟動管理主機server1
[root@server1 Desktop]# ndb_mgmd -f /etc/my-cluster.ini
MySQL Cluster Management Server mysql-5.6.14 ndb-7.3.3
[root@server1 Desktop]# ndb_mgm
-- NDB Cluster -- Management Client --
ndb_mgm> show
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=4 (not connected, accepting connect from 192.168.1.40)
id=5 (not connected, accepting connect from 192.168.1.50)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.1.1 (mysql-5.6.14 ndb-7.3.3)
[mysqld(API)] 2 node(s)
id=2 (not connected, accepting connect from 192.168.1.20)
id=3 (not connected, accepting connect from 192.168.1.30)
ndb_mgm>
然後再server4和server5上啟動ndbd程序
server4:
[root@server4 Desktop]# ndbd
2014-03-21 18:35:42 [ndbd] INFO -- Angel connected to '192.168.1.1:1186'
2014-03-21 18:35:42 [ndbd] INFO -- Angel allocated nodeid: 4
[root@server4 Desktop]#
server5:
[root@server5 Desktop]# ndbd
2014-03-21 19:57:10 [ndbd] INFO -- Angel connected to '192.168.1.1:1186'
2014-03-21 19:57:10 [ndbd] INFO -- Angel allocated nodeid: 5
[root@server5 Desktop]#
最後在server2和server3上開啟mysql服務:
[root@server2 ~]# service mysql restart
Shutting down MySQL.... [ OK ]
Starting MySQL..... [ OK ]
[root@server3 Desktop]# service mysql restart
Shutting down MySQL..... [ OK ]
Starting MySQL.... [ OK ]
[root@server3 Desktop]#
驗證:在server1上通過show指令檢視是否連接配接成功
ndb_mgm> show
id=4 @192.168.1.40 (mysql-5.6.14 ndb-7.3.3, Nodegroup: 0, *)
id=5 @192.168.1.50 (mysql-5.6.14 ndb-7.3.3, Nodegroup: 0)
id=2 @192.168.1.20 (mysql-5.6.14 ndb-7.3.3)
id=3 @192.168.1.30 (mysql-5.6.14 ndb-7.3.3)
本文轉自 murongqingqqq 51CTO部落格,原文連結:http://blog.51cto.com/murongqingqqq/1381923