王家林老師提供的課程mysql5,cluster_第1頁
王家林老師提供的課程mysql5,cluster_第2頁
王家林老師提供的課程mysql5,cluster_第3頁
王家林老師提供的課程mysql5,cluster_第4頁
王家林老師提供的課程mysql5,cluster_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、Cluster 是一個基于 NDB Cluster引擎的完整的分布式數(shù)據(jù)庫系統(tǒng)。不僅僅具有高可用性,而且可以自動切分數(shù)據(jù),冗余數(shù)據(jù)等高級功能。和 Oracle Real ClusterApplication 不太一樣的是,Cluster 是一個 Share Nothing 的架構,各個Server 之間并不共享任何數(shù)據(jù),高度可擴展以及高度可用方面的突出表現(xiàn)是其最大的特色。雖然目前還只是中的一個新興產品,但是已經(jīng)有不少企業(yè)正在積極的嘗試使用Cluster 的了解來尋找其在可擴展設計方面的優(yōu)勢。了。通過對1,Cluster介紹簡單的說,Cluster 實際上是在無共享設備的情況下實現(xiàn)的一種完全分布

2、式數(shù)據(jù)庫系統(tǒng),其主要通過 NDB Cluster(簡稱 NDB)引擎來實現(xiàn)。Cluster 剛剛誕生的時候可以說是一個可以對數(shù)據(jù)進行持久化的內存數(shù)據(jù)庫,所有數(shù)據(jù)和索引都必須裝載在內存中才能夠正常運行,但是的Cluster 版本已經(jīng)可以做到僅僅將所有索引裝載在內存中即可,實際的數(shù)據(jù)可以不用全部裝載到內存中。Cluster 的環(huán)境主要由以下三部分組成:一個a) SQL 層的 SQL 服務器節(jié)點(后面簡稱為 SQL 節(jié)點),也就是常說的Server。主要負責實現(xiàn)一個數(shù)據(jù)庫在層之上的所有事情,比如連接管理,Query 優(yōu)化和響應 ,Cache 管理等等,只有層的工作交給了 NDB 數(shù)據(jù)節(jié)點去處理了。也

3、就是說,在純粹的Cluster 環(huán)境中的 SQL 節(jié)點,可以被認為是一個不需要提供任何引擎的引擎有 Cluster 環(huán)境中的 NDB 節(jié)點來擔任。所以,SQL 層各服務器,因為他的服務器的啟動與普通的選項才行??梢蕴砑釉赟erver 啟動也有一定的區(qū)別,必須要添加 ndbcluster 參數(shù)f 配置文件中,也可以通過啟動命令行來指定。b) Storage 層的 NDB 數(shù)據(jù)節(jié)點,也就是上面說的 NDB Cluster。最初的 NDB 是一個內存式引擎,當然也會將數(shù)據(jù)持久化到設備上。但是的 NDB Cluster引擎已經(jīng)改進了這一點,可以選擇數(shù)據(jù)是全部加載到內存中還是僅僅加載索引數(shù)據(jù)。NDB 節(jié)

4、點主要是實現(xiàn)底層數(shù)據(jù)功能,來保存 Cluster 的數(shù)據(jù)。每一個Cluster 節(jié)點保存完整數(shù)據(jù)的一個 fragment,也就是一個數(shù)據(jù)分片(或者一份完整的數(shù)據(jù),Cluster 在層不會出現(xiàn)單點的問視節(jié)點數(shù)目和配置而定),所以只要配置得當,題。一般來說,NDB 節(jié)點被組織成一個一個的 NDB Group,一個 NDB Group 實際上就是一組存有完全相同的物理數(shù)據(jù)的 NDB 節(jié)點群。上面提到了 NDB 各個節(jié)點對數(shù)據(jù)的組織,可能每個節(jié)點都存有全部的數(shù)據(jù)也可能只保存Cluster 主配置文件(在管一部分數(shù)據(jù),主要是受節(jié)點數(shù)目和參數(shù)來控制的。首先在理節(jié)點上面,一般為 config.ini)中,有

5、一個非常重要的參數(shù)叫 NoOfReplicas,這個參數(shù)指定了每一份數(shù)據(jù)被冗余在不同節(jié)點上面的份數(shù),該參數(shù)一般至少應該被設置成 2,也只需要設置成 2 就可以了。因為正常來說,兩個互為冗余的節(jié)點同時出現(xiàn)故障的概率還是非常小的,當然如果機器和內存足夠多的話,也可以繼續(xù)增大來更進一步減小出現(xiàn)故障的概率。此外,一個節(jié)點上面是保存所有的數(shù)據(jù)還是一部分數(shù)據(jù)還受到節(jié)點數(shù)目的限制。NDB 存儲引擎首先保證 NoOfReplicas 參數(shù)配置的要求來使用節(jié)點,對數(shù)據(jù)進行冗余,然后再根據(jù)節(jié)點數(shù)目將數(shù)據(jù)分段來繼續(xù)使用多余的 NDB 節(jié)點。分段的數(shù)目為節(jié)點總數(shù)除以NoOfReplicas 所得。c) 負責管理各個節(jié)

