标簽: mysql cluster7.5
關于mysqlcluster的安裝,網上文章良莠不濟,大多數都是錯誤的過時的.
由于項目需要搭建一個mysql叢集,最後標明了 mysql cluster7.5
期間踩了各種坑,最後才在mysqlcluster的官網上熟讀了官網文檔後才搭建完成,投入使用.
最後總結出此文幫助後來者少踩坑.另外學習一門新知識最好去它的官網,少踩坑.
參考資料: mysqlcluster官網
mysql cluster搭建
概念
MySQL Cluster是基于無共享的可由多台伺服器組成的、同時對外提供資料管理服務的分布式叢集系統。通過合理的配置,可以将服務請求在多台實體機上分發實作負載均衡 ;同時内部實作了備援機制,在部分伺服器當機的情況下,整個叢集對外提供的服務不受影響,進而能達到99.999%以上的高可用性。
MySQL Cluster設計之初出于性能考慮,将資料完全存放在記憶體當中,是以MySQL Cluster可以當作一種分布式的記憶體資料庫。随着MySQL Cluster技術的成熟和需求的增加,目前MySQL Cluster已支援磁盤存儲,可以指定資料表存儲在磁盤上,減少MySQL Cluster叢集對記憶體的需求,進而實作存儲更大的容量。
MySQL從結構看,由3類節點(計算機或程序)組成,分别是:
-
管理(MGM)節點:這類節點的作用是管理MySQL Cluster内的其他節點,如提供配置資料、啟動并停止節點、運作備份等。由于這類節點負責管理其他節點的配置,應在啟動其他節點之前首先啟動這類節點。MGM節點是用指令“ndb_mgmd”啟動的。
配置檔案為: config.ini
-
資料節點:這類節點用于儲存 Cluster的資料。資料節點的數目與副本的數目相關,是片段的倍數。例如,對于兩個副本,每個副本有兩個片段,那麼就有4個資料節點。不過沒有必要設定多個副本。資料節點是用指令“ndbd”啟動的。
配置檔案為:my.ini
-
SQL節點:這是用來通路 Cluster資料的節點。對于MySQL Cluster,用戶端節點是使用NDB Cluster存儲引擎的傳統MySQL伺服器。通常,SQL節點是使用指令“mysqld –ndbcluster”啟動的,或将“ndbcluster”添加到“my.cnf”後使用“mysqld”啟動。
配置檔案為:my.ini
“MySQL實驗室”推薦使用MySQL Cluster 7.x版本。MySQL Cluster 7.x擁有線上增加節點、多線程等新特性。
工作原理
管理伺服器(MGM節點)負責管理 Cluster配置檔案和 Cluster日志。 Cluster中的每個節點從管理伺服器檢索配置資料,并請求确定管理伺服器所在位置的方式。當資料節點内出現新的事件時,節點将關于這類事件的資訊傳輸到管理伺服器,然後,将這類資訊寫入 Cluster日志。
安裝
節點說明:
表21.4示例群集中節點的網絡位址
節點 IP位址
管理節點(mgmd) 198.51.100.10
SQL節點(mysqld) 198.51.100.20
資料節點“A”(ndbd) 198.51.100.30
資料節點“B”(ndbd) 198.51.100.40
每個NDB群集主機必須安裝正确的可執行程式。
- 運作SQL節點的主機必須在其上安裝MySQL伺服器二進制檔案(mysqld)。
- 管理節點需要管理伺服器守護程序(ndb_mgmd);
- 資料節點需要資料節點守護程序(ndbd或ndbmtd)。
沒有必要在管理節點主機和資料節點主機上安裝MySQL伺服器二進制檔案。建議您還在管理伺服器主機上安裝管理用戶端(ndb_mgm)。
1.在Linux上安裝NDB叢集二進制檔案(tar.gz檔案)
在Linux上安裝NDB叢集可以使用Oracle的預編譯二進制檔案(作為.tar.gz壓縮檔案下載下傳),RPM軟體包(也可從Oracle獲得)或源代碼完成
參考: 在Linux上安裝NDB群集二進制版本(用google chrome 打開翻譯該頁面)
按照上面安裝完成後,接下來開始下一步:配置
2.NDB叢集的初始配置
- 每個資料節點或SQL節點都需要一個my.cnf檔案,該 檔案提供兩條資訊:一個連接配接字元串,告訴節點在哪裡找到管理節點,另一條是告訴該主機上的MySQL伺服器(托管資料節點的機器)以啟用該 NDBCLUSTER存儲引擎。
- 管理節點需要一個config.ini 檔案,告訴它要維護多少副本,為每個資料節點上的資料和索引配置設定多少記憶體,在哪裡找到資料節點,在每個資料節點上将資料儲存到磁盤的位置以及在哪裡查找任何SQL節點。
配置資料節點和SQL節點。
my.cnf資料節點所需 的檔案非常簡單。配置檔案應該位于/etc目錄中,并且可以使用任何文本編輯器進行編輯。(如果該檔案不存在,則建立該檔案。)
對于我們示例設定中的每個資料節點和SQL節點, my.cnf應該如下所示:
[mysqld]
# Options for mysqld process:
ndbcluster # run NDB storage engine
[mysql_cluster]
# Options for NDB Cluster processes:
ndb-connectstring=198.51.100.10
輸入上述資訊後,儲存該檔案并退出文本編輯器。為托管資料節點“ A ”,資料節點“ B ”和SQL節點的計算機執行此操作
配置管理節點。
配置管理節點的第一步是建立可以找到配置檔案的目錄,然後建立檔案本身。
cd /var/lib/mysql-cluster
shell> vi config.ini
```
對于我們的代表設定,該config.ini 檔案應該如下所示:
```bash
[ndbd default]
# Options affecting ndbd processes on all data nodes:
NoOfReplicas=2 # Number of replicas
DataMemory=80M # How much memory to allocate for data storage
IndexMemory=18M # How much memory to allocate for index storage
# For DataMemory and IndexMemory, we have used the
# default values. Since the "world" database takes up
# only about 500KB, this should be more than enough for
# this example NDB Cluster setup.
ServerPort=2202 # This the default value; however, you can use any
# port that is free for all the hosts in the cluster
# Note1: It is recommended that you do not specify the port
# number at all and simply allow the default value to be used
# instead
# Note2: The port was formerly specified using the PortNumber
# TCP parameter; this parameter is no longer available in NDB
# Cluster 7.5.
[ndb_mgmd]
# Management process options:
HostName=198.51.100.10 # Hostname or IP address of MGM node
DataDir=/var/lib/mysql-cluster # Directory for MGM node log files
[ndbd]
# Options for data node "A":
# (one [ndbd] section per data node)
HostName=198.51.100.30 # Hostname or IP address
NodeId=2 # Node ID for this data node
DataDir=/usr/local/mysql/data # Directory for this data node's data files
[ndbd]
# Options for data node "B":
HostName=198.51.100.40 # Hostname or IP address
NodeId=3 # Node ID for this data node
DataDir=/usr/local/mysql/data # Directory for this data node's data files
[mysqld]
# SQL node options:
HostName=198.51.100.20 # Hostname or IP address
# (additional mysqld connections can be
# specified for this node for various
# purposes such as running ndb_restore)
在建立了所有配置檔案并指定了這些最小選項後,即可開始啟動群集并驗證所有程序正在運作。
3 NDB叢集的初始啟動
配置完成後啟動叢集并不是非常困難。每個群集節點程序必須分别啟動,并在其所在的主機上啟動。應首先啟動管理節點,然後啟動資料節點,最後啟動任何SQL節點
在管理主機上
從系統shell發出以下指令以啟動管理節點程序:
shell> ndb_mgmd -f
首次啟動時, 必須使用
-f
選項告知ndb_mgmd在哪裡查找其配置檔案 。 -f–config-file
在每個資料節點主機上
運作以下指令啟動 ndbd程序:
shell> ndbd
在每個sql節點上啟動mysql
shell> service mysql start
或者
shell> mysqld_safe &
注意此步驟不需要單獨安裝 mysql,如果你啟動不了,檢視是否之前在第一步安裝時已經把mysql.server 加到服務裡面
最後
如果一切順利,并且叢集已正确設定,則叢集現在應該可以運作。您可以通過調用ndb_mgm管理節點用戶端來進行測試。輸出結果應該如下所示,盡管您可能會在輸出中看到一些細微差異,具體取決于您使用的MySQL的确切版本:
shell> 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 @198.51.100.30 (Version: 5.7.21-ndb-7.5.10, Nodegroup: 0, *)
id=3 @198.51.100.40 (Version: 5.7.21-ndb-7.5.10, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @198.51.100.10 (Version: 5.7.21-ndb-7.5.10)
[mysqld(API)] 1 node(s)
id=4 @198.51.100.20 (Version: 5.7.21-ndb-7.5.10)
此處引用SQL節點 [mysqld(API)],它反映了mysqld程序充當NDB叢集API節點的事實 。
您現在應該準備好使用NDB群集中的資料庫,表格和資料.
參考帶表格和資料的NDB群集示例