安裝要求
- 安裝環境:CentOS-6.4
- 安裝方式:源碼編譯安裝
- 軟件名稱:mysql-cluster-gpl-7.2.6-linux2.6-x86_64.tar.gz
- 軟件安裝位置:/usr/local/mysql
- 數據存放位置:/var/mysql/data
- 日志存放位置:/var/mysql/logs
集群設計
首先設計集群的安裝分配方式,我共需要5台服務器,服務器分配如下:
- 管理節點: 172.16.172.133
- sql節點1: 172.16.172.132
- sql節點2: 172.16.172.134
- 數據節點1: 172.16.172.130
- 數據節點2: 172.16.172.131
設備的連接方式如
注意:目前這種設計存在的問題是管理節點是單點的。
管理節點
管理節點安裝
安裝管理節點(172.16.172.133)
[root@localhost /]# groupadd mysql [root@localhost /]# useradd mysql -g mysql [root@localhost /]# cd /usr/local [root@localhost local]# tar -zxv -f mysql-cluster-gpl-7.2.6-linux2.6-x86_64.tar.gz [root@localhost local]# mv mysql-cluster-gpl-7.2.6-linux2.6-x86_64 mysql [root@localhost local]# chown -R mysql:mysql mysql [root@localhost local]# cd mysql [root@localhost mysql]# scripts/mysql_install_db –user=mysql
管理節點配置
[root@localhost ~]# mkdir /var/lib/mysql-cluster [root@localhost ~]# cd /var/lib/mysql-cluster [root@localhost mysql-cluster]# vi + /var/lib/mysql-cluster/config.ini
在config.ini 中添加以下內容:
[NDBD DEFAULT] NoOfReplicas=1 [TCP DEFAULT] portnumber=3306 [NDB_MGMD] #設置管理節點服務器 HostName=172.16.172.133 DataDir=/var/mysql/data [NDBD] #設置存儲節點服務器(NDB節點) HostName=172.16.172.130 DataDir=/var/mysql/data [NDBD] #第二個NDB節點 HostName=172.16.172.131 DataDir=/var/mysql/data [MYSQLD] #設置SQL節點服務器 HostName=172.16.172.132 [MYSQLD] #第二個SQL節點 HostName=172.16.172.134
管理節點啟動
[root@localhost ~]# /usr/local/mysql/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini [root@localhost ~]# mkdir /var/mysql/logs [root@localhost ~]# netstat -lntpu
看到tcp 0 0 0.0.0.0:1186開放說明啟動正常
開啟管理節點服務器的1186端口
管理節點檢驗
執行以下操作:
[root@localhost /]# ndb_mgm // 管理節點 -- NDB Cluster -- Management Client -- ndb_mgm> show Connected to Management Server at: localhost:1186 Cluster Configuration --------------------- [ndbd(NDB)] 2 node(s) id=2 (not connected, accepting connect from 172.16.172.130) id=3 (not connected, accepting connect from 172.16.172.131) [ndb_mgmd(MGM)] 1 node(s) id=1 @192.168.15.231 (mysql-5.5.22 ndb-7.2.6) [mysqld(API)] 2 node(s) id=4 (not connected, accepting connect from 172.16.172.132) id=5 (not connected, accepting connect from 172.16.172.134)
管理節點關閉
[root@localhost /]# /usr/local/mysql/bin/ndb_mgm -e shutdown #成功后終端打印出以下信息 Connected to Management Server at: 172.16.172.133:1186 3 NDB Cluster node(s) have shutdown. Disconnecting to allow management server to shutdown.
數據節點
數據節點安裝
數據節點1: 172.16.172.130
數據節點2: 172.16.172.131
[root@localhost /]# groupadd mysql [root@localhost /]# useradd mysql -g mysql [root@localhost /]# cd /usr/local [root@localhost local]# tar -zxv -f mysql-cluster-gpl-7.2.6-linux2.6-x86_64.tar.gz [root@localhost local]# mv mysql-cluster-gpl-7.2.6-linux2.6-x86_64 mysql [root@localhost local]# chown -R mysql:mysql mysql [root@localhost local]# cd mysql [root@localhost mysql]# scripts/mysql_install_db --user=mysql [root@localhost mysql]# cp support-files/my-medium.cnf /etc/my.cnf [root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysqld
數據節點配置
對數據節點進行配置,執行以下操作:
[root@localhost mysql]# mkdir /var/mysql/data [root@localhost mysql]# mkdir /var/mysql/logs [root@localhost mysql]# vi /etc/my.cnf
向文件追加以下內容:
[MYSQLD] ndbcluster ndb-connectstring=172.16.172.133 [MYSQL_CLUSTER] ndb-connectstring=172.16.172.133 [NDB_MGM] connect-string=172.16.172.133
數據節點啟動
啟動此處時,管理節點服務器防火牆必須開啟1186,3306端口。
注意:只是在第一次啟動或在備份/恢復或配置變化后重啟ndbd時,才加–initial參數!
第一次啟動如下:
[root@localhost mysql]# /usr/local/mysql/bin/ndbd --initial 2013-01-30 13:43:53 [ndbd] INFO -- Angel connected to '172.16.172.133 :1186' 2013-01-30 13:43:53 [ndbd] INFO -- Angel allocated nodeid: 2
正常啟動方式:
[root@localhost mysql]# /usr/local/mysql/bin/ndbd
數據節點關閉
[root@localhost /]# /etc/rc.d/init.d/mysqld stop
或者
[root@localhost mysql]# /etc/init.d/mysql stop Shutting down MySQL.. SUCCESS! /usr/local/mysql/bin/mysqladmin -uroot shutdown
SQL節點安裝
SQL節點安裝
SQL節點和存儲節點(NDB節點)安裝相同,都執行以下操作;
sql節點1: 172.16.172.132
sql節點2: 172.16.172.134
SQL節點配置
[root@localhost /]# groupadd mysql [root@localhost /]# useradd mysql -g mysql [root@localhost /]# cd /usr/local [root@localhost local]# tar -zxv -f mysql-cluster-gpl-7.2.6-linux2.6-x86_64.tar.gz [root@localhost local]# mv mysql-cluster-gpl-7.2.6-linux2.6-x86_64 mysql [root@localhost local]# chown -R mysql:mysql mysql [root@localhost local]# cd mysql [root@localhost mysql]# scripts/mysql_install_db --user=mysql [root@localhost mysql]# cp support-files/my-medium.cnf /etc/my.cnf [root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysqld
執行以下操作:
[root@localhost mysql]# mkdir /var/mysql/data //創建存儲數據的文件夾 [root@localhost mysql]# mkdir /var/mysql/logs //創建存儲日志的文件夾 [root@localhost mysql]# vi /usr/local/mysql/my.cnf //修改配置文件
追加以下內容:
[MYSQLD] ndbcluster ndb-connectstring=172.16.172.133 [MYSQL_CLUSTER] ndb-connectstring=172.16.172.133 [NDB_MGM] connect-string=172.16.172.133
SQL節點啟動
執行以下操作:
[root@localhost mysql]# service mysqld start Starting MySQL.. SUCCESS!
SQL節點關閉
最直接的方式:
[root@localhost mysql]# /usr/local/mysql/bin/mysqladmin -uroot shutdown [root@localhost /]# /etc/rc.d/init.d/mysqld stop
或者
[root@localhost mysql]# /etc/init.d/mysql stop Shutting down MySQL.. SUCCESS!
功能測試
在管理節點(172.16.172.133)上查看服務狀態
[root@localhost ~]# /usr/local/mysql/bin/ndb_mgm -- NDB Cluster -- Management Client -- ndb_mgm> show Cluster Configuration --------------------- [ndbd(NDB)] 2 node(s) id=2 @172.16.172.130 (mysql-5.5.22 ndb-7.2.6, Nodegroup: 0, Master) id=3 @172.16.172.131 (mysql-5.5.22 ndb-7.2.6, Nodegroup: 1) [ndb_mgmd(MGM)] 1 node(s) id=1 @172.16.172.133 (mysql-5.5.22 ndb-7.2.6) [mysqld(API)] 2 node(s) id=4 @172.16.172.132 (mysql-5.5.22 ndb-7.2.6) id=5 @172.16.172.134 (mysql-5.5.22 ndb-7.2.6)
可以看到這里的數據節點、管理節點、sql節點都是正常的。
注意:
- 在建表的時候一定要用ENGINE=NDB或ENGINE=NDBCLUSTER指定使用NDB集群存儲引擎,或用ALTER TABLE選項更改表的存儲引擎。
- NDB表必須有一個主鍵,因此創建表的時候必須定義主鍵,否則NDB存儲引擎將自動生成隱含的主鍵。
- Sql節點的用戶權限表仍然采用MYISAM存儲引擎保存的,所以在一個Sql節點創建的MySql用戶只能訪問這個節點,如果要用同樣的用戶訪 問別的Sql節點,需要在對應的Sql節點追加用戶。雖然在MySql Cluster7.2版本開始提供了”用戶權限共享”。
數據同步性測試
在一個數據節點上進行相關數據庫的創建,然后到另外一個數據節點上看看數據是否同步。
第1步:
SQL節點1(172.16.172.132)上增加數據:
SQL節點1(172.16.172.132)上增加數據: [root@localhost mysql]# /etc/rc.d/init.d/mysqld status //檢驗mysql是否運行 [root@localhost mysql]# /etc/rc.d/init.d/mysqld start //啟動mysql [root@localhost mysql]# /usr/local/mysql/bin/mysql -u root -p Enter password: mysql> show databases; mysql> create database testdb2; mysql> use testdb2; mysql> CREATE TABLE td_test2 (i INT) ENGINE=NDB; //這里必須指定數據庫表的引擎為NDBCLUSTER,與配置文件中的名稱相同 mysql> INSERT INTO td_test2() VALUES (1); mysql> INSERT INTO td_test2() VALUES (152); mysql> SELECT * FROM td_test2;
第2步:
進入到SQL節點2(172.16.172.134)上查看數據
mysql> use testdb2; Database changed mysql> SELECT * FROM td_test2; +------+ | i | +------+ | 126 | | 1 | +------+ 2 rows in set (0.01 sec)
查看表的引擎是不是NDB:
mysql> show create table td_test2;
第3步:
反向測試,SQL節點2(172.16.172.134)上增加數據:
mysql> create database bb; mysql> use bb; mysql> CREATE TABLE td_test3 (i INT) ENGINE=NDB; mysql> INSERT INTO td_test3 () VALUES (98); mysql> SELECT * FROM td_test3;
SQL節點1(172.16.172.132)上查看數據:
mysql> use bb; Database changed mysql> SELECT * FROM td_test3; +------+ | i | +------+ | 98 | +------+ 1 row in set (0.00 sec)
關閉集群
先關閉管理節點,然后關閉SQL節點和數據節點。
集群啟動操作順序
要再次啟動集群,按照以下順序執行:
管理節點 ->數據節點 –> SQL節點
注意:此次啟動數據節點時不要加”–initial”參數。
MySQL雙主 + Keepalived主備自動切換方案一
MySQL雙主 + Keepalived主備自動切換方案二
MySQL主從 + Keepalived主從自動切換方案
MySQL雙主 + 多從高可用方案---MMM
MySQL + Pecemaker(Heartbeat) + DRBD主高可用
MySQL + RHCS 高可用方案
MySQL + Cluser 集群架構
Percona Xtradb Cluster 集群高可用性解決方案
管理節點
172.16.14.145 mgm1
172.16.14.150 mgm2
172.16.14.146 ndb1
172.16.14.147 ndb2
172.16.14.148 sql1
172.16.14.149 sql2
集群配置概述:
安裝版本:mysql cluster 7.3.5
操作系統 :centos6.5(X64)
軟件名稱
管理節點IP
數據節點
SQL節點IP:
數據節點
SQL節點IP:
配置ssh等效不要密碼登錄
配置hosts解析
配置本地yum源 6.5
安裝依賴包:yum install -y glibc perl libaio-devel
x32位系統要安裝兼容庫組:yum -y groupinstall "Compatibility libraries"
1. mysql舊版本清除:
首先使用如下命令來清理之前操作系統自帶的mysql安裝:
yum -y remove mysql
然后使用如下命令:
rpm -qa | grep mysql*
對於找到的2個剩余mysql包,請按照如下的命令格式予以刪除:
rpm -e --nodeps mysql-libs-5.1.71-1.el6.x86_64
每個節點都要那么做
關閉 /etc/init.d/iptables stop
/etc/init.d/ip6tables stop
chkconfig iptables off
chkconfig ip6tables off
vim /etc/selinux/config
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
#SELINUXTYPE=targeted 注釋掉這行
軟件安裝位置:/opt/local/mysql
數據存放位置:/opt/mysql/data SQL節點存儲數據的路徑
日志存放位置:/opt/mysql/logs
/opt/local/cluster 管理集群時收集的集群信息的存放路徑
機器描述:
192.168.100.1 : 管理節點
192.168.100.2 : SQL節點1
192.168.100.3 : SQL節點2
192.168.100.4 : 數據節點1
192.168.100.5 : 數據節點2
軟件需求:Linux下64位MySQL:mysql-cluster-gpl-7.2.8-linux2.6-x86_64.tar.gz
1、安裝管理節點:192.168.100.1
(1)把mysql-cluster-gpl-7.2.8-linux2.6-x86_64.tar.gz 解壓到 /usr/local/myql 下
(2)在mysql目錄下創建文件夾:mkdir /usr/local/myql/mysql-cluster
(3)在mysql目錄下創建文件夾:mkdir /usr/local/myql/cluster-conf
(4)編輯config.ini文件:vi /usr/local/mysql/cluster-conf/config.ini 內容如下:
[ndbd default]
NoOfReplicas=2
DataMemory=200M
IndexMemory=100M
[ndb_mgmd]
id=1
hostname=192.168.100.1
DataDir=/usr/local/mysql/mysql-cluster
[ndbd]
id=2
HostName=192.168.100.4
DataDir=/usr/local/mysql/ndbdata
[ndbd]
id=5
HostName=192.168.100.5
DataDir=/usr/local/mysql/ndbdata
[mysqld]
id=6
HostName=192.168.100.2
[mysqld]
id=7
HostName=192.168.100.3
2、安裝SQL節點 192.168.100.4 & 192.168.100.5
(1)把mysql-cluster-gpl-7.2.8-linux2.6-x86_64.tar.gz 解壓到 /usr/local/myql 下
(2)添加mysql用戶
groupadd mysql
useradd -g mysql mysql
(3)添加權限
chown -R mysql:mysql /usr/local/mysql
(4)拷貝配置文件
cp /usr/local/mysql/support-files/my-large.cnf /etc/my.cnf
(5)初始化數據庫
cd /usr/local/mysql
scripts/mysql_install_db --user=mysql
(6)拷貝守護進程所需文件
cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
(7)配置守護進程
chkconfig –add mysqld
chkconfig –level 35 mysqld on
(8)更改配置文件 vi /etc/my.cnf 內容如下:
[mysqld]
port = 3306
socket = /tmp/mysql.sock
ndbcluster
ndb-connectstring=192.168.100.1 #管理節點的IP
3、安裝數據節點
(1)把mysql-cluster-gpl-7.2.8-linux2.6-x86_64.tar.gz 解壓到 /usr/local/mysql 下
(2)在mysql目錄下創建文件:mkdir /usr/local/mysql/ndbdata
(3)編輯my.cnf: vi /etc/my.cnf 在文件末尾添加如下內容:
[mysql_cluster]
ndb-connectstring=192.168.100.1 #管理節點IP
4、配置環境變量:
#config mysql
export MYSQL_HOME=/usr/local/mysql
export PATH=$MYSQL_HOME/bin:$PATH
5、啟動集群
啟動順序:管理服務器->存儲節點->SQL節點
(1)啟動管理節點
rm mysql/mysql-cluster/ndb_1_config.bin.1 #如果config.ini有改動則要加上
ndb_mgmd -f /usr/local/mysql/cluster-conf/config.ini
(2)啟動存儲節點
ndbd --initial #(第一次啟動必須添加選項)
ndbd #不是第一次啟動需要執行的命令
(3)啟動SQL節點
/etc/rc.d/init.d/mysqld start 或 service mysqld start
6、關閉集群
(1)關閉SQL節點
/etc/rc.d/init.d/mysqld stop 或service mysqld stop
(2)關閉管理節點
ndb_mgm〉 shutdown
7、驗證配置的正確性
在管理節點執行:ndb_mgm -> show
8、創建表
創建表需要以 ndbcluster 作為存儲引擎
CREATE TABLE `test`.`test` (
`id` VARCHAR(45) NOT NULL,
`name` VARCHAR(9),
PRIMARY KEY (`id`)
) ENGINE = ndbcluster;
8. 關閉集群服務
關閉sql節點等同於停止mysql服務,此時外界數據不將再進來。然后關閉管理節點
~/mysql/bin/ndb_mgm -e shutdown rm ~/mysql/mysql-cluster/ndb_1_config.bin.1 #不是必須的,如果config.ini有改動則要加上
這樣操作后,管理節點和數據節點都將停止服務
Notes:
1:如果發現關閉一台機器的ndbd進程,另一台機器的ndbd的進程也關閉,則需要修改參數NoOfReplicas。 2:./ndbd --initial 不能同時在所有數據節點機器上執行,如執行,會刪除所有數據 3:可以像操作非簇類型的數據庫那樣,操作mysqld節點 4:每次修改config.ini文件,重啟ndb_mgmd時,需要刪除mysql-cluster文件下的ndb_1_config.bin.1文件, 因為他默認調用此文件 5:NDB 簇不支持自動發現數據庫的功能,這點很重要,一旦在一個數據節點上創建了世界(world)數據庫和它的表, 在簇中的每個SQL節點上還需要發出命令 CREATE DATABASE world,后跟FLUSH TABLES。這樣,節點就能 識別數據庫並讀取其表定義。(在本版本MySQL Cluster 7.1.5下數據庫也會自動同步的) 6:如果在相關節點服務器啟動時,注意查看~/mysql/mysql-cluster目錄內的相關日志文件以獲取錯誤信息. 7:在管理節點的配置文件里各[mysqld],[ndbd]和[ndb_mgmd]配置的選項值順序應該如下: [mysqld] Id=4 HostName=192.168.208.3 Id在頂端緊跟其后的是HostName,如果順序錯了,當SQL或數據節點連接管理節點時,管理節點無法正確的定位 到其對應的節點配置上. 因為無法定位到對應的節點配置,當沒有剩余的[空節點]時,客戶端節點啟動時(./mysqld or ./ndbd) 還會報: Configuration error: Error : Could not alloc node id at 192.168.0.231 port 1186: No free node id found for mysqld (API).Failed to initialize consumers 8:[空節點]是沒有指定HostName選項的節點配置均為空節點,空節點可以用來動態配置一些動態IP的節點, 一般管理節點的 配置文件要預留3個以上的空節點,因為備份時需要連接一個節點,如下: [mysqld] Id=6
---------------
體系結構
MySQL Cluster 由3個不同功能的服務構成,每個服務由一個專用的守護進程提供,一項 服務也叫做一個節點,下面來介紹每個節點的功能。
The management (MGM) node
管理節點,用來實現整個集群的管理,理論上一般只啟動一個,而且宕機也不影響 cluster 的服務,這個進程只在cluster 啟動以及節點加入集群時起作用, 所以這個節點不是很需要冗余,理論上通過一台服務器提供服務就可以了。
通過 ndb_mgmd 命令啟動,使用 config.ini 配置文件
The storage or database (DB) node:
數據庫節點,用來存儲數據,可以和管理節點(MGM) , 用戶端節點(API) 可以處在 不同的機器上,也可以在同一個機器上面,集群中至少要有一個DB節點,2個以上 時就能實現集群的高可用保證,DB節點增加時,集群的處理速度會變慢。
通過 ndbd 命令啟動,第一次創建好cluster DB 節點時,需要使用 –init參數初始化。
例如: bin/ndbd –ndb-connectstring=ndb_mgmd.mysqlcluster.net –initial
The client (API) node:
客戶端節點,通過他實現 cluster DB 的訪問,這個節點也就是普通的 mysqld 進程, 需要在配置文件中配置ndbcluster 指令打開 NDB Cluster storage engine 存儲引擎,增加 API 節點會提高整個集群的並發訪問速度和整體的吞吐量,該節點 可以部署在Web應用服務器上,也可以部署在專用的服務器上,也開以和DB部署在 同一台服務器上。
通過 mysqld_safe 命令啟動,
這3類節點可以分布在不同的主機上,比如 DB 可以是多台專用的服務器,也可以 每個DB都有一個API,當然也可以把API分布在Web前端的服務器上去,通常來說, API越多cluster的性能會越好。
Mysql集群探索與實踐
1. 准備好3台機器,從官網下載最新的mysql集群版本,此處用到mysql-cluster-gpl-7.1.5.tar.gz源碼包, 配置並安裝,記得加上
–with-plugins=innobase,ndbcluster (innobase可選)
3台機器分別是192.168.207.153,192.168.208.3,192.168.208.9,具體分配如下
管理節點(ndb_mgmd):192.168.207.153
數據節點(ndbd): 192.168.208.3
數據節點(ndbd): 192.168.208.9
SQL節點(mysqld): 192.168.208.3
SQL節點(mysqld): 192.168.208.9
2. 在mysql目錄下新建mysql-cluster文件夾,切換到mysql-cluster,新建config.ini
[NDBD DEFAULT] NoOfReplicas=2 #備份,副本,這樣的話2台數據節點的數據就會同步 DataMemory=200M IndexMemory=100M [TCP DEFAULT] portnumber=2202 [NDB_MGMD] #管理節點 id=1 hostname=192.168.207.153 datadir=/home/taozi/mysql/mysql-cluster [NDBD] #數據節點 id=2 hostname=192.168.208.3 datadir=/home/taozi/mysql/data [NDBD] #數據節點 id=3 hostname=192.168.208.9 datadir=/home/taozi/mysql/data [MySQLD] #sql節點 id=4 hostname=192.168.208.3 [MySQLD] #sql節點 id=5 hostname=192.168.208.9 [MySQLD] #sql節點 id=6
3. 在管理節點服務器上啟動管理節點服務 (如果不存在ndb_mgmd那么要從libexec下面復制過來)
~/mysql/bin/ndb_mgmd -f ~/mysql/mysql-cluster/config.ini
4. 進入2台數據節點服務器,分別啟動數據節點服務
~/mysql/bin/ndbd (第一次啟動使用 ~/mysql/bin/ndbd --initial)
5. 最后分別進入sql節點服務器,修改my.cnf,加入
[MYSQL_CLUSTER] ndb-connectstring=192.168.207.153 [MYSQLD] ndbcluster ndb-connectstring=192.168.207.153
啟動mysql服務
/home/taozi/mysql/bin/mysqld_safe --ledir=/home/taozi/mysql/bin / --log-error=/home/taozi/mysql/data/t.err --datadir=/home/taozi/mysql/data / --socket=/home/taozi/mysql/tmp/mysql.sock --pid-file=/home/taozi/mysql/data/mysqld.pid &
6. 此時回到管理節點
~/mysql/bin/ndb_mgm -e show
可以看到顯示如下
[taozi@search153 mysql]$ ./show.sh Connected to Management Server at: localhost:1186 Cluster Configuration --------------------- [ndbd(NDB)] 2 node(s) id=2 @192.168.208.3 (mysql-5.1.47 ndb-7.1.5, Nodegroup: 0, Master) id=3 @192.168.208.9 (mysql-5.1.47 ndb-7.1.5, Nodegroup: 0) [ndb_mgmd(MGM)] 1 node(s) id=1 @192.168.207.153 (mysql-5.1.47 ndb-7.1.5) [mysqld(API)] 3 node(s) id=4 @192.168.208.3 (mysql-5.1.47 ndb-7.1.5) id=5 @192.168.208.9 (mysql-5.1.47 ndb-7.1.5) id=6 (not connected, accepting connect from any host)
7. 進入sql節點,在test數據庫創建表
CREATE TABLE `t1` ( `id` int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`) ) ENGINE=ndbcluster DEFAULT CHARSET=gbk
切換到2台數據節點服務器~/mysql/data/ndb_2_fs和~/mysql/data/ndb_3_fs看看,
或者直接去數據庫查,數據已經同步了!
3.2 管理節點
主機xp1的C:\mysql-cluster\bin下新建一個文件config.ini,其中內容如下:
- [ndbd default]
- # Options affecting ndbd processes on all data nodes:
- NoOfReplicas=2 #復本數量,此例采用默認值2
- DataDir=C:/mysql-cluster/bin/cluster-data # 數據節點存儲目錄
- DataMemory=80M # 數據存儲分配的內存,酌情設置
- IndexMemory=18M # 索引存儲分配的內存,酌情設置
- [ndb_mgmd]
- # Management process options:
- HostName=192.168.109.130 # 管理節點所在主機IP
- DataDir=C:/mysql-cluster/bin/cluster-logs # 管理節點日志目錄
- [ndbd]
- # Options for data node "A":
- # (one [ndbd] section per data node)
- HostName=192.168.109.132 # 節點所在主機IP
- datadir=C:/mysql-cluster/data # 數據存儲目錄
- [ndbd]
- # Options for data node "B":
- HostName=192.168.109.133 # 節點所在主機IP
- datadir=C:/mysql-cluster/data
- [mysqld]
- # SQL node options:
- HostName=192.168.109.130 # SQL節點所在主機IP
這些為集群整體的配置信息,其中[ndbd default]為全局數據節點的默認配置模塊。[ndb_mgmd]為管理節點配置模塊。[ndbd]為數據節點配置模塊。[mysqld]為sql節點配置模塊。#后面為注釋內容,實際文件可以將這些注釋去掉,以防止因為中文的存在導致mysql解析文件失敗。啟動管理節點直接調用bin目錄下的ndb_mgmd.exe即可,但是我們在命令后指定我們上述的配置文件和集群配置的緩存目錄,所以命令為
- ndb_mgmd.exe --config-file=C:\\mysql-cluster\\bin\\config.ini --configdir=C:\mysql-cluster\bin\config-cache
為了方便起見,我們在c:\mysql-cluster\bin目錄下新建一個文件ndb_mgmd_start.bat,將上述管理節點啟動的命令寫入該批處理文件中作為啟動命令。
3.3 數據節點
我們以數據節點1為例介紹,節點2與此類似。在主機xp2的c:\mysql-cluster下新建文件my.ini。鍵入如下內容
- [mysql_cluster]
- # Options for data node process:
- ndb-connectstring=192.168.109.130 # location of management server
3.4 SQL節點
在xp1節點的c:\mysql-cluster目錄下新建文件my.ini,鍵入如下內容
- [mysqld]
- ndbcluster # run NDB storage engine
- ndb-connectstring=192.168.109.130 # location of management serve
其中ndbcluster指定了存儲引擎為集群環境,ndb-connectstring指定了管理節點的地址。
到此為止所有節點配置工作就完成了。
4. 節點管理
4.1 ndb_mgm介紹
mysql cluster提供了ndb_mgm.exe來對集群進行管理,在xp1主機的c:\mysql-cluster\bin目錄下。我們可以直接在命令行執行該命令進入管理控制台。(注:該程序需要在管理節點啟動后才能執行)
常用的命令包括:
show: 顯示集群中所有節點的狀態。如圖-04
圖-04
Node_id status: 查看node_id對應的節點的狀態
shutdown –e: 停止管理節點和所有數據節點。SQL節點不會被停掉。
筆者就簡單用了這幾個,其他命令還很多,可以通過HELP命令來查看。
4.2 節點啟停
Mysql cluster啟動有順序要求,管理節點要最先啟動。
啟動管理節點:在命令行中進到c:\mysql-cluster\bin目錄下,執行我們之前編輯的批處理文件ndb_mgmd_start.bat.如果啟動正常,我們此時可以執行ndb_mgm程序,通過管理控制台查看節點狀態了。
啟動數據節點:依次在各個數據節點主機的命令行中進到c:\mysql-cluster\bin目錄下,執行ndbd.exe 即可。通過ndb_mgm的管理控制台查看啟動狀態。
啟動SQL節點:在SQL節點的命令行中進到c:\mysql-cluster\bin目錄下,執行mysqld.exe即可。通過ndb_mgm的管理控制台查看啟動狀態。
節點停止:在ndb_mgm的管理控制台中執行shutdown –e 則管理節點和數據節點均會停止。另外SQL節點需要手動停止。
5. 驗證
集群環境搭建完成我們可以對其進行驗證。此處偷偷懶,直接引用一個官網的圖,如圖-05
圖-05
注意圖中建表語句中的ENGINE=NDBCLUSTER。
如果有興致還以通過外部程序驗證一下。注意外部程序訪問URL還是SQL節點。
好了,這樣我們的mysql 集群環境就搭建完成了。