標籤:
原文地址:http://www.it165.net/database/html/201403/5678.html
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
[mysqld]
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配置:
[[email protected] ~]# mkdir /var/log/my-cluster [[email protected] ~]# 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 [mysqld] nodeid=2 hostname=192.168.1.20 [mysqld] nodeid=3 hostname=192.168.1.30 [ndbd] nodeid=4 hostname=192.168.1.40 datadir=/var/log/mysql-cluster [ndbd] nodeid=5 hostname=192.168.1.50 datadir=/var/log/mysql-cluster [[email protected] ~]# 註:ip地址為192.168.1.1 |
第二步:server2和server3的配置:
[[email protected] ~]# 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 [[email protected] ~]# vim /etc/my.cnf [[email protected] ~]# cat /etc/my.cnf [mysqld] ndbcluster default-storage-engine=ndbcluster [mysql_cluster] ndb-connectstring=192.168.1.1 [[email protected] ~]# 註:server3和server2配置相同,ip地址為192.168.1.30 |
第三步:server4和server5上的配置:
[[email protected] ~]# 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 [[email protected] ~]# vim /etc/my.cnf [[email protected] ~]# cat /etc/my.cnf [mysqld] datadir=/var/log/mysql-cluster ndb-connectstring=192.168.1.1 ndbcluster [mysql_cluster] ndb-connectstring=192.168.1.1 [[email protected] ~]# |
第四步:
首先啟動管理主機server1 [[email protected] Desktop]# ndb_mgmd -f /etc/my-cluster.ini MySQL Cluster Management Server mysql-5.6.14 ndb-7.3.3 [[email protected] 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: [[email protected] 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 [[email protected] Desktop]# server5: [[email protected] 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 [[email protected] Desktop]# 最後在server2和server3上開啟mysql服務: [[email protected] ~]# service mysql restart Shutting down MySQL.... [ OK ] Starting MySQL..... [ OK ] [[email protected] ~]# [[email protected] Desktop]# service mysql restart Shutting down MySQL..... [ OK ] Starting MySQL.... [ OK ] [[email protected] Desktop]# 驗證:在server1上通過show命令查看是否串連成功 ndb_mgm> show Cluster Configuration --------------------- [ndbd(NDB)] 2 node(s) 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) [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 @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) ndb_mgm> |
mysql叢集執行個體