MySQL Cluster部署文檔

  1. 基本概念:

  2. NDB介紹

NDB” 是一種“內存中”的存儲引擎,也是事務型存儲引擎,具備ACID屬性。

  1. 數據節點(Data Nodes)

用於存儲集羣的數據。實現底層數據存儲的功能,保存Cluster 的數據。每一個NDB 節點保存完整數據的一部分(或者一份完整的數據,視節點數目和配置而定),在MySQL Cluster 裏面叫做一個fragment。而每一個fragment,正常情況來講都會在其他的主機上面有一份(或者多分)完全相同的鏡像存在。這些都是通過配置來完成的,所以只要配置得當,MySQL Cluster 在存儲層不會出現單點的問題。數據節點是用命令ndbd啓動的。

  1. SQL節點(SQL Nodes)

向外提供一個標準的SQL語言編程接口。SQL節點負責向數據節點傳送訪問請求,具體集羣過程以及數據庫底層均對外透明。

SQL節點提供用戶SQL指令請求,解析、連接管理,query優化和響、cache管理等、數據merge、sort,裁剪等功能,當SQL節點啓動時,將向管理節點同步架構信息,用以數據查詢路由。SQL節點作爲查詢入口,需要消耗大量cpu及內存資源,可使用分佈式管理節點,並在SQL節點外封裝一層請求分發及HA控制機制可解決單點及性能問題,其提供了線性擴展功能。SQL節點是使用命令mysqld -ndbcluster啓動的,或將ndbcluster添加到“my.cnf”後使用“mysqld”啓動。

  1. 管理節點(NDB Management Server)

負責整個Cluster 集羣中各個節點的管理工作,包括集羣的配置,啓動關閉各節點,以及實施數據的備份恢復等。管理節點會獲取整個Cluster 環境中各節點的狀態和錯誤信息,並且將各Cluster 集羣中各個節點的信息反饋給整個集羣中其他的所有節點。通常只需配置一個管理節點;然而爲了排除單點故障需要,有可能的話,儘量增加管理節點的數量。MGM節點是用命令ndb_mgm啓動的。

 

  1. 集羣配置概述

環境:

操作系統:centos 6.5 x86_64

軟件:mysql-cluster-gpl-7.1.34-linux-x86_64-glibc23.tar.gz 具體版本可以去官網下載

管理節點:ip:192.168.100.20

sql節點-數據節點:ip:192.168.100.20

sql節點-數據節點:ip:192.168.100.30

 

 

安裝mysql cluster和mysql基本一樣只是配置文件和啓動方式有所改變,所以基礎還是mysql安裝:

  1. Mysql安裝

  2. 新建mysql用戶

useradd -s /sbin/nologin  -M mysql

  1. 創建mysql數據目錄

[root@rs2 mysql]# mkdir -p /data/data

[root@rs2 mysql]# chown -R mysql:mysql /data/mysql

  1. 初始化mysql