6、點的 Manage 節(jié)點主機:管理節(jié)點負責整個 Cluster 集群中各個節(jié)點的管理工作,包括集群的配置,啟動關閉各節(jié) 點 ,對各個節(jié)點進行常規(guī),以及實施數(shù)據(jù)的備份恢復等。管理節(jié)點會獲取整個 Cluster環(huán)境中各節(jié)點的狀態(tài)和錯誤信息,并且將各 Cluster 集群中各個節(jié)點的信息反饋給整個集群中其他的所有節(jié)點。由于管理節(jié)點上保存了整個 Cluster 環(huán)境的配置,同時擔任了集群中各節(jié)點的基本溝通工作,所以他必須是最先被啟動的節(jié)點。下面是一幅Cluster的基本架構圖(出自文檔手冊):Cluster通過圖中間的關系。可以更清晰的了解整個環(huán)境各個節(jié)點以及客戶端應用之由于Cluster 目前的成熟

7、使用并不是太多,實現(xiàn)也較普通的略復雜,所Cluster 環(huán)境開始來介紹他。以本章將首先從如何搭建一個2Cluster 環(huán)境搭建Cluster 首先需要至少一個管理節(jié)點主機來實現(xiàn)管理功能,一個 SQL 節(jié)點主server 功能和兩個 ndb 節(jié)點主機實現(xiàn) NDB Cluster 的功能。在后面的介紹SQL 節(jié)點來搭建測試環(huán)境,具體信息如下:搭建機來實現(xiàn)中,我采1、硬件準備a)節(jié)點 1192.168.0.1b)c)d)e)節(jié)點ndb 節(jié)點 1ndb 節(jié)點 2管理節(jié)點2192.168.0.2192.168.0.3192.168.0.4192.168.0.52、安裝首先在上面 5 個節(jié)點的主機上盡量確

8、保環(huán)境基本一致,然后從相應的包并分發(fā)到兩臺 SQL 節(jié)點和兩臺 NDB 節(jié)點上,以備后面的安裝時候的使用。測試環(huán)境 OS(RedHinux)如下(非必須):root1:/usr/locaame -aLinux oratest1 2.6.9-42.ELsmp #1 SMP Wed Jul 12 23:27:17 EDT 2006 i686i686 i386 GNU/Linuxa) 安裝在碼安裝也可以選擇節(jié)點:節(jié)點上面需要安裝支持 cluster 的Server,可以通過自編譯源代提供的編譯好的 tar 包或者 rpm 安裝包,我是通過源代碼自行編譯的,實際上完全可以通過提供的經(jīng)過優(yōu)化編譯的二進制

9、tar包,只是了而已,root編譯設置參數(shù)如下:1./configure -prefix=/usr/local/-without-debug -without-bench -enable-thread-safe-c-enable-assembler -with-charset=utf8 -with-nt plex -with-c-with-nt-ldflags=-all-s ic d-ldflags=-all-s ic -with-ndbcluster -with-server-suffix=-max -datadir=/data/data -wit.ix-socket-path=/usr/l

10、ocal/sock/.sockroot.1makeroot.1make installf,由于是測試環(huán)境,所以我僅僅設置了然后是配置設置配置文件ndbcluster 所需要的最基本的兩個配置項,其他所有的配置均用默認配置(后面會有較為詳細的配置說明),如下:rootc nt1vifsocket = /usr/local/sock/.sock#由于編譯時候特殊指定了,所以設置在這里,方便以后登入的時候使用dsocket = /usr/local/ndbcluster/sock/.sock_clusterndb-connectstring = 192.168.0.5繼續(xù)完成后面的安裝過程:root

11、 rootsocket=/usr/local/Installing OK1cd /usr/local/1b/sock/ysql install db -user=.sock-system tables.Filling help tables.OKTo startsupport-files/d at boot time you have to copy.server to the right place for your systemPLEASE REMEMBER TO SETTo do so, start the server, then iSWORD FOR THEroot USER !e

12、the followingds:ssword/usr/local/usr/local/ password/b/bySQLadmin -u root password neySQLadmin -u root -h oest_stb password new-Alternatively you can run:/usr/local/bySQL_secure_installationwhich will also give you the option of removing the testdatabases and anonymous user created by default. This

13、isstronglymended for production servers.See the manual for more instructions.You can start thecd /usr/local/daemon with:; /usr/local/bySQLd_safe &You can test thedaemon with-test-run.pl-test-run.plcd-test ; perlPlease report any problems with the /usr/local/bySQLbug script!The latest information abo

14、uthtis available on the web atSupportby buying support/licenses at httroot root root root root root total 40 drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-xroot1n -R root .1chgrp -R.# ls -l111n -Rn -Rn -R/usr/local/usr/local/usr/local/etc

15、/sock/log1:/usr/local/root2rootrootroot2 root24 root9 root21:/usr/local/4096 May 4 14:474096 May 4 14:204096 May 4 14:464096 May 4 14:464096 May 4 14:464096 May 4 14:474096 May 4 14:204096 May 4 14:474096 May 4 14:474096 May 5 22:16bin etcinclude infolib libexec logman-testsock#b) 安裝 ndb 節(jié)點:如果希望盡可能的

