MySQL NDB Cluster簡介及環境搭建
本文主要描述MySQL NDB Cluster簡介及環境搭建。
歡迎轉載,請註明作者、出處。
作者:張正
blog:http://space.itpub.net/26355921
QQ:176036317
如有疑問,歡迎聯絡。
MySQL Cluster的組成有:
1.MySQL Server
2.NDB:管理資料storage
NDB 節點被組織成一個一個的NDB Group,一個NDB Group 實際上就是一組
存有完全相同的物理資料的NDB 節點群。
管理節點中有一個非常重要的引數叫NoOfReplicas,這個引數
指定了每一份資料被冗餘儲存在不同節點上面的份數,該引數一般至少應該被設定成2,
3.MGMT,管理節點需要最先被啟動
ndb_mgm -e SHOW 檢視各個節點狀態是否正常,是否都已經連線到了管理節點上面。
MySQL Cluster配置:
管理節點的配置:
1.PortNumber:管理節點埠,預設為1186
2.LogDestination:管理節點上cluster日誌處理方式
a) 可以寫入檔案如:LogDestination=FILE:filename=mycluster.
log,maxsize=500000,maxfiles=4;
b) 也可以透過標準輸出來列印出來如:LogDestination=CONSOLE;
c) 還可以計入syslog 裡面如:LogDestination=SYSLOG:facility=syslog;
d) 甚至多種方式共存:
LogDestination=CONSOLE;SYSLOG:facility=syslog;FILE:filename=/var/log/clusterlog
3.Datadir:設定管理節點存放檔案輸出的位置。
4.ArbitrationRank:配置各節點在處理某些事件出現分歧的時候的級別。有0,1,2三個值可以選擇。
a) 0 代表本節點完全聽其他節點的,不參與決策
b) 1 代表本節點有最高優先權,“一切由我來決策”
c) 2 代表本節點參與決策,但是優先權較1 低,但是比0 高
ArbitrationRank 引數不僅僅管理節點有,MySQL 節點也有。而且一般來說,所有
的管理節點一般都應該設定成1,所有SQL 節點都設定成2。
NDB_MGMD的配置:
1. ID為節點指定一個唯一的ID號,要求在整個Cluster環境中唯一。
2. hostname:該節點的IP地址或主機名
NDB節點配置:
NDBD_DEFAULT中的配置:
1.NoOfReplicas:每一份資料存放的份數(類似於Oracle ASM中的Redundancy)
2.DataDir:指定本地的pid 檔案,trace 檔案,日誌檔案以及錯誤日誌子等存放的
路徑,無系統預設地址,所以必須設定;
3.DataMemory:設定用於存放資料和主鍵索引的記憶體段的大小,預設值80M
4.IndexMemory:設定用於存放索引(非主鍵)資料的記憶體段大小,預設值為18M
注意:DataMemory 和IndexMemory引數設定的約束,兩者任何一個達到限制數量後,
都無法再增加能儲存的資料量。如果繼續存入資料系統會報錯“table is full”。
5.FileSystemPath:指定redo 日誌,undo 日誌,資料檔案以及meta 資料等的存放
位置,預設位置為DataDir 的設定
6.BackupDataDir:設定備份目錄路徑,預設為FileSystemPath/BACKUP。
與並行事務數和其他一些並行限制有關的引數設定:
*1.MaxNoOfConcurrentTransactions:設定在一個節點上面的最大並行事務數目,預設為4096,
*2.MaxNoOfConcurrentOperations:設定同時能夠被更新(或者鎖定)的記錄數量。其值應該設定為:總記錄數,除以NDB
節點數,所得到的值
*3.MaxNoOfLocalOperations:此引數預設是MaxNoOfConcurrentOperations * 1.1
的大小,也就是說,每個節點一般可以處理超過平均值的10%的操作記錄數量。但是一般來
說,MySQL 建議單獨設定此引數而不要使用預設值,並且將此引數設定得更較大一些;
*4.MaxNoOfConcurrentIndexOperations:這個引數和MaxNoOfConcurrentOperations
引數比較類似,只不過所針對的是Index 的record 而已。其預設值為8192,
*5.MaxNoOfFiredTriggers
*6.TransactionBufferMemory
系統做table scan 或者range scan 的時候使用的一些buffer 的相關設定:
1.MaxNoOfConcurrentScans:這個引數主要控制在Cluster 環境中併發的table scan
和range scan 的總數量平均分配到每一個節點後的平均值。引數預設大小為256,最大隻能設定為500
2.MaxNoOfLocalScans
3.BatchSizePerLocalScan
4.LongMessageBuffer
與log相關的引數配置:
log level 有從0 到15,也就是共16 種。如果設定為0,則表示不記錄任何log。如果設定為最
高level,也就是15,則表示所有的資訊都會透過標準輸出來記錄log。由於這裡的所有信
息實際上都會傳遞到管理節點的cluster log 中,所以,一般來說,除了啟動時候的log
級別需要設定為1 之外,其他所有的log level 都只需要設定為0 就可以了。
1.NoOfFragmentLogFiles 相同於Oracle的redo log的group,預設為8
2.MaxNoOfSavedMessages:這個引數設定了可以保留的trace 檔案(在節點crash
的時候引數)的最大個數,文件上面說此引數預設值為25。
3.LogLevelStartup:設定啟動ndb 節點時候需要記錄的資訊的級別(不同級別所記
錄的資訊的詳細程度不一樣),預設級別為1;
4.LogLevelShutdown:設定關閉ndb 節點時候記錄日誌的資訊的級別,預設為0;
5.LogLevelStatistic:這個引數是針對於統計相關的日誌的,就像更新數量,插入
數量,buffer 使用情況,主鍵數量等等統計資訊。預設日誌級別為0;
6.LogLevelCheckpoint:checkpoint 日誌記錄級別(包括local 和global 的),預設為0;
7.LogLevelNodeRestart:ndb 節點重啟過程日誌級別,預設為0;
8.LogLevelConnection:各節點之間連線相關日誌記錄的級別,預設0;
9.LogLevelError:在整個Cluster 中錯誤或者警告資訊的日誌記錄級別,預設0;
10.LogLevelInfo:普通訊息的日誌記錄級別,預設為0。
11.UndoIndexBuffer
12.UndoDataBuffer
13.RedoBuffer
SQL節點相關配置說明:
1.ArbitrationDelay:預設為0,裁定者在開始裁定之前需要被delay 多久,單位為毫秒。一般不需要更改預設值。
2.BatchByteSize:在做全表掃描或者索引範圍掃描的時候,每一次fatch 的資料量,預設為32KB;
3.BatchSize:類似BatchByteSize 引數,只不過BatchSize 所設定的是每一次fetch
的record 數量,而不是物理總量,預設為64,最大為992
4.MaxScanBatchSize:在Cluster 環境中,進行並行處理的情況下,所有節點的
BatchSize 總和的最大值。預設值為256KB,最大值為16MB。
5.[MySQLD]引數組,僅有id 和hostname
MySQL Cluster搭建
下載地址:http://dev.mysql.com/downloads/cluster/#downloads
三臺主機安裝MySQL Cluster RPM包
/etc/hosts
192.168.119.128 host1 #管理節點ndb_mgm
192.169.119.129 host2 #SQL節點1、NDB節點1
192.168.119.130 host3 #SQL節點2、NDB節點2
Notes:1.其中SQL節點與NDB節點是獨立的,可位於不同的主機上
2.MySQL Cluster的RPM包安裝後,ndbd、ndb_mgm等程式都在/usr/bin下,因此我將/usr作為basedir
三臺主機上建立mysql使用者和組、並建立目錄:
groupadd mysql
useradd -g mysql mysql
mkdir -p /opt/cluster/data
chown -R mysql:mysql /opt/cluster
一、管理節點(host1)
管理節點的配置檔案
vi /opt/cluster/config.ini
[ndbd default]
DataMemory=40M
NoOfReplicas=2
IndexMemory=10M
[ndb_mgmd]
id=1
hostname=host1
DataDir=/opt/cluster
[ndbd]
id=2
HostName=host2
DataDir=/opt/cluster #實際的Cluster資料檔案存放位置
[ndbd]
id=3
HostName=host3
DataDir=/opt/cluster #實際的Cluster資料檔案存放位置
[mysqld]
id=4
HostName=host2
[mysqld]
id=5
HostName=host3
二、NDB和SQL節點(host2和host3)
配置檔案:vi /etc/my.cnf
[mysqld] #針對MySQL Server
port = 3306 #(SQL節點2為:3307)
socket = /tmp/mysql.sock
datadir=/opt/cluster/data #MySQL節點中,系統資料檔案存放的位置
basedir=/usr
ndbcluster
ndb-connectstring=host1
#default_storage_engine=ndb #可在整個環境搭建好後,再加上這兩個引數,
#default_tmp_storage_engine=ndb #否則在初始化啟動SQL節點時會報錯。
[mysql_cluster] #針對NDB
ndb-connectstring=host1
[client]
socket=/tmp/mysql.sock
三、SQL節點資料庫系統檔案初始化(host2和host3)
mysql_install_db --datadir=/opt/cluster/data --basedir=/usr --user=mysql
四、啟動
1.啟動管理節點(host1)
ndb_mgmd --initial -f /opt/cluster/config.ini
2.分別啟動NDB節點(host2和host3)
ndbd --initial
3.分別啟動SQL節點(host2和host3) #此步驟經常會報各種錯誤,需要檢視localhost.err的[ERROR]記錄逐個解決
mysqld_safe --defaults-file=/etc/my.cnf --datadir=/opt/cluster/data --user=mysql &
4.檢視各節點狀態:
ndb_mgm -e show
如下:
[root@host2 cluster]# ndb_mgm -e show
Connected to Management Server at: host1:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @192.168.119.129 (mysql-5.6.11 ndb-7.3.2, Nodegroup: 0, Master)
id=3 @192.168.119.130 (mysql-5.6.11 ndb-7.3.2, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.119.128 (mysql-5.6.11 ndb-7.3.2)
[mysqld(API)] 2 node(s)
id=4 @192.168.119.129 (mysql-5.6.11 ndb-7.3.2)
id=5 @192.168.119.130 (mysql-5.6.11 ndb-7.3.2)
5.如果root使用者無法從host2連線到host3的MySQL Server,則需增加root從host2訪問host3 的許可權:
在host3上:grant usage on *.* to root@host2;
6.可以修改MySQL Server的預設引數:
default_storage_engine=ndb
default_tmp_storage_engine=ndb
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26355921/viewspace-1162527/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL InnoDB Cluster環境搭建和簡單測試MySql
- Dapr-簡介及環境搭建
- Mysql ndb-cluster centos6.4 簡單配置MySqlCentOS
- 環境搭建及介紹
- MySQL NDB Cluster和Galera Cluster的主要特性和優缺點介紹MySql
- 【美妙的Python之一】Python簡介及環境搭建Python
- 搭建Cluster最好環境一致
- Angular環境搭建及簡單體驗Angular
- Zookeeper環境搭建及簡單練習
- MySQL NDB Cluster,Galera Cluster和Percona XtraDB Cluster優缺點總結MySql
- mysql cluster ndb 記憶體表和磁碟表MySql記憶體
- Elasticsearch使用系列-ES簡介和環境搭建Elasticsearch
- Flutter學習之路(一)Flutter簡介及Window下開發環境搭建Flutter開發環境
- 雲端計算管理平臺之OpenStack簡介及基礎環境搭建
- MySQL叢集 NDB 7.5介紹MySql
- MySQL Cluster開發環境快速部署(中文)MySql開發環境
- Redis系列(一):Redis簡介及環境安裝Redis
- Cluster簡介
- LEMP環境搭建及配置(三)安裝MySQL5.6MySql
- Maven環境搭建和介紹Maven
- 1. MySQL Galera Cluster全解析 Part 1 Galera Cluster 簡介MySql
- MySQL環境搭建利器---SandboxMySql
- 新環境搭建Mysql主從MySql
- LAMP環境搭建-MySQL5.6LAMPMySql
- Dockfile搭建極簡LNMP環境LNMP
- Appium 介紹與環境搭建APP
- java簡介--環境安裝Java
- Flash開發環境簡介開發環境
- 第二章 環境搭建及基礎知識介紹
- Redis實戰(一)Redis簡介及環境安裝(Windows)RedisWindows
- linux環境中ab命令簡介及結果分析Linux
- Spring1:Spring簡介、環境搭建、原始碼下載及匯入MyEclipseSpring原始碼Eclipse
- MySQL Cluster 7.0 +LVS 構建高可用環境MySql
- 搭建Hyperledger Fabric 2.3.2開發環境及簡單案例執行開發環境
- 在容器環境搭建mysql備庫MySql
- griffin環境搭建及功能測試
- BugFree環境搭建及使用
- 簡易的開發環境搭建開發環境