[root@rs2 mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/msyql  #user指定mysql用戶  datadir 數據存放目錄

  1. 拷貝啓動配置文件和啓動腳本

cp support-files/my-small.cnf /etc/my.cnf

cp support-files/mysql.server /etc/init.d/mysqld

 

  1. 管理節點安裝配置

  2. 解壓並複製

cp -r mysql-cluster-gpl-7.1.34-linux-x86_64-glibc23 /usr/local/mysql-cluster

chown -R mysql:mysql mysql-cluster/

  1. 拷貝配置文件

cd mysql-cluster/support-files/

cp ndb-config-2-node.ini /etc/ndb-config.ini

 

配置文件內容:

[ndbd default]   #爲所有的節點指定默認配置

NoOfReplicas= 1    #定義在Cluster環境中複製份數

MaxNoOfConcurrentOperations= 10000

DataMemory= 80M    #分配的數據內存大小,根據本機服務器內存適量來分配,實際運用中需要分配很大

IndexMemory= 24M  #設定用於存放索引(非主鍵)數據的內存段大小

TimeBetweenWatchDogCheck= 30000

DataDir= /usr/local/mysql-cluster/cluster-data  ##用於存放集羣日誌信息

MaxNoOfOrderedIndexes= 512

 

[ndb_mgmd default]    #管理節點的共用配置項:

DataDir= /usr/local/mysql-cluster/cluster-logs

 

[ndb_mgmd]

Id=1

HostName= 192.168.100.20

 

[ndbd]    #指定數據節點的配置,每個數據節點對應一個ndbd配置

Id= 2

HostName= 192.168.100.20    #管理服務器ip

datadir = /data/test

[ndbd]

Id= 3

HostName= 192.168.100.30

datadir = /data/test

[mysqld]     #指定SQL節點的配置,每個SQL節點對應一個配mysqld置

Id= 4

HostName= 192.168.100.20

 

[mysqld]

Id= 5

HostName= 192.168.100.30

 

[mysqld]

 

[mysqld]

 

[mysqld]

注:配置文件最好保留幾個空的sql節點([mysqld])

  1. 啓動管理服務

進入bin目錄下

/usr/local/mysql-cluster/bin/ndb_mgmd --initial -f /etc/ndb-config.ini

 

注:管理節點實際只需要一個配置文件和bin目錄下的ndb_mgmd、ndb_mgm等文件,其他並不需要

  1. 查看啓動端口

[root@master bin]# netstat -taunlp |grep mgm

tcp        0      0 0.0.0.0:1186                0.0.0.0:*                   LISTEN      51274/./ndb_mgmd

tcp        0      0 127.0.0.1:38052             127.0.0.1:1186              ESTABLISHED 51274/./ndb_mgmd

tcp        0      0 127.0.0.1:1186              127.0.0.1:38052             ESTABLISHED 51274/./ndb_mgmd

 

  1. 數據節點和sql節點

數據節點安裝

此處就和mysql安裝一樣,只是配置文件/etc/my.cnf要修改。而且只需要安裝一個mysql即可,就可以完成數據節點的安裝和sql節點的安裝,只是啓動方式不一樣。

  1. 解壓並複製

[root@master src]# cp -r mysql-cluster-gpl-7.1.34-linux-x86_64-glibc23 /usr/local/mysql-data

[root@master data]# mkdir test

[root@master data]# chown -R mysql.mysql test

  1. 初始化數據庫

[root@master mysql-data]# ./scripts/mysql_install_db --user=mysql --datadir=/data/test

 

  1. 修改ndbd配置文件/etc/my.cnf  

 注:此配置文件也是sql節點配置文件

[mysqld]

ndbcluster

ndb-connectstring=192.168.100.20

[mysql_cluster]

ndb-connectstring=192.168.100.20

  1. 啓動數據節點數據庫ndbd服務

[root@master mysql-data]# /usr/local/mysql-data/bin/ndbd --initial

首次啓動要使用--initial

[root@master mysql-data]# ./bin/ndbd --initial

2016-01-02 00:11:26 [ndbd] INFO     -- Angel connected to '192.168.100.20:1186'

2016-01-02 00:11:26 [ndbd] INFO     -- Angel allocated nodeid: 2

 

  1. 啓動sql節點

[root@master mysql-cluster]# /usr/local/mysql-data/bin/mysqld_safe --user=mysql &

或service mysqld start

 

注:從啓動方式可以看出作爲sql節點啓動時就是一般的mysql服務,可以有啓動腳本加入開機啓動

對於管理節點、數據節點啓動命令可以寫入/etc/rc.d/rc.local中隨系統啓動

  1. 查看集羣狀態

[root@master local]# /usr/local/mysql-cluster/bin/ndb_mgm -e show

Connected to Management Server at: 192.168.100.20:1186

Cluster Configuration

---------------------

[ndbd(NDB)]     2 node(s)

id=2    @192.168.100.20  (mysql-5.1.73 ndb-7.1.34, Nodegroup: 0, *)

id=3    @192.168.100.30  (mysql-5.1.73 ndb-7.1.34, Nodegroup: 1)

 

[ndb_mgmd(MGM)] 1 node(s)

id=1    @192.168.100.20  (mysql-5.1.73 ndb-7.1.34)

 

[mysqld(API)]   5 node(s)

id=4    @192.168.100.20  (mysql-5.1.73 ndb-7.1.34)

id=5    @192.168.100.30  (mysql-5.1.73 ndb-7.1.34)

id=6 (not connected, accepting connect from any host)

id=7 (not connected, accepting connect from any host)

id=8 (not connected, accepting connect from any host)

 

  1. 查看集羣內存使用情況:

ndb_mgm> all report memoryusage;

Node 2: Data usage is 0%(5 32K pages of total 2560)

Node 2: Index usage is 0%(8 8K pages of total 3104)

Node 3: Data usage is 0%(5 32K pages of total 2560)

Node 3: Index usage is 0%(8 8K pages of total 3104)

 

  1. 測試

# /usr/local/mysql-data/bin/mysql -uroot -p

mysql> show databases;

在一臺上創建,另外臺查看

或:

[root@master local]# ls /data/test/dbo/

db.opt

建立集羣數據

mysql> create table t1(id 1);

mysql> show tables;

+---------------+

| Tables_in_dbo |

+---------------+

| t1            |

+---------------+

1 row in set (0.00 sec)

如果默認不指定引擎爲ndbcluster則存儲在本機

mysql> create table t2(id int ,name varchar(20)) engine ndbcluster;

Query OK, 0 rows affected (1.23 sec)

[root@master mysql-cluster]# ls /data/test/dbo/

db.opt  t1.frm  t1.MYD  t1.MYI  t2.frm  t2.ndb

 

[root@slave mysql-cluster]# ls /data/test/dbo/

db.opt  t2.frm  t2.ndb

 

 

  1. 集羣管理

  2. 各節點啓動關閉

  3. 啓動管理節點

/usr/local/mysql-cluster/bin/ndb_mgmd --initial -f /etc/ndb-config.ini

  1. 啓動數據節點

[root@master mysql-data]# /usr/local/mysql-data/bin/ndbd --initial

首次啓動要使用--initial

[root@master mysql-data]# ./bin/ndbd --initial

2016-01-02 00:11:26 [ndbd] INFO     -- Angel connected to '192.168.100.20:1186'

2016-01-02 00:11:26 [ndbd] INFO     -- Angel allocated nodeid: 2

 

  1. 啓動sql節點

[root@master mysql-cluster]# /usr/local/mysql-data/bin/mysqld_safe --user=mysql &

或service mysqld start

  1. 節點狀態檢查

[root@master local]# /usr/local/mysql-cluster/bin/ndb_mgm -e show

  1. 節點關閉

執行管理節點客戶端ngb_mgm工具

ngb_mgm>shutdown

  1. 基本維護

ngb_mgm>show 查看集羣狀態

help 查看命令幫助

help start

關閉集羣順序:SQL節點->數據節點->管理節點 或者使用# ./ndb_mgm -e shutdown命令關閉集羣

啓動集羣順序: 管理節點->數據節點->SQL節點

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


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