16、各環(huán)境保持一致,建議在 NDB 節(jié)點也和SQL 節(jié)點一樣安裝整個帶有 NDB Cluster所以這里就不再累述。引擎的Server。由于安裝細節(jié)和上面的 SQL 節(jié)點完全一樣,另外,如果只是為了保證能夠完整的Cluster 這個環(huán)境,則在 NDB 節(jié)點上完全可以僅安裝 NDB引擎(ndb storage engine)即可。安裝 NDB引擎好像目前是找不到源碼來自行編譯安裝的,只能通過AB提供的 rpm 包來安裝。安裝過程非常簡單,和其他的 rpm包安裝沒有任何區(qū)別。c) 管理節(jié)點:管理節(jié)點所需要的安裝更簡單,實際上只需要 ndb_mgm 和 ndb_mgmd 兩個程序即可,這兩個可執(zhí)行程序可

17、以在上面的節(jié)點的安裝目錄中的 bin 目錄下面找到。將這兩個程序 copy 到管理節(jié)點上面合適的位置(自行考慮,我一般會放在/usr/local/bin 下面),并在 path 制定的目錄中建立兩個同名的 soft link 在到這兩個程序上面,就可以了。以上即是Cluster 環(huán)境的安裝過程,看上去并不復雜是吧,希望大家的安裝過程也能夠一切順利,當然如果遇到了什錯誤也不用擔心,非常詳細的安裝過程說明。手冊中也提供了3、基本配置在上面所有節(jié)點的安裝完成之后,就是Cluster 環(huán)境的配置工作了。如Cluster 的基本配置是比較簡單的。這果不考慮其他一些優(yōu)化和個性化的配置需求,里暫時先僅僅完成

18、一個簡單的測試環(huán)境的配置,詳細的配置說明請看后面的配置介紹的章節(jié)。Cluster對于節(jié)點和 ndb 節(jié)點在上面的安裝過程中已經(jīng)完成了,僅需要設置_cluster參數(shù)組的 ndb-connectstring 參數(shù)即可完成最基本的配置。管理節(jié)點的配置稍微復雜一點,因為他需要配置出 Cluster 環(huán)境中每一個節(jié)點的基本信息。配置文件并不需要一個特別固定的位置和名稱,都由用戶自行設定,只需要在啟動過程中指定配置文件即可。在cluster/config.ini,內容如下:的測試環(huán)境中配置為建名稱為/var/lib/-rootMgm # cat /var/lib/-cluster/config.iniN

19、DBD DEFAULTNoOfReplicas=2DataMemory=64M IndexMemory=16MTCP DEFAULTportnumber=2202#管理節(jié)點 NDB_MGMDid=1hostname=192.168.0.5datadir=/var/lib/-cluster#第一個 ndbd 節(jié)點: NDBDid=2hostname=192.168.0.3 datadir=/data/data#第二個 ndbd 節(jié)點: NDBDid=3 hostname=192.168.0.4datadir=/drbddata/data# SQL node options:id=4Dhostna

20、me=192.168.0.1id=5Dhostname=10.0.65.203rootMgm #1) SQL 節(jié)點的配置:節(jié)點的配置和普通的Server 的配置區(qū)別主要是需要在f 文件中增加_cluster這個配置選項組,并至少指定 ndb-connectstring=192.168.0.5,也就是制定管理節(jié)點的 ip 地址或者 hostname。另外,如果希望能在啟動d 的時候不用手動指定 ndbcluster 參數(shù),則在d參數(shù)選項組中增加 ndbcluster 項參數(shù)。除了這兩項之外,其他的所有參數(shù)都可以可以使用默認值。2) NDBNDB節(jié)點的配置:節(jié)點的配置就更簡單的了,僅僅需_clus

21、ter中的 ndb-connectstring = 192.168.0.5 參數(shù),其他所有的都可以不再配置了。4、環(huán)境測試在環(huán)境搭建完成后,首先肯定要對新搭建的環(huán)境進行一些基本的功能和異常測試,以確認搭建的環(huán)境是否已經(jīng)可以正常提供服務。1) 首先檢測 ndb 引擎是否已經(jīng)正常工作通過任意客戶端連接任意選定的一個 SQL 節(jié)點,測試各種基本的 ddl,dml 操 作 ,然后再通過客戶端連接上 Cluster 環(huán)境中另外的 SQL 節(jié)點校驗所作的草食是否在其他節(jié)點同樣可見了。下面是測試 create table 后再在節(jié)點 4 上面:use test;一條數(shù)據(jù)的示例:create table t1

22、 ( a) engine=ndb;Query ok, 0 rows affected (0.00 sec)inserto t1 values(100);Query ok, 1 rows affected (0.00 sec)然后在節(jié)點 5 上面:use test;select * from t1;+| id |+-+| 100 |+-+1 row in set (0.00 sec)可見,在節(jié)點 4 上面所的數(shù)據(jù),已經(jīng)在節(jié)點 5 上面了,說明 ndb 引擎工作正常的。其他的測試與此類似,大家可以自試。如果在測試中發(fā)現(xiàn)在某兩個節(jié)點之間出現(xiàn)不一致現(xiàn)象,那么可以肯定的是,Cluster環(huán)境的配置有問題

23、。在管理節(jié)點上面通過“ndb_mgm -e SHOW”命令查看各節(jié)點狀態(tài)是否正常,是否都已經(jīng)連接到了管理節(jié)點上面。并檢查不正常節(jié)點的f 配置文件,是否已經(jīng)_cluster這個參數(shù)組的配置好了以 ndbcluster 方式啟動d,是否有正確配置最基本的 ndb-connectstring 參數(shù)。然后檢查管理節(jié)點上面的 config 文件,里面是否有正確配置好各所有節(jié)點的配置,尤其是不正常的 SQL 節(jié)點的配置。2) 檢測冗余環(huán)境的單點故障問題a、模擬 NDB 節(jié)點 Crash由于是模擬 Crash,所以通過在節(jié)點 2 上面 kill 掉 ndb 進程,然后再分別通過兩個SQL 節(jié)點去t1 表,查

