




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、MySQL Cluster集群1 MySQL Cluster介紹MySQL Cluster 實際上是在無共享存儲設備的情況下實現(xiàn)的一種完全分布式數(shù)據(jù)庫系統(tǒng),其主要通過 NDB Cluster(簡稱NDB)存儲引擎來實現(xiàn)。MySQL Cluster 剛剛誕生的時候可以說是一個可以對數(shù)據(jù)進行持久化的內(nèi)存數(shù)據(jù)庫,所有數(shù)據(jù)和索引都必須裝載在內(nèi)存中才能夠正常運行,但是最新的 MySQL Cluster 版本已經(jīng)可以做到僅僅將所有索引裝載在內(nèi)存中即可,實際的數(shù)據(jù)可以不用全部裝載到內(nèi)存中。1.1 組件介紹1.1.1 SQL節(jié)點SQL層的SQL服務器節(jié)點(后面簡稱為SQL節(jié)點):也就是我們常說的MySQL S
2、erver。主要負責實現(xiàn)一個數(shù)據(jù)庫在存儲層之上的所有事情,比如連接管理,Query優(yōu)化和響應 ,Cache管理等等,只有存儲層的工作交給了NDB數(shù)據(jù)節(jié)點去處理了。也就是說,在純粹的MySQL Cluster環(huán)境中的SQL節(jié)點,可以被認為是一個不需要提供任何存儲引擎的MySQL服務器,因為他的存儲引擎有Cluster 環(huán)境中的NDB 節(jié)點來擔任。所以,SQL層各MySQL服務器的啟動與普通的MySQL Server啟動也有一定的區(qū)別,必須要添加ndbcluster參數(shù)選項才行。我們可以添加在f配置文件中,也可以通過啟動命令行來指定。1.1.2 NDB數(shù)據(jù)節(jié)點Storage層的NDB數(shù)據(jù)節(jié)點:也就
3、是上面說的NDB Cluster。最初的NDB是一個內(nèi)存式存儲引擎,當然也會將數(shù)據(jù)持久化到存儲設備上。但是最新的NDB Cluster存儲引擎已經(jīng)改進了這一點,可以選擇數(shù)據(jù)是全部加載到內(nèi)存中還是僅僅加載索引數(shù)據(jù)。NDB節(jié)點主要是實現(xiàn)底層數(shù)據(jù)存儲功能,來保存Cluster的數(shù)據(jù)。每一個Cluster節(jié)點保存完整數(shù)據(jù)的一個fragment,也就是一個數(shù)據(jù)分片(或者一份完整的數(shù)據(jù),視節(jié)點數(shù)目和配置而定),所以只要配置得當,MySQL Cluster在存儲層不會出現(xiàn)單點的問題。一般來說,NDB節(jié)點被組織成一個一個的NDB Group,一個NDB Group實際上就是一組存有完全相同的物理數(shù)據(jù)的NDB節(jié)
4、點群。上面提到了NDB各個節(jié)點對數(shù)據(jù)的組織,可能每個節(jié)點都存有全部的數(shù)據(jù)也可能只保存一部分數(shù)據(jù),主要是受節(jié)點數(shù)目和參數(shù)來控制的。首先在MySQL Cluster主配置文件(在管理節(jié)點上面,一般為config.ini)中,有一個非常重要的參數(shù)叫NoOfReplicas,這個參數(shù)指定了每一份數(shù)據(jù)被冗余存儲在不同節(jié)點上面的份數(shù),該參數(shù)一般至少應該被設置成2,也只需要設置成2就可以了。因為正常來說,兩個互為冗余的節(jié)點同時出現(xiàn)故障的概率還是非常小的,當然如果機器和內(nèi)存足夠多的話,也可以繼續(xù)增大來更進一步減小出現(xiàn)故障的概率。此外,一個節(jié)點上面是保存所有的數(shù)據(jù)還是一部分數(shù)據(jù)還受到存儲節(jié)點數(shù)目的限制。NDB
5、存儲引擎首先保證NoOfReplicas參數(shù)配置的要求來使用存儲節(jié)點,對數(shù)據(jù)進行冗余,然后再根據(jù)節(jié)點數(shù)目將數(shù)據(jù)分段來繼續(xù)使用多余的NDB節(jié)點。分段的數(shù)目為節(jié)點總數(shù)除以NoOfReplicas 所得。1.1.3 Manager節(jié)點負責管理各個節(jié)點的Manage節(jié)點主機;管理節(jié)點負責整個Cluster集群中各個節(jié)點的管理工作,包括集群的配置,啟動關閉各節(jié)點,對各個節(jié)點進行常規(guī)維護,以及實施數(shù)據(jù)的備份恢復等。管理節(jié)點會獲取整個Cluster環(huán)境中各節(jié)點的狀態(tài)和錯誤信息,并且將各 Cluster 集群中各個節(jié)點的信息反饋給整個集群中其他的所有節(jié)點。由于管理節(jié)點上保存了整個Cluster 環(huán)境的配置,同
6、時擔任了集群中各節(jié)點的基本溝通工作,所以他必須是最先被啟動的節(jié)點。1.2 應用場景2 MySQL Cluster搭建2.1 安裝包下載1、下載下載地址:2、下載下載地址:2.2 目錄說明/data/software/ 軟件存放目錄/data/program/mysqlCluster/ 數(shù)據(jù)存放路徑2.3 環(huán)境準備搭建 MySQL Cluster首先需要至少一個管理節(jié)點主機來實現(xiàn)管理功能,一個SQL節(jié)點主機來實現(xiàn)MySQL server功能和兩個ndb節(jié)點主機實現(xiàn)NDB Cluster的功能。我在這里測試使用雙SQL節(jié)點來搭建測試環(huán)境,具體信息如下:2.3.1 系統(tǒng)及網(wǎng)絡準備所有節(jié)點均使用Cen
7、tOS7.0操作系統(tǒng),采用Mini最簡化安裝。系統(tǒng)鏡像:CentOS-7-x86_64-DVD-1503-01.isoMySQL節(jié)點1 1 sql01MySQL節(jié)點2 1 sql02ndb節(jié)點1 1 ndb01ndb節(jié)點2 1 ndb02管理節(jié)點 1 mgr2.3.2 修改主機名稱#vim /etc/HOSTNAMEmgr#vim /etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4:1 localhost localhost.localdomain localhost6 l
8、ocalhost6.localdomain610.0.33.11 mgr10.0.33.137 ndb0210.0.33.130 ndb0110.0.33.217 sql0110.0.33.219 sql022.3.3 關閉SElinux和防火墻1、關閉系統(tǒng)防火墻#systemctl stop firewalld.service 關閉防火墻#systemctl disable firewalld.service 禁用防火墻2、關閉SElinux#sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config#setenf
9、orce 0 立即生效2.3.4 安裝編譯代碼需要的包#yum -y install make git gcc-c+ bison-devel ncurses-devel perl per-devel ncurses-devel bison cmake java-1.8.0-openjdk 2.3.5 mysql舊版本清除首先使用如下命令來清理之前操作系統(tǒng)自帶的mysql安裝: # yum -y remove mysql 然后使用如下命令: # rpm -qa | grep mysql* 對于找到的剩余mysql包,請按照如下的命令格式予以刪除: # rpm -e -nodeps my
10、sql-libs-5.1.61-4.el6.x86_64 # rpm -e -nodeps2.4 創(chuàng)建數(shù)據(jù)存放目錄# mkdir -p /data/program/mysqlCluster/bin,ndbdata,tmp2.5 新建mysql用戶及用戶組# groupadd mysql# useradd -g mysql -s /usr/sbin/nologin mysql# chown -R mysql:mysql /data/program/mysqlCluster2.6 解壓縮安裝包# cd /data/software# tar xzvf# tar xzvf# cd mysql-clu
11、ster-gpl-7.5.82.7 編譯將以下全部拷貝到窗口執(zhí)行。注意,特別強調(diào),下面編譯參數(shù)的"="之間不能有空格。#cmake -DCMAKE_INSTALL_PREFIX=/data/program/mysqlCluster -DMYSQL_UNIX_ADDR=/data/program/mysqlCluster/tmp/mysql-cluster.sock -DMYSQL_DATADIR=/data/program/mysqlCluster/ndbdata-DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_
12、ci -DWITH_EXTRA_CHARSETS:STRING=utf8,gbk -DEXTRA_CHARSETS=all -DWITH_EMBEDDED_SERVER=0 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_NDBCLUSTE
13、R_STORAGE_ENGINE=1 -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DMYSQL_USER=mysql -DWITH_DEBUG=0 -DWITH_NDB_JAVA=OFF-DDOWNLOAD_BOOST=1 -DWITH_BOOST=/data/software -DENABLE_DOWNLOADS=1若此步發(fā)生錯誤,干掉當前目錄下的CMakeCache.txt,重新再執(zhí)行一次。rootmgr mysql-cluster-gpl-7.5.8 # rm -rf CMakeCache.txt安裝成功!# make &&am
14、p; make install過程會持續(xù)大概40分鐘。2.8 配置環(huán)境變量#vi /etc/profile#在文件中添加以下內(nèi)容export PATH=$PATH:/data/program/mysqlCluster/bin# source /etc/profile2.9 安裝My Cluster#cd /data/program/mysqlCluster/bin/#mysqld -collation-server=utf8_general_ci -character-set-server=utf8 -user=mysql -basedir=/data/program/mysqlCluster
15、 -datadir=/data/program/mysqlCluster/ndbdata -secure-file-priv=/data/program/mysqlCluster/test/ -initialize#將標紅色的密碼記下來,下面有用。密碼為:g_kKsm6j=ggj注意:需要先確保 datadir 目標目錄下是空的,避免誤操作破壞已有數(shù)據(jù)。如果想強制初始化,那么直接刪除data目錄就可以了。至此,準備的虛擬機模板已搞定!模板名稱為:(MySQL Cluster template)。下一步將通過此模板創(chuàng)建兩個MySQL節(jié)點,兩個NDB節(jié)點。并將這些節(jié)點修改ip地址和主機名稱。2.1
16、0 管理節(jié)點配置2.10.1 創(chuàng)建配置文件目錄及文件 # mkdir /data/program/mysqlCluster/etc# vi /data/program/mysqlCluster/etc/config.ini#config.ini配置文件如下所示ndb_mgmd defaultdatadir=/data/program/mysqlCluster/ndbdatandbd defaultNoOfReplicas = 2DataMemory = 200MIndexMemory = 20Mdatadir=/data/program/mysqlCluster/ndbdatandb
17、_mgmdNodeId = 1HostNamedatadir=/data/program/mysqlCluster/ndbdatandbdNodeId = 11HostNamedatadir=/data/program/mysqlCluster/ndbdatandbdNodeId=12HostNamedatadir=/data/program/mysqlCluster/ndbdatamysqldNodeId = 21HostNamemysqldNodeId=22HostNamemysqldmysqldmysqld2.10.2 啟動管理節(jié)點首次加載/data/program/mysqlClust
18、er/etc/config.ini文件有改變,其它時候不要加,除非是在備份、恢復或配置變化后重啟時,其他時候不要加,不然數(shù)據(jù)就清空了。正常啟動方式:# ndb_mgmd -f /data/program/mysqlCluster/etc/config.ini -initial如果有改動要加上:# rm -rf /data/program/mysqlCluster/mysql# ndb_mgmd -f /data/program/mysqlCluster/etc/config.ini2.10.3 查看集群狀態(tài)# ndb_mgm- NDB Cluster - Management Client -
19、ndb_mgm> showConnected to Management Server at: localhost:1186Cluster Configuration-ndbd(NDB)2 node(s)id=11 (not connected, accepting connect from 10.0.33.130)id=12 (not connected, accepting connect from 10.0.33.137)ndb_mgmd(MGM)1 node(s)id=110.0.33.11 (mysql-5.7.20 ndb-7.5.8)mysqld(API)5 node(s)
20、id=21 (not connected, accepting connect from 10.0.33.217)id=22 (not connected, accepting connect from 10.0.33.219)id=23 (not connected, accepting connect from any host)id=24 (not connected, accepting connect from any host)id=25 (not connected, accepting connect from any host)關閉管理節(jié)點:ndb_mgm> shutd
21、own2.11 NDB節(jié)點配置2.11.1 編輯f編輯/etc/f,在最后添加如下。#vi f ndbclusterndb-connectstring=10.mysql_clusterndb-connectstring=10.2.11.2 啟動數(shù)據(jù)節(jié)點只是在第一次啟動或在備份恢復或配置變化后重啟ndbd時,才加initial參數(shù)!#ndbd initial2017-11-02 22:58:00 ndbd INFO - Angel connected to '10.0.33.11:1186'2017-11-02 22:58:00 ndbd INFO - Angel allocat
22、ed nodeid: 11正常啟動方式:#ndbd2.11.3 查看 ndbd 啟動狀態(tài)# ps -ef | grep ndbdroot 3209 1 0 07:35 ? 00:00:00 ndbd -initialroot 3210 3209 13 07:35 ? 00:00:02 ndbd -initialroot 3253 2936 0 07:36 pts/0 00:00:00 grep -color=auto ndbd2.12 MySQL節(jié)點配置2.12.1 設置mysqld的開機啟動:# cd# cp mysql.server /etc/init.d/mysql# chmod 755
23、 /etc/init.d/mysql # chkconfig mysql on2.12.2 編輯f編輯/etc/f,添加如下內(nèi)容:mysqldbasedir =/data/program/mysqlClusterdatadir =/data/program/mysqlCluster/ndbdatasocket=/data/program/mysqlCluster/tmp/mysql-cluster.sockndbclusterndb-connectstring = sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLESclientdefault-
24、character-set = utf8mysqldcharacter_set_server=utf8mysql_clusterndb-connectstring = 2.12.3 啟動mysql# service mysql start #啟動Starting MySQL. SUCCESS!# service mysql stop #停止# service mysql restart #重啟2.12.4 重置root帳戶的密碼將所有MySQL節(jié)點重新設置賬戶密碼,將前面步驟“安裝My cluster”隨機生成的密碼輸入。# mysql -u root -pmysql> SET PASS
25、WORD = PASSWORD('123456');將外部訪問root 的密碼設置為123456mysql> GRANT ALL PRIVILEGES ON *.* TO 'root''%' IDENTIFIED BY '123456' WITH GRANT OPTION;2.12.5 集群狀態(tài)查看節(jié)點全部啟動成功后,在管理節(jié)點使用ndb_mgm工具的show命令查看集群狀態(tài):ndb_mgm工具是ndb_mgmd(MySQL Cluster Server)的客戶端管理工具,通過該工具可以方便的檢查Cluster的狀態(tài),啟動備
26、份,關閉等功能。更詳細的方法可以通過ndb_mgm -help命令來進行查看。從上面顯示的狀態(tài)可以看出如下信息。(1)集群目前的管理服務器端口是1186。Connected to Management Server at: localhost:1186(2)集群的數(shù)據(jù)節(jié)點(NDB)有2個。(3)集群的管理節(jié)點有一個。(4)SQL節(jié)點有5個,目前處于連接狀態(tài)的有2個。到這里MySQL Cluster就已經(jīng)搭建完成了。3 高可用測試成功啟動后,下面來測試一下Cluster的功能。如果要使用cluster,則表的引擎必須為NDB,其他類型存儲引擎的數(shù)據(jù)不會保存到數(shù)據(jù)節(jié)點中。對于cluster的一個重
27、要功能就是防止單點故障。我們下面對這些問題分別來進行測試。3.1 NDB存儲引擎測試(1)在任意一個SQL節(jié)點(我這里選擇)的test庫中創(chuàng)建測試表t1,設置存儲引擎為NDB,并插入兩條測試數(shù)據(jù):mysql> create table t1 ( -> id int, -> name varchar(20) -> ) -> engine=ndb -> ;Query OK, 0 rows affected (0.44 sec)mysql> insert into t1 select 1,'yayun'Query OK, 1 row affe
28、cted (0.11 sec)Records: 1 Duplicates: 0 Warnings: 0mysql> insert into t1 select 1,'atlas'Query OK, 1 row affected (0.03 sec)Records: 1 Duplicates: 0 Warnings: 0(2)在另外一SQL節(jié)點()查詢test庫中t1表,結果如下:mysql> select * from test.t1;+-+-個-+| id | name |+-+-+| 1 | atlas | 1 | yayun |+-+-+2 rows in s
29、et (0.08 sec)顯然,兩個SQL節(jié)點查詢的數(shù)據(jù)時一致的。(3)在SQL節(jié)點上把測試表t1引擎改為MyISAM,再次插入測試數(shù)據(jù):mysql> alter table t1 engine=myisam;Query OK, 2 rows affected (0.50 sec)Records: 2 Duplicates: 0 Warnings: 0mysql> insert into t1 select 2,'good boy'Query OK, 1 row affected (0.00 sec)Records: 1 Duplicates: 0 Warnings
30、: 0(4)在SQL節(jié)點上再次查詢表t1,結果如下:mysql> select * from t1;ERROR 1146 (42S02): Table 'test.t1' doesn't existmysql> show tables;Empty set (0.04 sec)直接報錯,說表不存在了。(老版本是報ERROR 1412:Table definition ha changed,please retry transaction)。(5)我們再次改回NDB引擎。mysql> alter table t1 engine=ndb;Quer
31、y OK, 3 rows affected (0.25 sec)Records: 3 Duplicates: 0 Warnings: 0(6)再次進行查詢?nèi)缦拢簃ysql> select * from t1;+-+-+| id | name |+-+-+| 1 | atlas | 2 | good boy | 1 | yayun |+-+-+3 rows in set (0.02 sec)發(fā)現(xiàn)表t1的數(shù)據(jù)再次同步到了數(shù)據(jù)節(jié)點。所有SQL節(jié)點又都可以正常查詢數(shù)據(jù)。3.2 單點故障測試對于任意一種節(jié)點,都存在單點故障的可能性。在cluster的設置過程中,應該盡量對每一類節(jié)點設置冗余,以防止
32、單點故障發(fā)生時造成的應用中斷。對于管理節(jié)點,一般不需要特殊的配置,只需要將管理工具和配置文件防止多臺服務器上即可。下面我們測試一下SQL節(jié)點和NDB(數(shù)據(jù)節(jié)點)的單點故障。3.2.1 SQL節(jié)點單點故障對于上面的測試環(huán)境中,我們設置了兩個SQL節(jié)點,應用從兩個節(jié)點對數(shù)據(jù)訪問都可以得到一致的結果。如果有一個節(jié)點故障,系統(tǒng)會正常運行嗎?我們測試便知。(1)將SQL節(jié)點上的MySQL服務停止:root # /etc/init.d/mysqld stopShutting down MySQL. OK root # (2)查看cluster狀態(tài):ndb_mgm> showCluster Confi
33、guration-ndbd(NDB) 2 node(s)id=2 (mysql-5.5.19 ndb-7.2.4, Nodegroup: 0, Master)id=3 (mysql-5.5.19 ndb-7.2.4, Nodegroup: 1)ndb_mgmd(MGM) 1 node(s)id=1 (mysql-5.5.19 ndb-7.2.4)mysqld(API) 3 node(s)id=4 (mysql-5.5.19 ndb-7.2.4)id=5 (not connected, accepting connect from )id=6 (not connected, accepting
34、connect from any host)可以發(fā)現(xiàn)SQL節(jié)點已經(jīng)斷開,但是另外一個SQL節(jié)點仍然處于正常狀態(tài)。(3)從SQL節(jié)點上查看表t1,結果如下:mysql> select * from t1;+-+-+| id | name |+-+-+| 2 | good boy | 1 | yayun | 1 | atlas |+-+-+3 rows in set (0.01 sec)顯然,SQL節(jié)點的單點故障并沒有引起數(shù)據(jù)查詢的故障。對于應用來說,需要改變的就是將以前對故障節(jié)點的訪問改為對非故障節(jié)點的訪問(SQL節(jié)點前面可以掛LVS,然后做各種檢測)3.2.2 NDB節(jié)點的單點故障在這個
35、測試環(huán)境中,數(shù)據(jù)節(jié)點也是兩個,那么他們對數(shù)據(jù)的存儲是互相鏡像還是一份數(shù)據(jù)分成幾塊存儲呢?這個答案關鍵在于配置文件中NDBD DEFAULT組中的NoOfReplicas參數(shù),如果這個參數(shù)等于1,表示只有一份數(shù)據(jù),但是分成N塊分別存儲在N個數(shù)據(jù)節(jié)點上,如果該值等于2,則表示數(shù)據(jù)被分成N/2,每塊數(shù)據(jù)都有兩個備份,這樣即使有任意一個節(jié)點發(fā)生故障,只要它的備份節(jié)點正常,數(shù)據(jù)就可以正常查詢。在下面的例子中,先將兩個數(shù)據(jù)節(jié)點之一停止,訪問表t1,看能否正常訪問;然后將NoOfReplicas配置改為2,這時,數(shù)據(jù)節(jié)點實際上已經(jīng)互為鏡像,保存了兩份。這時再停止任意一個數(shù)據(jù)節(jié)點,看是否能訪問表t1。(1)將
36、數(shù)據(jù)節(jié)點上的NDB進程停止:root # ps -ef | grep ndbdroot 2266 1 0 21:51 ? 00:00:00 ndbd -initialroot 2267 2266 1 21:51 ? 00:01:03 ndbd -initialroot 2368 1300 0 23:06 pts/0 00:00:00 grep ndbdroot # pkill -9 ndbdroot # ps -ef | grep ndbdroot 2371 1300 0 23:07 pts/0 00:00:00 grep ndbd(2)在任意節(jié)點,這里是查看表t1的數(shù)據(jù):mysql>
37、select * from t1;ERROR 1296 (HY000): Got error 157 'Unknown error code' from NDBCLUSTERmysql> 顯然無法訪問表t1的數(shù)據(jù)了。(3)將配置文件中的NoOfReplicas改為2,按照前面的步驟重新啟動集群:# grep 'NoOfReplicas' /data/program/mysql-cluster/etc/config.ini NoOfReplicas=2 #每個數(shù)據(jù)節(jié)點的鏡像數(shù)量最后發(fā)現(xiàn)無法啟動數(shù)據(jù)節(jié)點,查看錯誤日志如下:Time: Tuesday 15 Ap
38、ril 2014 - 23:22:51Status: Permanent error, external action neededMessage: Invalid configuration received from Management Server (Configuration error)Error: 2350Error data: Illegal configuration change. Initial start needs to be performed when changing no of replicas (1 != 2)Error object: DBDIH (Lin
39、e: 4820) 0x00000002Program: ndbd看來NoOfReplicas參數(shù)無法臨時更改,我們開始就需要設置好,不要到后面才想到更改,那時就悲劇了。如果重新ndbd -initial,將會丟失所有數(shù)據(jù),記住這個坑,下次就不會踩進去了。一切正常。我們現(xiàn)在停止NDB節(jié)點,看是否還能訪問數(shù)據(jù):ndb_mgm> showCluster Configuration-ndbd(NDB) 2 node(s)id=2 (not connected, accepting connect from )id=3 (mysql-5.5.19 ndb-7.2.4, Nodegroup: 0,
40、Master)ndb_mgmd(MGM) 1 node(s)id=1 (mysql-5.5.19 ndb-7.2.4)mysqld(API) 3 node(s)id=4 (mysql-5.5.19 ndb-7.2.4)id=5 (mysql-5.5.19 ndb-7.2.4)id=6 (not connected, accepting connect from any host)看見只有一個NDB節(jié)點在運行。訪問任意SQL節(jié)點查詢數(shù)據(jù),我這里用,查詢結果如下:mysql> select * from t1;+-+| name |+-+| atlas | yayun |+-+2 rows
41、in set (0.01 sec)顯然掛掉一個NDB節(jié)點不影響我們正常的數(shù)據(jù)查詢,數(shù)據(jù)節(jié)點的冗余同樣防止了單點故障。4 動態(tài)增加數(shù)據(jù)節(jié)點4.1 更新管理節(jié)點config.ini文件# vim /data/program/mysqlCluster/etc/config.ini添加ndb節(jié)點ndbdNodeId=13HostName=datadir=/data/program/mysqlCluster/ndbdatandbdNodeId=14HostName=20datadir=/data/program/mysqlCluster/ndbdata由于4.2 重新啟動管理節(jié)點服務4.2.1 停止管理
42、節(jié)點ndb_mgm> 1 stopNode 1 has shutdown.Disconnecting to allow Management Server to shutdown4.2.2 重新加載配置文件# ndb_mgmd -f /data/program/mysqlCluster/etc/config.ini -reload# ndb_mgmndb_mgm> showConnected to Management Server at: localhost:1186Cluster Configuration-ndbd(NDB)4 node(s)id=1110.0.33.130
43、(mysql-5.7.20 ndb-7.5.8, Nodegroup: 0)id=1210.0.33.137 (mysql-5.7.20 ndb-7.5.8, Nodegroup: 0, *)id=13 (not connected, accepting connect from 10.0.33.219)id=20)ndb_mgmd(MGM)1 node(s)id=110.0.33.11 (mysql-5.7.20 ndb-7.5.8)mysqld(API)1 node(s)id=2110.0.33.217 (mysql-5.7.20 ndb-7.5.8)4.2.3 重啟NDB數(shù)據(jù)節(jié)點對已經(jīng)存
44、在的數(shù)據(jù)節(jié)點執(zhí)行環(huán)狀重啟。ndb_mgm> 1 RESTARTNode 1: Node shutdown initiatedNode 1: Node shutdown completed, restarting, no start.Node 1 is being restartedndb_mgm> Node 1: Start initiated (version 7.1.20)Node 1: Started (version 7.1.20)ndb_mgm> 2 RESTARTNode 2: Node shutdown initiatedNode 2: Node shutdow
45、n completed, restarting, no start.Node 2 is being restartedndb_mgm> Node 2: Start initiated (version 7.1.20)ndb_mgm> Node 2: Started (version 7.1.20)注意:一定要等到管理端報告ndb節(jié)點已經(jīng)啟動后再重啟下一個ndb節(jié)點。4.2.4 重啟SQL節(jié)點對mysql節(jié)點執(zhí)行環(huán)狀重啟。# service mysqld restart4.2.5 初始化新NDB數(shù)據(jù)節(jié)點對新NDB數(shù)據(jù)節(jié)點進行初始化啟動。# ndbd -c -initial# ndbd
46、 -c 20 initial注意:這里不需要一個數(shù)據(jù)節(jié)點啟動后在啟動另一個,可以同時啟動。4.2.6 為新數(shù)據(jù)節(jié)點分配新的組ndb_mgm> CREATE NODEGROUP 3,4Nodegroup 1 createdndb_mgm> SHOWConnected to Management Server at: localhost:1186Cluster Configuration-ndbd(NDB)4 node(s)id=1110.0.33.130 (mysql-5.7.20 ndb-7.5.8, Nodegroup: 0)id=1210.0.33.137 (mysql-5.7
47、.20 ndb-7.5.8, Nodegroup: 0, *)id=13 10.0.33.219 (5.1.61-ndb-7.1.20, Nodegroup: 1)id=14 10.0.33.220 (5.1.61-ndb-7.1.20, Nodegroup: 1)ndb_mgmd(MGM)1 node(s)id=110.0.33.11 (mysql-5.7.20 ndb-7.5.8)mysqld(API)1 node(s)id=2110.0.33.217 (mysql-5.7.20 ndb-7.5.8)4.2.7 重新分配集群數(shù)據(jù)當新加入數(shù)據(jù)節(jié)
48、點時,已經(jīng)存在的數(shù)據(jù)或者索引不會被自動分配到新的節(jié)點上,如下所示:ndb_mgm> ALL REPORT MEMORYNode 1: Data usage is 5%(177 32K pages of total 3200)Node 1: Index usage is 0%(108 8K pages of total 12832)Node 2: Data usage is 5%(177 32K pages of total 3200)Node 2: Index usage is 0%(108 8K pages of total 12832)Node 3: Data usage is 0%
49、(0 32K pages of total 3200)Node 3: Index usage is 0%(0 8K pages of total 12832) Node 4: Data usage is 0%(0 32K pages of total 3200)Node 4: Index usage is 0%(0 8K pages of total 12832)在SQL節(jié)點上執(zhí)行對所有的ndbcluster引擎的表,分發(fā)數(shù)據(jù)命令:mysql>Alter online table 表reorganize partition; 例如: mysql> alter online table 'test.t1' reorganize partition;ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'online table 'test.t1' reorganize partition&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 統(tǒng)編版三年級語文下冊第三單元達標測試卷(含答案)
- 2019-2025年軍隊文職人員招聘之軍隊文職法學題庫檢測試卷A卷附答案
- 2019-2025年消防設施操作員之消防設備基礎知識題庫練習試卷B卷附答案
- 2019-2025年軍隊文職人員招聘之軍隊文職管理學與服務通關提分題庫及完整答案
- 2025年軍隊文職人員招聘之軍隊文職教育學題庫檢測試卷A卷附答案
- 初二壓強物理試題及答案
- 螺螄粉專業(yè)知識培訓課件
- 2025年大學生防詐騙知識競賽題庫及答案(一)
- 從愚公移山看堅持與毅力作文
- 《初識高中物理實驗:運動與力的教學計劃》
- 表面工程學第四章-表面淬火和表面形變強化技術
- 健康管理調(diào)查表
- 五步三查”流程規(guī)范要求ppt課件
- 三打白骨精英語話劇劇本
- 高嶺土化驗檢測分析報告
- 廢舊物資回收服務實施方案
- 電力建設工程質(zhì)量監(jiān)督檢查大綱新版
- 四“借”三“有”寫清楚實驗過程——三下“我做了一項小實驗”習作教學
- 呼吸困難完全PPT課件
- 中國春節(jié)習俗簡介0001
- 高二數(shù)學教學進度計劃表
評論
0/150
提交評論