您好,登錄后才能下訂單哦!
本篇內容主要講解“MySQL Cluster7.2.4怎么安裝部署”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“MySQL Cluster7.2.4怎么安裝部署”吧!
1.1 mysql-cluster簡介
簡單的說,MySQLCluster實際上是在無共享存儲設備的情況下實現的一種完全分布式數據庫系統,其主要通過NDBCluster(簡稱NDB)存儲引擎來實現。
MySQLCluster剛剛誕生的時候可以說是一個可以對數據進行持久化的內存數據庫,所有數據和索引都必須裝載在內存中才能夠正常運行,但是最新的MySQLCluster版本已經可以做到僅僅將所有索引和索引數據裝載在內存中即可,實際的數據可以不用全部裝載到內存中,架構如下圖所示:
1.2Cluster結構圖
1.3 Cluster主要結構
1、管理(MGM)節點:
這類節點的作用是管理MySQLCluster內的其他節點,如提供配 置數據、啟動并停止節點、運行備份等。由于這類節點負責管理其他節點的配置,應在啟動其他節點之前首先啟 動這類節點。MGM節點是用命令“ndb_mgmd”啟動的。
對硬件沒什么要求,差一點的機器完全能夠勝任。默認端口1186。
2、數據節點:
這類節點用于保存Cluster的數據。數據節點的數目與副本的數目相關,是片段的倍數。例如,對于兩個副本,每個副本有兩個片段,那么就有4個數據節點。不過沒有必要設置多個副本。數據節點是用命令“ndbd”啟動的。
可以選擇大內存,cpu也相對來講不錯的,尤其是以后ndbmtd對多核Cpu的支持。默認端口2202
?3、SQL節點:
這是用來訪問Cluster數據的節點。對于MySQLCluster,客戶端節點是使用NDBCluster存儲引擎的傳統MySQL服務器。通常,SQL節點是使用命令“mysqld–ndbcluster”啟動的,或將“ndbcluster”添加到“my.cnf”后使用“mysqld”啟動。
對cpu要求較高,選擇多核,高頻CPU較好
1.4 Cluster特性
分布式:分布式存儲引擎,可以由多個NDBCluster存儲引擎組成集群分別存放整體數據的一部分
支持事務:和Innodb一樣,支持事務
可與mysqld不在一臺主機:可以和mysqld分開存在于獨立的主機上,然后通過網絡和mysqld通信交互。
內存需求量巨大:新版本索引以及被索引的數據必須存放在內存中,老版本所有數據和索引必須存在與內存中
Cluster使用自動鍵值識別數據分片方案,用戶無需關心數據切片方案(在5.1及以后提供了分區鍵規則),透明實現分布式數據庫,數據分片規則根據1、主鍵、2唯一索引、3自動行標識rowid完成,再集群個數進行分布,其訪問數據猶如RAID訪問機制一樣,能并行從各個節點抽取數據,散列數據,當使用非主鍵或分區鍵訪問時,將導致所有簇節點掃描,影響性能(這是Cluster面對的核心挑戰)
適用場景:
具有非常高的并發需求
對單個請求的響應并不是非常的critical
查詢簡單,過濾條件較為固定,每次請求數據量較少,又不希望自己進行水平Sharding
最佳實踐
盡可能讓查詢簡單,避免數據的跨節點傳輸;盡可能滿足SQL節點的計算性能,大一點的集群SQL節點會明顯多余Data節點;在各節點之間盡可能使用萬兆網絡環境互聯,以減少數據在網絡層傳輸過程中的延時
1.5 mysql-cluster的優缺點
優點:
1) 99.999 %的高可用性
2) 快速的自動失效切換
3) 靈活的分布式體系結構,沒有單點故障
4) 高吞吐量和低延遲
5) 可擴展性強,支持在線擴容
缺點:
1) 存在很多限制,比如:不支持外鍵,數據行不能超過8K(不包括BLOB和text中的數據)
2) 部署、管理、配置很復雜
3) 占用磁盤空間大,內存大
4) 備份和恢復不方便
5) 復雜的sql查詢性能一般
2 安裝
2.1 環境介紹
mysqlcluster7.2.4安裝配置
準備64位版本 5臺服務器4G內存60G硬盤2cpu
10.100.200.36 64位
10.100.200.37 64位
10.100.200.38 64位
10.100.200.39 64位
10.100.200.41 64位
管理節點(ndb_mgmd)10.100.200.36 64位
數據節點(ndbd) 10.100.200.37 64位 10.100.200.38 64位
SQL節點(mysqld/api) 10.100.200.39 64位 10.100.200.41 64位
下載安裝包:mysql-cluster-gpl-7.2.4-linux2.6-x86_64.tar.gz
http://mirror.services.wisc.edu/mysql/Downloads/MySQL-Cluster-7.2/
2.1 安裝管理節點(10.100.200.36)
2.1.1解壓文件
shell> tar -xvfmysql-cluster-gpl-7.2.4-linux2.6-x86_64.tar.gz
2.1.2創建安裝目錄
shell> mkdir-p /usr/local/mysql/bin
shell> mkdir-p /usr/local/mysql/ndbdata
2.1.3添加執行文件路徑
shell> vi ~/.bash_profile
PATH=$PATH:$HOME/bin:/usr/local/mysql/bin
2.1.4拷貝執行文件
shell> cdmysql-cluster-gpl-7.2.4-linux2.6-x86_64
shell> cp bin/ndb_mgmd/usr/local/mysql/bin
shell> cp bin/ndb_mgm/usr/local/mysql/bin
2.1.5創建日志文件存儲目錄
shell> mkdir/var/lib/mysql-cluster
2.1.6創建配置文件目錄及修改配置文件
shell> mkdir/usr/local/mysql/cluster-conf
shell> vi /usr/local/mysql/cluster-conf/config.ini
2.2 管理節點配置文件
[NDBDDEFAULT]
#TotalSendBufferMemory= 256M
NoOfReplicas=2
DataMemory=2500M
IndexMemory=256M
DataDir=/var/lib/mysql-cluster
#FileSystemPath=/data/dbdata
#Redolog
FragmentLogFileSize=32M
InitFragmentLogFiles=SPARSE
NoOfFragmentLogFiles=8
RedoBuffer=1024M
StringMemory=25
LockPagesInMainMemory=1
MaxNoOfTables=4096
MaxNoOfOrderedIndexes=2048
MaxNoOfUniqueHashIndexes=1024
MaxNoOfAttributes=24576
MaxNoOfTriggers=14336
ODirect=1
MaxNoOfConcurrentTransactions=10000
MaxNoOfConcurrentOperations=50000
MaxNoOfLocalOperations=55000
TimeBetweenGlobalCheckpoints=1000
TimeBetweenEpochs=100
TimeBetweenWatchdogCheckInitial=60000
TransactionBufferMemory=10M
DiskCheckpointSpeed=10M
DiskCheckpointSpeedInRestart=100M
TimeBetweenLocalCheckpoints=20
SchedulerSpinTimer=400
SchedulerExecutionTimer=100
RealTimeScheduler=1
BackupMaxWriteSize=1M
BackupDataBufferSize=16M
BackupLogBufferSize=4M
BackupMemory=20M
MaxNoOfExecutionThreads=4
TransactionDeadLockDetectionTimeOut=10000
BatchSizePerLocalScan=512
###Increasing the LongMessageBufferb/c of a bug (20090903)
LongMessageBuffer=8M
###Heartbeating
HeartbeatIntervalDbDb=15000
HeartbeatIntervalDbApi=15000
[MGMDEFAULT]
PortNumber:1186
DataDir:/var/lib/mysql-cluster1
[TCPDEFAULT]
SendBufferMemory:64M
#######################################
#Change HOST1 to the name of the NDB_MGMD host
#Change HOST8 to the name of the NDBD host
#Change HOST9 to the name of the NDBD host
#######################################
[NDB_MGMD]
NodeId:1
HostName:10.100.200.36
ArbitrationRank:1
[NDBD]
NodeId:4
HostName:10.100.200.37
[NDBD]
NodeId:5
HostName:10.100.200.38
######################################################
#Note: The following can be MySQLDconnections or #
# NDB API application connecting to thecluster #
######################################################
[API]
NodeId:10
HostName:10.100.200.39
ArbitrationRank:2
[API]
NodeId:11
HostName:10.100.200.39
ArbitrationRank:2
[API]
NodeId:12
HostName:10.100.200.39
ArbitrationRank:2
[API]
NodeId:13
HostName:10.100.200.39
ArbitrationRank:2
[API]
NodeId:14
HostName:10.100.200.39
ArbitrationRank:2
[API]
NodeId:15
HostName:10.100.200.41
ArbitrationRank:2
[API]
NodeId:16
HostName:10.100.200.41
ArbitrationRank:2
[API]
NodeId:17
HostName:10.100.200.41
ArbitrationRank:2
3 安裝數據節點(10.100.200.37 10.100.200.38)
解壓文件
shell>tar -zxvfmysql-cluster-gpl-7.2.4-linux2.6-x86_64.tar.gz
創建安裝目錄
shell>mkdir -p /usr/local/mysql/bin
shell>mkdir -p /usr/local/mysql/ndbdata
拷貝執行文件
shell>cp mysql-cluster-gpl-7.2.4-linux2.6-x86_64/bin/ndbd/usr/local/mysql/bin
添加執行文件路徑
shell>vim ~/.bash_profile
PATH=$PATH:$HOME/bin:/usr/local/mysql/bin
創建配置文件:
shell>vim /etc/my.cnf
分別在主機添加如下內容:
[mysql_cluster]
#配置數據節點連接管理節點
ndb-connectstring=10.100.200.36
4 安裝SQL節點1(10.100.200.39 10.100.200.41)
解壓文件
shell>tar -zxvfmysql-cluster-gpl-7.2.4-linux2.6-x86_64.tar.gz
拷貝安裝文件
shell>mvmysql-cluster-gpl-7.2.4-linux2.6-x86_64 /usr/local/mysql
添加mysql用戶
shell>groupaddmysql
shell>useradd-gmysqlmysql
添加權限
shell>chown -Rmysql:mysql/usr/local/mysql
拷貝配置文件
shell>cp /usr/local/mysql/support-files/my-large.cnf/etc/my.cnf
初始化數據庫
shell>cd /usr/local/mysql
shell>scripts/mysql_install_db--user=mysql
拷貝守護進程所需文件
shell>cp /usr/local/mysql/support-files/mysql.server/etc/init.d/mysqld
配置守護進程
shell>chkconfig--addmysqld
shell>chkconfig--level 35mysqld on
添加執行文件路徑
shell>vim~/.bash_profile
PATH=$PATH:$HOME/bin:/usr/local/mysql/bin
更改配置文件
shell>vim /etc/my.cnf
分別編輯如下信息:
[mysqld]#配置SQL節點與管理節點連接
port= 3307
socket= /tmp/mysql.sock
ndbcluster
ndb-connectstring=10.100.200.36
5啟動以及關閉cluster
啟動順序管理節點->數據節點->SQL節點
a、啟動管理節點
[root@banggocluster-conf]#ndb_mgmd-f /usr/local/mysql/cluster-conf/config.ini
b、啟動數據節點
ndbd–initial #(第一次啟動必須添加選項,另外備份/恢復,修改配置文件也需要執行)
ndbd #不是第一次啟動需要執行的命令
c、啟動SQL節點
/etc/rc.d/init.d/mysqldstart或servicemysqldstart
啟動后可以用mysql-uroot -p驗證mysql服務狀態
關閉順序:SQL節點->管理節點
a、關閉SQL節點
/etc/rc.d/init.d/mysqldstop或servicemysqld stop
b、關閉數據節點
ndbdstop
c、關閉管理節點
ndb_mgm〉shutdown
6驗證cluster的狀態
驗證配置的正確性
1、在管理節點執行:ndb_mgm-> show
[root@banggo~]# ndb_mgm
--NDB Cluster -- Management Client --
ndb_mgm>show
Connectedto Management Server at: localhost:1186
ClusterConfiguration
---------------------
[ndbd(NDB)] 2 node(s)
id=4 @10.100.200.37 (mysql-5.5.19 ndb-7.2.4, Nodegroup:0, Master)
id=5 @10.100.200.38 (mysql-5.5.19 ndb-7.2.4, Nodegroup:0)
[ndb_mgmd(MGM)]1 node(s)
id=1 @10.100.200.36 (mysql-5.5.19 ndb-7.2.4)
[mysqld(API)] 2 node(s)
id=10 @10.100.200.39 (mysql-5.5.19 ndb-7.2.4)
………
id=14 @10.100.200.41 (mysql-5.5.19 ndb-7.2.4)
………
7 ndbcluster存儲引擎功能測試(與innoDB對比)
8 MySQLClster備份與恢復
備份
采用ndb_mgm管理客戶端來備份,在管理節點執行ndb_mgm即可進入管理命令行,輸入startbackup開始備份所有節點,如果后面還跟著對應數據節點的id就只備份對應的數據節點
恢復(參考:http://xxtianxiaxing.iteye.com/blog/563063)
使用命令ndb_restore進行恢復,具體過程如下:
啟動管理節點
/usr/bin/ndb_mgmd-f /usr/local/mysql/mysql-cluster/config.ini--reload
啟動數據節點:
/usr/bin/ndbd --initial
第一個節點恢復的時候
在第一個節點恢復表結構(恢復的時候如果不涉及到表結構的變更,不用使用參數-m)
/usr/bin/ndb_restore -c 10.100.200.37-n 11 -b 1 -m --backup_path=/data/backup/backup-1/
恢復數據,恢復數據的時候可以幾個ndb節點一起執行,速度會快一點!
/usr/bin/ndb_restore -c 10.100.200.37-n 11 -b 1 -r --backup_path=/data/backup/backup-1/
其他節點恢復的時候(以后的節點不需要加-m參數)
/usr/bin/ndb_restore -c 192.168.100.223 -n 11 -b 1 -r --backup_path=/data/dbdata1/BACKUP/BACKUP-1/
9 MySQLClster在線添加節點1
增加或減少數據節點的數量和NoOfReplicas有關,一般來說NoOfReplicas是2,那么增加或減少的數量也應該是成對的,否則要設置另外的NoOfReplicas。
首先是在配置文件中添加兩個節點的設置,如下:
?viconfig.ini 添加
[NDBD]
id=21
HostName=10.100.200.37
[NDBD]
id=22
HostName=10.100.200.38
用ndb_mgm工具,停掉管理節點,然后重新啟動管理節點
執行ndb_mgm進入管理命令界面,找到管理節點的id,然后執行管理節點idstop,退出
執行
/usr/bin/ndb_mgmd-f /usr/local/mysql/mysql-cluster/config.ini --reload 重新啟動管理節點
登陸上去用show命令查看,是否出現了新添加的兩個節點!
環狀重啟(一次重啟數據節點和sql節點)
初始化新添加的兩個節點:
ndbd--initial (執行初始化之后會自動創建數據文件,undo日志文件等等)
通過ndb_mgm創建nodegroup
CREATENODEGROUP 21,22s
重新分配cluster的數據
SELECTTABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE ENGINE ='NDBCLUSTER';
ALTERONLINE TABLE table_nameREORGANIZE PARTITION;
alteronline table card_packagereorganize partition;
然后通過show命令或者使用ndb_desc命令查看
ndb_desc-c 10.80.30.39 -dbgcarddbcard_package-p
-c后面跟管理節點的ip,-d跟數據庫的名字,table_name為表名,-p輸出分區的詳細信息
10 MySQLClster用戶權限共享
在sql節點41上面執行mysql -uroot-p < /usr/local/mysql/share/ndb_dist_priv.sql
在mysql終端調用名字為mysql_cluster_move_privileges的存儲過程,這個存儲過程的功能是備份權限表,然后將表的存儲引擎轉換為ndbcluster引擎。
mysql>CALLmysql.mysql_cluster_move_privileges();
自動備份權限表
shell>mysqldumpmysql userdbtables_privcolumns_privprocs_priv>backup_file.sql
驗證權限表
mysql>show create tablemysql.user;看engine是否為ndbcluster。
在41上面加測試賬號
mysql>grant all on *.* to test@'10.100.200.%' identified by 'test123';
[root@banggo~]#mysql-h20.100.200.39 -utest-ptest123 -P3307;
OK,能連上,測試成功!
11.1 MySQLClster備份與恢復擴展(操作見No8)
1、簇備份概念
備份指的是在給定時間對數據庫的快照。備份包含三個主要部分:
(1)Metadata(元數據):所有數據庫表的名稱和定義。
(2)Tablerecords(表記錄):執行備份時實際保存在數據庫表中的數據。
(3)Transactionlog(事務日志):指明如何以及何時將數據保存在數據庫中的連續記錄。
每一部分(這三部分)均會保存在參與備份的所有數據節點上。在備份過程中,每個節點均會將這三個部分保存在磁盤上的三個文件中(意思是說,有幾個節點,將會把相同的數據,保存幾份.例如,2個數據節點,那么就會分別在2個節點上,保存2次,保存目錄默認為
[NDBD]
DateDir=/usr/local/mysql/BACKUP
(4)BACKUP-backup_id.node_id.ctl
包含控制信息和元數據的控制文件。每個節點均會將相同的表定義(對于簇中的所有表)保存在自己的該文件中
(5)BACKUP-backup_id-0.node_id.data
包含表記錄的數據文件,它是按片段保存的,也就是說,在備份過程中,不同的節點會保存不同的片段。每個節點保存的文件以指明了記錄所屬表的標題開始。在記錄清單后面有一個包含關于所有記錄校驗和的腳注。
(6)BACKUP-backup_id.node_id.log
包含已提交事務的記錄的日志文件。在日志中,僅保存已在備份中保存的表上的事務。參與備份的節點將保存不同的記錄,這是因為,不同的節點容納了不同的數據庫片段。
在上面所列的內容中,backup_id指的是備份ID,node_id是創建文件的節點的唯一ID。
使用管理服務器創建備份開始備份前,請確保已為備份操作恰當地配置了簇。
2、備份參數(以下參數,都寫入在mgmd的config.ini配置文件中)
本節討論的參數定義了與在線備份執行有關的內存緩沖集。
(1)BackupDataBufferSize
在創建備份的過程中,為了將數據發送到磁盤,將使用兩類緩沖。備份數據緩沖用于填充由掃描節點的表而記錄的數據。一旦將該緩沖填充到了指定的水平BackupWriteSize(請參見下面的介紹),就會將頁發送至磁盤。在將頁寫入磁盤的同時,備份進程能夠繼續填充該緩沖,直至其空間消耗完為止。出現該情況時,備份進程將暫停掃描,直至一些磁盤寫入操作完成并釋放了內存為止,然后掃描繼續。
該參數的默認值為2MB。
(2)BackupLogBufferSize
備份日志緩沖扮演的角色類似于備份數據緩沖,不同之處在于,它用于生成備份執行期間進行的所有表寫入的日志。相同的原理也適用于備份數據緩沖情形下的頁寫入,不同之處在于,當備份日志緩沖中沒有多余空間時,備份將失敗。出于該原因,備份日志緩沖的大小應足以處理執行備份時產生的負載。
該參數的默認值對于大多數應用程序均是適當的。事實上,備份失敗的原因更可能是因為磁盤寫入速度不夠,而不是備份日志緩沖變滿。如果沒有為應用程序產生的寫負載配置磁盤子系統,簇很可能無法執行所需的操作。最好按恰當的方式配置簇,使得處理器成為瓶頸而不是磁盤或網絡連接。默認值是2MB。
(3)BackupMemory
該參數是BackupDataBufferSize和BackupLogBufferSize之和。默認值是2MB+ 2MB = 4MB。
(4)BackupWriteSize
該參數指定了由備份日志緩沖和備份數據緩沖寫入磁盤的消息大小。默認值是32KB.
(5)BackupDataDir
#可更改默認的備份目錄,BackupDataDir=/mysqlback
#當然前提,mkdir/mysqlback,需要在所有數據節點上運行
也能指定存放備份的目錄。默認情況下,該目錄是FileSystemPath/BACKUP
(6)FileSystemPath
該參數指定了存放為元數據創建的所有文件、REDO日志、UNDO日志和數據文件的目錄。默認目錄是由DataDir指定的。注意,啟動ndbd進程之前,該目錄必須已存在。
(7)DataDir
該參數指定了存放跟蹤文件、日志文件、pid文件以及錯誤日志的目錄。
12.1 Join的改進1
在現在的mysqlcluster 7.2測試版本中,對join的功能進行了重大改進,可以說是一個里程碑的版本,由于前段時間做測試發現mysqlcluster 7.1.10對join的性能很不好,另外如果jion的表比較大的時候會導致節點之間的數據傳輸非常大。
我們知道在7.2之前的版本都是將jion在mysqld節點執行,這樣就需要從數據節點進行交互傳輸數據,造成join的性能非常差。現在7.2版本將join放到了數據節點執行,并行處理,較少了數據在sql節點的交互,因此性能大幅提升。
導入數據測試(省略,參見join.txt)首先將ndb_join_pushdown參數關掉進行測試
點擊(此處)折疊或打開
mysql>SELECT TABLESPACE_NAME, FILE_NAME, EXTENT_SIZE*TOTAL_EXTENTS/1024/1024 ASTOTAL_MB, EXTENT_SIZE*FREE_EXTENTS/1024/1024 AS FREE_MB, EXTRA FROMinformation_schema.FILESWHERE FILE_TYPE=\"DATAFILE\";
+-----------------+------------+--------------+--------------+----------------+
|TABLESPACE_NAME | FILE_NAME |TOTAL_MB | FREE_MB | EXTRA |
+-----------------+------------+--------------+--------------+----------------+
|ts_1 | data_1.dat |512.00000000 | 301.00000000 | CLUSTER_NODE=4 |
|ts_1 | data_1.dat |512.00000000 | 301.00000000 | CLUSTER_NODE=5 |
|ts_1 | data_1.dat |512.00000000 | 300.00000000 | CLUSTER_NODE=6 |
+-----------------+------------+--------------+--------------+----------------+
3rows in set (0.05 sec)
到此,相信大家對“MySQL Cluster7.2.4怎么安裝部署”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。