24、看是否可以正常,數(shù)據(jù)是否一樣。在節(jié)點 4 上面:use test;select * from t1;+| id |+-+| 100 |+-+1 row in set (0.00 sec)inserto t1 values(200);Query ok, 1 rows affected (0.00 sec)在節(jié)點 5 上面:use test;select * from t1;+| id |+-+| 100 | 200 |+-+2 row in set (0.00 sec)delete from t1 where id = 100; Query ok, 1 rows affected (0.00 s

25、ec)再回到節(jié)點 4 上面:select * from t1;+| id |+-+| 200 |+-+1 row in set (0.00 sec)可以看到,不僅 t1 仍然可以正常,數(shù)據(jù)也沒有任何丟失,且仍然可以正常插入,刪除數(shù)據(jù)??梢?,在有一個 NDB 節(jié)點 Crash 之后,真?zhèn)€Cluster 環(huán)境仍然可以正常提供服務。當然,如果兩個 NDB 節(jié)點都 Crash 之后,Cluster 環(huán)境就無法正常提供服務了,大家也可以自試一下。b、模擬 SQL 節(jié)點 Crash同樣和測試 NDB 節(jié)點 Crash 一樣,kill 掉一個進程,然后通過節(jié)點 5 進行:在節(jié)點 5 上面:use test;

26、select * from t1;+| id |+-+| 200 |+-+1 row in set (0.00 sec)SQL 節(jié)點(比如節(jié)點 4)的dinserto t1 values(300);Query ok, 1 rows affected (0.00 sec)select * from t1;+| id |+-+| 200 | 300 |+-+2 row in set (0.00 sec)可以看到,當節(jié)點 4 Crash 之后,節(jié)點 5 仍然能夠提供正常的服務。當然,如果在應用環(huán)境中,應用環(huán)境需要至少支持當一個 SQL 節(jié)點出現(xiàn)問題的時候能夠自行切換到剩下的正常的 SQL 節(jié)點來。c

27、、管理節(jié)點的單點一般情況來說,管理節(jié)點是最容易控制的,實施也非常簡單,只需要將配置文件和兩個可執(zhí)行程序(ndb_mgmd 和 ndb_mgm)存放在多臺機器上面即可,所以一般來說不需要太多考慮單點故障。3Cluster 配置詳細介紹(config.ini)在Cluster 環(huán)境的配置文件 config.ini 里面,每一類節(jié)點都有兩個(或以上)的相應配置項組,每一類節(jié)點的配置項都主要由兩部分組成,一部分是同類所有節(jié)點相同的配置項組,在NDB_MGM DEFAULT、NDBD DEFAULT和D DEFAULT這三個配置組里面,而且每一個配置組只出現(xiàn)一次;而另外一部分則是針對每一個節(jié)點獨有配置內

28、容的配置項組NDB_MGM、NDBD和D,由于這三類配置組中配置的每一個節(jié)點獨有的個性化配置,所以每一個配置組都可能會出現(xiàn)多次(每一個節(jié)點一次)。下面是每一類節(jié)點的各種配置說明:1、管理節(jié)點相關配置在整個Cluster 環(huán)境中,管理節(jié)點相關的配置為NDBD_MGM DEFAULT和NDB_MGMD相關的兩組:1) NDB_MGMD DEFAULT中各管理節(jié)點的共用配置項: PortNumber:配置管理節(jié)點的服務端程序(ndb_mgmd)客戶端(ndb_mgm)連接請求和發(fā)送的指令,從文檔上可以查找到,默認端口是 1186 端口。一般來說這一項不需要更改,當然如果是為了在同一臺主機上面啟動多個

29、管理節(jié)點的話,肯定需要將兩個管理節(jié)點啟動不同的端口;LogDestination:配置管理節(jié)點上面的 cluster 日志處理方式??梢詫懭胛募纾篖ogDestination=FILE:filename=my- cluster.log,maxsize=500000,maxfiles=4;也可以通過標準輸出來打印出來如:LogDestination=CONSOLE;還可以計入 syslog 里面如:LogDestination=SYSLOG:facility=syslog;甚至多種方式共存: LogDestination=CONSOLE;SYSLOG:facility=syslog;FILE

30、filename=/var/log/cluster- logDatadir:設置用于管理節(jié)點存放文件輸出的位置。如 log 文件(當 LogDestination 有 FILE 處理方式存在時候)。pros 文 件( .),clusterArbitrationR三個值可以選擇。0 代表本節(jié)點完全聽其他節(jié)點的,不參與決策1 代表本節(jié)點有最高優(yōu)先權,“一切由我來決策”的時候的級別。有 0,1,2:配置各節(jié)點在處理某些事件出現(xiàn)c) 2 代表本節(jié)點參與決策,但是優(yōu)先權較 1 低,但是比 0 高ArbitrationR參數(shù)不僅僅管理節(jié)點有,節(jié)點也有。而且一般來說,所有的管理節(jié)點一般都應該設置成 1,所有

