mysql cluster集羣主從架構讀寫分離搭建

安裝要求

  • 安裝環境: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節點都是正常的。
注意:

  1. 在建表的時候一定要用ENGINE=NDB或ENGINE=NDBCLUSTER指定使用NDB集羣存儲引擎,或用ALTER TABLE選項更改表的存儲引擎。
  2. NDB表必須有一個主鍵,因此創建表的時候必須定義主鍵,否則NDB存儲引擎將自動生成隱含的主鍵。
  3. 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=2DataMemory=200MIndexMemory=100M

[ndb_mgmd]
id=1
hostname=192.168.100.1
DataDir=/usr/local/mysql/mysql-cluster

[ndbd]id=2HostName=192.168.100.4DataDir=/usr/local/mysql/ndbdata

[ndbd] 
id=5
HostName=192.168.100.5
DataDir=/usr/local/mysql/ndbdata

[mysqld]id=6HostName=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,其中內容如下: 

 

Xml代碼  
  1. [ndbd default]  
  2. # Options affecting ndbd processes on all data nodes:  
  3. NoOfReplicas=2                      #複本數量,此例採用默認值2  
  4. DataDir=C:/mysql-cluster/bin/cluster-data   # 數據節點存儲目錄  
  5. DataMemory=80M    # 數據存儲分配的內存,酌情設置  
  6. IndexMemory=18M   # 索引存儲分配的內存,酌情設置  
  7.   
  8. [ndb_mgmd]  
  9. # Management process options:  
  10. HostName=192.168.109.130               # 管理節點所在主機IP  
  11. DataDir=C:/mysql-cluster/bin/cluster-logs   # 管理節點日誌目錄  
  12.   
  13. [ndbd]  
  14. # Options for data node "A":  
  15. # (one [ndbd] section per data node)  
  16. HostName=192.168.109.132           # 節點所在主機IP  
  17. datadir=C:/mysql-cluster/data   # 數據存儲目錄  
  18.   
  19. [ndbd]  
  20. # Options for data node "B":  
  21. HostName=192.168.109.133           # 節點所在主機IP  
  22. datadir=C:/mysql-cluster/data  
  23.   
  24. [mysqld]  
  25. # SQL node options:  
  26. HostName=192.168.109.130           # SQL節點所在主機IP  

 

這些爲集羣整體的配置信息,其中[ndbd default]爲全局數據節點的默認配置模塊。[ndb_mgmd]爲管理節點配置模塊。[ndbd]爲數據節點配置模塊。[mysqld]爲sql節點配置模塊。#後面爲註釋內容,實際文件可以將這些註釋去掉,以防止因爲中文的存在導致mysql解析文件失敗。啓動管理節點直接調用bin目錄下的ndb_mgmd.exe即可,但是我們在命令後指定我們上述的配置文件和集羣配置的緩存目錄,所以命令爲

 

Java代碼  
  1. 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。鍵入如下內容

 

Xml代碼  
  1. [mysql_cluster]  
  2. # Options for data node process:  
  3. ndb-connectstring=192.168.109.130  # location of management server  

 

 

3.4    SQL節點

在xp1節點的c:\mysql-cluster目錄下新建文件my.ini,鍵入如下內容

 

Xml代碼  
  1. [mysqld]  
  2. ndbcluster                      # run NDB storage engine  
  3. 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 集羣環境就搭建完成了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章