MySQLCluster部署配置文檔node
本文借鑑了網上其餘人的文章,因爲你們關於mysql cluster的文章基本都差了很少,這裏我也就不寫從哪裏引用的了。mysql
環境sql
OS版本:CentOS 6.3 Finalshell
MySQL 版本:MySQL Server 5.1.73-3數據庫
MySQL Cluster版本(應採用NDB7.x版本,別的版本不支持不重啓動態就能增長數據節點):MySQL Cluster 7.3.4-1安全
1、MySQLCluster 概述服務器
核心的基本概念網絡
1.1設計目標負載均衡
一、沒有單點失敗;tcp
二、部署「內存中」的數據庫;
三、不能共享任何東西,如網絡文件系統或SAN等。
將標準的MySQL Server和NDB引擎集成在一塊兒。MySQL Cluster等於標準的MySQL Server+NDB。數據存在數據節點,全部MySQL Cluster都能訪問。存儲在數據節點裏面的數據能夠鏡像。MySQL Cluster裏面的節點指一個進程。不是指一臺機器,一臺機器上能夠裝多個節點。
1.2 三種節點:
管理節點(MGM node):管理其餘節點的節點。必須先於其餘節點啓動。ndb_mgmd;
數據節點:存儲數據的節點。多個複本保證高可用性。Ndbd;
SQL節點:訪問數據的節點。是一個標準的MySQL Server,不過帶了支持NDB引擎的選項。mysqld帶--ndbcluster和--ndb-connectstring選項。
其實是一個API節點,就是用NDB的API實現了對數據的訪問。
要實現冗餘,必須是多個數據節點和多個SQL節點。也高度推薦多個管理節點。MySQL Cluster認爲數據節點在處理器、內存空間、帶寬上應是同質的。另外,全部Cluster裏面的配置放在一個配置文件裏面以方便單點配置。
管理節點管理這個配置和cluster的日誌。每一個節點都從管理節點處得到這個配置。當數據節點發生某個事件時,它將信息傳給管理節點,管理節點寫日誌。
能夠有兩種類型的Client:
標準的MySQL Client: Connector/J5.0.6及以後的版本能夠用jdbc:mysql:loadbalance://URLs來實現透明的負載均衡。
管理Client:鏈接管理節點,下發管理指令如啓動關閉節點等。這樣的client好比ndb_mgm是用MGMAPI(C語言API)實現的。
*下文中若是單獨提到節點,都是指數據節點。
1.3節點、節點組、複本、分區
節點組內的一個數據節點存儲了分區的複本,一個分區指派給一個節點組。每一個數據節點應該位於單個機器上。節點組包含一個或多個節點,能夠存儲多個分區。一個cluster裏面的節點組數不是配置的,是複本個數(可配置NoOfReplicas)和數據節點個數的函數。
節點組數=總的節點數/複本個數
分區是指cluster存儲的一部分數據。數據節點越多,分區就越多。一般狀況下,MySQL Cluster自動將NDB表分區。每個節點組裏面,分區的複本數=組內節點數。
每一個節點組內至少須要1臺機器是活的,才能保證整個系統可用。
若是是2臺機器,複本個數配置爲2,那麼就只有1個節點組,包含這2臺機器,其中1個壞了,另外一臺仍可用。
2MySQL Cluster 多臺機器How-To
2、規劃
機器儘可能使用IP,不須要沒必要要的服務,只要網絡通就能夠了。至少百兆網絡,推薦千兆網絡。儘可能在子網裏面運行。在SQL節點上,要裝MySQL Server。管理節點和數據節點能夠不用裝MySQL Server。能夠採用RPM包安裝,對於MySQL Cluster,須要以下3個rpm包:
ServerRPM: 安裝MySQL Server,也能夠再裝MySQL Client RPM;
ClusterStorage Engine:帶有ndbd,裝在數據節點上;
ClusterStorage Engine Management RPM:帶有ndb_mgmd,裝在管理節點上;
另外,最好再裝NDB Cluster-Storage engine basic tools RPM:包含ndb_mgm;
NDBCluster-Storage engine extra tools RPM:包含一些測試和監控工具。注意:全部RPM的cluster版本號應該一致。
3、安裝
安裝數據節點前要作的事情(假設是YUM安裝版本):
shell>group add mysql
shell>useradd -g mysql mysql
shell> yum install mysql*
shell> cd /root/MySQL_Cluster
shell> yum install MySQL-Cluster-*
安裝後,在/usr/sbin目錄下會產生ndbd文件。
4、配置
每一個節點須要1個配置文件。其中每一個數據節點或SQL節點須要1個my.cnf文件。裏面包含2類信息:
1類信息定義如何去找管理節點。
1類信息定義啓用NDB引擎
管理節點須要1個config.ini文件,定義複本個數、爲每一個數據節點開多少內存、哪裏去找數據節點、數據存在數據節點的什麼地方、哪裏去找SQL節點。
配置數據節點和SQL節點:my.cnf文件應位於/etc目錄,文件內容很是簡單:
#mysqld進程的選項:
[mysqld]
ndbcluster # run NDB storage engine
ndb-connectstring=172.16.7.99 # 本地管理服務器的IP地址
#ndbd進程的選項
[mysql_cluster]
ndb-connectstring=172.16.7.99 #本地管理服務器的IP地址
一旦按照上述配置啓動mysqld,將不能進行create table或altert table操做,必須啓動cluster以後才能進行。
配置管理節點:建一個目錄放config.ini文件。
shell>cd /home/mysql
shell>vi config.ini
#全部數據節點上影響ndbd進程的選項:
[ndbddefault]
NoOfReplicas=2 # 副本的個數
DataMemory=80M # 分配多少內存給數據存儲
IndexMemory=18M # 分配多少內存給目錄存儲
# 這裏的數據內存和目錄內存的配置咱們可使用
# 默認數值,自從「world」數據庫僅僅佔用了500
# KB的內存以後,這些默認配置足夠進行集羣的安裝。
#TCP/IP 選項:
[tcpdefault]
portnumber=2202 # 默認配置;默認配置;除非你要是用其它的端口
# 而且這個端口在集羣中全部其它的主機上都沒有
# 被佔用。
#注意: It is recommended that youdo not specify the p
Ort
# number at all and allow the default value to be used instead
#Management process options:
[ndb_mgmd]
hostname=172.16.7.99 # 管理節點的IP或主機名
datadir=/home/mysql/mysql-cluster # 管理節點存放日誌的目錄
#Options for data node "A":
[ndbd]
# (one [ndbd] section per data node)
hostname=172.16.7.94 # IP或主機名
datadir=/usr/local/mysql/data #數據節點存放數據的目錄
#Options for data node "B":
#[ndbd]
#hostname=192.168.0.40 # Hostname or IP address
#datadir=/usr/local/mysql/data # Directory for this data node's data files
#SQL node options:
[mysqld]
hostname=172.16.7.96 # Hostname or IP address
# (additional mysqld connections can be
# specified for this node for various
# purposes such as running ndb_restore)
[mysqld]
hostname=172.16.7.98 # Hostname or IP address
# (additional mysqld connections can be
# specified for this node for various
# purposes such as running ndb_restore)
缺省的cluster管理節點端口是1186,缺省的數據節點的端口是2202。
5、啓動
先啓動管理節點、再啓動數據節點、最後啓動SQL節點。
啓動管理節點:
shell>ndb_mgmd -f /home/mysql/mysql-cluster/config.ini
啓動數據節點:
shell>ndbd
啓動SQL節點:
shell>service mysqld start
或者
shell>/etc/init.d/mysqld start
查看啓動狀態
shell>ndb_mgm
--NDB Cluster -- Management Client –
ndb_mgm>SHOW
......
倒數據時要轉換爲NDB引擎,應用程序訪問的應該是SQL節點。
6、關閉和重啓
關閉Cluster在管理節點上執行:
shell>ndb_mgm -e shutdown
將安全的關閉管理節點和數據節點。SQL節點能夠用mysqladmin shutdown或別的方式關閉。
重啓Cluster在管理節點上執行:
shell>ndb_mgmd -f /home/mysql/mysql-cluster/config.ini
在數據節點上執行:
shell>ndbd
在SQL節點上執行:
shell>mysqld_safe &