31、 SQL 節(jié)點都設置成 2。2) NDB_MGMD是每個管理節(jié)點配置一組,所需配置項如下(下面的參數(shù)只能設置在NDB_MGMD參數(shù)組中):Id:為節(jié)點指定一個唯一的 ID 號,要求在整個 Cluster 環(huán)境中唯一;Hostname:配置該節(jié)點的 IP 地址或者主機名,如果是主機名,則該主機名必須要在配置文件所在的節(jié)點的/etc/hosts 文件中存在,而且綁定的 IP 是準確的。上面NDB_MGMD DEFAULT里面的所有參數(shù)項,都可以設置在下面的NDB_MGMD參數(shù)組里面,但是 Id 和 Hostname 兩個參數(shù)只能設置在NDB_MGMD里面,而不能設置在NDB_MGMDDEFAULT

32、里面,因為這兩個參數(shù)項針對每一個節(jié)點都是不相同的內容。2、NDB 節(jié)點相關配置NDB 節(jié)點和管理節(jié)點一樣,既有各個節(jié)點共用的配置信息組NDBD DEFAULT,也有每一個節(jié)點個性化配置的NDBD配置組(實際上 SQL 節(jié)點也是如此)。1) NDBD DEFAULT中的配置項:NoOfReplicas:定義在 Cluster 環(huán)境中相同數(shù)據(jù)的分數(shù),通俗一點來說就是每一份數(shù)據(jù)存放 NoOfReplicas 份。如果希望能夠冗余,那么至少設置為 2(一般情況來說此參數(shù)值設置為 2 就夠了),最大只能設置為 4。另 外 ,NoOfReplicas 值得大小,實際上也就是 node group 大小的定

33、義。NoOfReplicas 參數(shù)沒有系統(tǒng)默認值,所以必須設定,而且只能設置在NDBD DEFAULT中,因為此數(shù)值在整個 Cluster 集群中一個 node group 中所有的 NDBD 節(jié)點都需要一樣。另外 NoOfReplicas 的數(shù)目對整個 Cluster 環(huán)境中 NDB 節(jié)點數(shù)量有較大的影響,因為 NDB 節(jié)點總數(shù)量是 NoOfReplicas * 2 * node_group_num;DataDir:指定本地的文件,trace 文件,日志文件以及錯誤日志子等存放的路徑,無系統(tǒng)默認地址,所以必須設定;DataMemory:設定用于存放數(shù)據(jù)和主鍵索引的內存段的大小。這個大小限制了

34、能存放的數(shù)據(jù)的大小,因為 ndb引擎需屬于內存數(shù)據(jù)庫引擎,需要將所有的數(shù)據(jù)(包括索引 )都 load 到內存中。這個參數(shù)并不是一定需要設定的,但是默認值非常?。?0M),只也就是說如果使用默認值,將只能存放很小的數(shù)據(jù)。參數(shù)設置需要帶上,如 512M,2G 等。另外,DataMemory 里面還會存放 UNDO 相關的信息,所以,事務的大小和事務并發(fā)量也決定了DataMemory 的使用量,建議盡量使用小事務;IndexMemory:設定用于存放索引(非主鍵)數(shù)據(jù)的內存段大小。和 DataMemory類似,這個參數(shù)值的大小同樣也會限制該節(jié)點能存放的數(shù)據(jù)的大小,因為索引的大小是隨著數(shù)據(jù)量增長而增長

35、的。參數(shù)設置也如 DataMemory 一樣需要18M;。IndexMemory 默認大小為實際上,一個 NDB 節(jié)點能存放的數(shù)據(jù)量是會受到 DataMemory 和 IndexMemory 兩個參數(shù)設置的約束,兩者任何一個達到限制數(shù)量后,都無法再增加能存入數(shù)據(jù)系統(tǒng)會報錯“table is full”。的數(shù)據(jù)量。如果繼續(xù)FileSystemPath:指定 redo 日志,undo 日志,數(shù)據(jù)文件以及 meta 數(shù)據(jù)等的存放位置,默認位置為 DataDir 的設置,并且在 ndbd 初始化的時候,參數(shù)所設定的文件夾必須存在。在第一次啟動的時候,ndbd 進程會在所設定的文件夾下建立一個子文件夾叫

36、ndb_id_fs,這里的 id 為節(jié)點的 ID 值,如節(jié)點 id 為 3 則文件夾名稱為 ndb_3_fs。 當 然 ,這個參數(shù)也不一定非得設置在NDBD DEFAULT參數(shù)組里面讓所有節(jié)點的設置都一樣(不過建議這樣設置),還可以設置在NDBD參數(shù)組下為每一個節(jié)點單獨設置自己的 FileSystemPath值;BackupDataDir:設置備份目錄路徑,默認為 FileSystemPath/BACKUP。接下來的幾個參數(shù)也是非常重要的,主要都是與并行事務數(shù)和其他一些并行限制有關的參數(shù)設置。MaxNoOfConcurrentTranions:設置在一個節(jié)點上面的最大并行事務數(shù)目,默認為 40

37、96,一般情況下來說是足夠了的。這個參數(shù)值所有節(jié)點必須設置一樣,所以一般都是設置在NDBD DEFAULT參數(shù)組下面;MaxNoOfConcurrentOperations:設置同時能夠被更新(或者鎖定)的數(shù)量。一般來說可以設置為在整個集群中相同時間內可能被更新(或者鎖定)的錄數(shù),除以 NDB節(jié)點數(shù),所得到的值。比如,在集群中有兩個 NDB 節(jié)點,而希望能夠處理同時更新(或鎖定)100000 條,那么此參數(shù)應該被設置為:100000 / 4 = 25000。此外,這里的數(shù)量并不是指單純的表里面的數(shù),而是指事物里面的操作。當使用到唯一索引的時候,表的數(shù)據(jù)和索引兩者都要算在里面,也就是說,如果是通

38、過一個唯一索引來作為過濾條件更新某一條,那么這里算是兩條操作。而且即使是鎖定也會產生操作,比如通過唯一索引來查找一條,就會產生如下兩條操作:通過唯一索引中的某個數(shù)據(jù)會產生鎖定,產生一條操作,然后基表里面的數(shù)據(jù),這里也會產生讀鎖,也會產生一條操作。MaxNoOfConcurrentOperations 參數(shù)的默認值為 32768。當額度系統(tǒng)運行過程中,如果出現(xiàn)此參數(shù)不夠的時候,就會報出“Out of operation records intranion coordinator”這樣的錯誤信息;MaxNoOfLocalOperations:此參數(shù)默認是 MaxNoOfConcurrentOper

39、ations * 1.1的大小,也就是說,每個節(jié)點一般可以處理超過平均值的 10%的操作數(shù)量。但是一般來說,建議單獨設置此參數(shù)而不要使用默認值,并且將此參數(shù)設置得更較大一些;以下的三個參數(shù)主要是在一個事務中執(zhí)行一條 query 的時候臨時用到(或者內存)的情況下所使用到的,所使用的信息會在事務結束(commit 或者 rollback)的時候資源;MaxNoOfConcurrentIndexOperations:這個參數(shù)和 MaxNoOfConcurrentOperations參數(shù)比較類似,只不過所針對的是 Index 的 record 而已。其默認值為 8192,對伊一般的系統(tǒng)來說都已經(jīng)足夠

40、了,只有在事務并發(fā)非常非常大的系統(tǒng)上才有需要增加這個參數(shù)的設置。當然,此參數(shù)越大,系統(tǒng)運行時候為此而消耗的內存也會越大;MaxNoOfFiredTriggers:觸發(fā)唯一索引(hash index)操作的最大的操作數(shù),這個 操作數(shù)是影響索引的操作條目數(shù),而不是操作的次數(shù)。系統(tǒng)默認值為 4000,一般系統(tǒng)來說夠用了。當然,如果系統(tǒng)并發(fā)事務非常高,而且涉及到索引的操作也非常多,自然也就需要提高這個參數(shù)值的設置了;TranionBufferMemory:這個 buffer 值得設置主要是指定用于索引操作而使用的。主要是用來索引操作中涉及到的索引 key 值和 column 的實際信息。這個參數(shù)的值一

41、般來說也很少需要調整,因為實際系統(tǒng)中需要的這部分 buffer 量非常小,雖然默認值只是 1M,但是對于一般應用也已經(jīng)足夠了;下面要介紹到的參數(shù)主要是在系統(tǒng)處理中做 table scan 或者 range scan 的時候使用的一些 buffer 的相關設置,設置的恰當可以既節(jié)省內存又達到足夠的性能要求。MaxNoOfConcurrentScans:這個參數(shù)主要控制在 Cluster 環(huán)境中并發(fā)的 table scan和 range scan 的總數(shù)量平均分配到每一個節(jié)點后的平均值。一般來說,每一個 scan 都是通過并行的掃描所有的 partition 來完成的,每一個 partition

42、的掃描都會在該 partition所在的節(jié)點上面使用一個 scan record。所以,這個參數(shù)值得大小應該是“scan record”數(shù)目 * 節(jié)點數(shù)目。參數(shù)默認大小為 256,最大只能設置為 500;MaxNoOfLocalScans:和上面的這個參數(shù)相對應,只不過設置的是在本節(jié)點上面的并發(fā) table scan 和 range scan 數(shù)量。如果在系統(tǒng)中有大量的并發(fā)而且一般都不使用并行的話,需要注意此參數(shù)的設置。默認為 MaxNoOfConcurrentScans * node 數(shù)目;BatchSizePerLocalScan:該參用于計算在 Localscan(并發(fā))過程中被鎖住的記

43、錄數(shù),文檔上說明默認為 64;LongMessageBuffer:這個參數(shù)定義的是消息傳遞時候的 buffer 大小,而這里的消息傳遞主要是信息傳遞以及節(jié)點與節(jié)點之間的信息傳遞。這個參數(shù)一般很少需要調整,默認大小為 1MB 大?。幌旅娼榻B一下與 log 相關的參數(shù)配置說明,包括 log level。這里的 log level 有多種,從 0 到 15,也就是共 16 種。如果設定為 0,則表示不高 level,也就是 15,則表示所有的信息都會通過標準輸出來任何 log。如果設置為最log。由于這里的所有信息實際上都會傳遞到管理節(jié)點的 cluster log 中,所以,一般來說,除了啟動時候的

44、 log級別需要設置為 1 之外,其他所有的 log level 都只需要設置為 0 就可以了。NoOfFragmentLogFiles:這個參數(shù)實際上和 Oracle 的 redo log 的 group 一 樣 的 。其實就是 ndb 的 redo log group 數(shù)目,這些 redo log 用于存放 ndb 引擎所做的所有需要變更數(shù)據(jù)的事情,以及各種 checkpo信息等。默認值為 8;MaxNoOfSavedMessages:這個參數(shù)設定了可以保留的 trace 文件(在節(jié)點 crash的時候參數(shù))的最大個數(shù),文檔上面說此參數(shù)默認值為 25。LogLevelStartup:設定啟

45、動 ndb 節(jié)點時候需要錄的信息的詳細程度不一樣),默認級別為 1;的信息的級別(不同級別所記LogLevelShutdown:設定關閉 ndb 節(jié)點時候日志的信息的級別,默認為 0;LogLevelSistic:這個參數(shù)是針對于統(tǒng)計相關的日志的,就像更新數(shù)量,數(shù)量,buffer 使用情況,主鍵數(shù)量等等統(tǒng)計信息。默認日志級別為 0;LogLevelCheckpo:checkpo級別(包括 local 和 global 的),默日志認為 0;LogLevelNodeRestart:ndb 節(jié)點重啟過程日志級別,默認為 0;LogLevelConnection:各節(jié)點之間連接相關日志的級別,默認

46、0;LogLevelError:在整個 Cluster 中錯誤或者警告信息的日志級別,默認 0;LogLevelInfo:普通信息的日志級別,默認為 0。這里再介紹幾個用來作為 log時候需要用到的 Buffer 相關參數(shù),這些參數(shù)對于性能都有一定的影響。當然,如果節(jié)點運行在無盤模式下的話,則影響不大。UnndexBuffer:unndex buffer 主要是用于主鍵 hash 索引在變更之后產生的 undo 信息的緩沖區(qū)。默認值為 2M 大小,最小可以設置為 1M,對于大多數(shù)應用來說, 2M 的默認值是夠的。當然,在更新非常頻繁的應用里面,適當?shù)恼{大此參數(shù)值對性能還是有一定幫助的。如果此參

47、數(shù)太小,會報出 677 錯誤:Index UNDO buffers overloaded;UndoDataBuffer:和 unndex buffer 類似,undo data buffer 主要是在數(shù)據(jù)發(fā)生變更的時候所需要的 undo 信息的緩沖區(qū)。默認大小為 16M,最小同樣為 1M。當這個參數(shù)值太小的時候,系統(tǒng)會報出如下的錯誤:Data UNDO buffers overloaded,錯誤號為 891;RedoBuffer:Redo buffer 是用 redo log 信息的緩沖區(qū),默認大小為 8M,最 小 為 1M。如果此 buffer 太小,會報 1221 錯誤:REDO log

48、buffers overloaded。此外,NDB 節(jié)點還有一些和 metadata 以及基本上不需要任何調整,所以就不做進一步介紹。如果有的相關參考手冊,手冊上面都有較為詳細的介紹??刂葡嚓P的參數(shù),但大部分參數(shù)都希望詳細了解,可以根據(jù)3、SQL 節(jié)點相關配置說明1) 和其他節(jié)點一樣,先介紹一些適用于所有節(jié)點的D DEFAULT參數(shù)ArbitrationR:這個參數(shù)在介紹管理節(jié)點的參數(shù)時候已經(jīng)介紹過了,用于設定節(jié)點級別(主要是在多個節(jié)點在處理相關操作時候出現(xiàn)所有的 SQL 節(jié)點都應該設定為 2;時候設定裁定者)的。一般來說 ,ArbitrationDelay:默認為 0,裁定者在開始裁定之前需

49、要被 delay 多久,毫秒。一般不需要更改默認值。為BatchByteSize:在做全表掃描或者索引范圍掃描的時候,每一次 fatch 的數(shù)據(jù)量,默認為 32KB;BatchSize:類似 BatchByteSize 參數(shù),只不過 BatchSize 所設定的是每一次 fetch的 record 數(shù)量,而不是物理總量,默認為 64,最大為 992(暫時還不知道這個值是基于什么理論而設定的)。在實際運行 query 的 過程 中,fetch 的量受到 BatchByteSize 和 BatchSize兩個參數(shù)的共同制約,二者取最小值;MaxScanBatchSize:在 Cluster 環(huán)境中

50、,進行并行處理的情況下,所有節(jié)點的BatchSize 總和的最大值。默認值為 256KB,最大值為 16MB。2) 每個節(jié)點獨有的D參數(shù)組,僅有 id 和 hostname 參數(shù)需要配置,在之前各類節(jié)點均有介紹了,這里就不再累述。4Cluster 基本管理與Cluster 的管理和普通的Server 管理區(qū)別較大,基本上大部分管理工作都是在管理節(jié)點上面完成,僅有少數(shù)管理內容需要在其他節(jié)點實施。1、各節(jié)點啟動與關閉要想 Cluster 環(huán)境能夠正常工作,只好要啟動一個 NDB 節(jié)點和一個 SQL 節(jié)點,另外為了完成管理,也至少要啟動一個管理節(jié)點。各類節(jié)點的啟動順序也有要求,首先是管理節(jié)點,然后是

51、 NDB 節(jié)點,最后才是 SQL 節(jié)點。1) 按順序啟動各節(jié)點:a、 啟動管理節(jié)點:rootlocalhostcluster/config.ini-cluster# ndb_mgmd -f /var/lib/-這里執(zhí)行的 ndb_mgmd 命令實際上就是config_file_name或者-config=config_filename來指定Cluster 管理服務器,可以通過-fCluster 集群的參數(shù)文件。如果想了解關于 ndb_mgmd 的參數(shù)信息,可以通過運行 ndb_mgmd -help 來獲取更詳細的信息。b、 啟動用于數(shù)據(jù)的 ndb 節(jié)點要啟動節(jié)點,必須在每一臺 ndb 節(jié)點主機

52、上面都執(zhí)行 ndbd 程序,如果是第一次啟動,則需要添加-initial 參數(shù),以便進行 ndb 節(jié)點的初始化工作。但是,在以后的啟 動過程中,是不能添加該參數(shù)的,否則 ndbd 程序會清除在之前建立的所有用于恢復的數(shù)據(jù)文件和日志文件。啟動命令如下rootndb1:/rootndbd -initialc、 啟動 SQL 節(jié)點SQL 節(jié)點的啟動和普通Server 的啟動沒有太多明顯的差別,不過有一個前Server 的配置文件f 設置好_cluster配置組中的 ndb-提就是需要在connectstring 參數(shù)和d配置組中的 ndbcluster 參數(shù)。root1:/rootd safe -u

53、ser=&2) 節(jié)點狀態(tài)檢查:在各節(jié)點都啟動完成后,回到管理節(jié)點,可以通過 ndb_mgm 來查看各節(jié)點狀態(tài):rootlocalhost-cluster# ndb_mgm -e SHOWConnected to Management Server at: localhost:1186Cluster Configurationndbd(NDB)2 node(s)id=2id=3192.168.0.3 (Ver192.168.0.4 (Ver: 5.0.51, Nodegroup: 0, Master): 5.0.51, Nodegroup: 0)ndb_mgmd(MGM) 1 node(s)id

54、=1192.168.0.5 (Ver: 5.0.51)id=4 id=5d(API)2 node(s)192.168.0.1 (Ver10.0.65.203 (Ver: 5.0.51): 5.0.51)這里顯示出整個集群有 5 個幾點,其中各節(jié)點信息如下:a) 2 個 NDBD 節(jié)點:ndbd(NDB)2 node(s)id=2id=3192.168.0.3 (Ver192.168.0.4 (Ver: 5.0.51, Nodegroup: 0, Master): 5.0.51, Nodegroup: 0)b) 兩個id=4 id=5SQL 節(jié)點:d(API)2 node(s)192.168.0

55、.1 (Ver10.0.65.203 (Ver: 5.0.51): 5.0.51)c) 1 個管理節(jié)點: ndb_mgmd(MGM) 1 node(s)id=1192.168.0.5 (Ver: 5.0.51)3) 節(jié)點的關閉操作:在Cluster 環(huán)境中,NDB 節(jié)點和管理節(jié)點的關閉都可以在管理節(jié)點的管理程序中完成,但是 SQL 節(jié)點卻沒辦法。所以,在關閉整個Cluster 環(huán)境或者關閉某個 SQL節(jié)點的時候,首先必須到 SQL 節(jié)點主機上來關閉 SQL 節(jié)點程序。關閉方法和Server的關閉一樣,就不累述。而 NDB 節(jié)點和管理節(jié)點則都可以在管理節(jié)點通過管理程序來完成:ndb_mgm sh

56、utdownConnected to Management Server at: localhost:1186 Node 3: Cluster shutdown initiatedNode 2: Cluster shutdown initiated Node 2: Node shutdown completed. Node 3: Node shutdown completed.2 NDB Cluster node(s) have shutdown.Disconnecting to allow management server to shutdown.2、基本管理前面運行令 ndb_mgm 如

57、果不帶任何參數(shù),實際上是進入Cluster令行管理界面。在命令行管理界面里面可以做大量的工作,如下:rootlocalhost-cluster# ndb_mgm- NDB Cluster - Management C nt - ndb_mgm然后同樣執(zhí)行 show 命令:ndb_mgmshowConnected to Management Server at: localhost:1186 Cluster Configurationndbd(NDB)2 node(s)id=2 (not connected, accepting connect from 192.168.0.3)192.168.

58、0.4 (Ver: 5.0.51, Nodegroup: 0, Master)id=3ndb_mgmd(MGM) 1 node(s)id=1192.168.0.5 (Ver: 5.0.51)id=4id=5d(API)2 node(s)192.168.0.1 (Ver10.0.65.203 (Ver: 5.0.51): 5.0.51)可以看到結果和上面的完全一樣。可以通過在 ndb 控制界面下執(zhí)行 help 命令查看可以查看很多基本的ndb_mgm help管理命令:NDB Cluster - Management Cnt - HelpHELP HELPSHOW)SHOWPrPrhelp te

59、xtdetailed help forDD(e.g.Prinformation abolusterSTART BACKUP NOWAIT | WAIT STARTED | WAIT COMPLETEDStart backup (default WAIT COMPLETED)ABORT BACKUP Abort backupShutdown all proses in clusterCLUSTERLOG ON . CLUSTERLOG OFF . CLUSTERLOG TOGGLE . CLUSTERLOG INFO START RESTART -n -iEnable Cluster loggi

60、ng Disable Cluster loggingToggle severity filter on/offPrcluster log informationStart data node (started with -n)Restart data or management servernode STOPENTER SINGLE USER MODE EXIT SINGLE USER MODEStop data or management server node Enter single user modeExit single user mode SUSPrs us CLUSTERLOG

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論