1. 程式人生 > >windows XP下MySQL Cluster叢集安裝配置

windows XP下MySQL Cluster叢集安裝配置

安裝過程

1軟體的下載

Windows32位免安裝版的,如圖:


2機子的配置及作用

準備3臺電腦,機子的功能和配置見下表

Node

IP Address

Management (MGMD) node

192.168.1.102

MySQL server (SQL) node “A”

192.168.1.103

MySQL server (SQL) node “B”

192.168.1.108

Data (NDBD) node "A"

192.168.1.103

Data (NDBD) node "B"

192.168.1.108

我們可以看到192.168.1.103

機器可以分別作為SQL nodeData node同時使用。192.168.1.108的配置也是如此。如果安裝的IP有變,則在下列安裝過程中出現的ini檔案裡寫的IP地址也要相應的改正。

3.軟體的安裝

3.1解壓下載的安裝包,為了方便,把資料夾的名字改為mysql

3.2 Managementnode的安裝配置。

       Managementnode一定要安裝在C盤下,並且是以下的目錄(這是在執行此節點時報錯,說找不到相對應的目錄)。在IP192.168.1.102的機子上生成c:/mysql/binC:/mysql/mysql-cluster(第一次啟動後在這個資料夾會生成類似ndb_1_config.bin.1

的檔案,好像是為了以後啟動載入的配置)c:/mysql/bin/cluster-logs目錄,在下載解壓的檔案目錄mysql/binndb_mgmd.exendb_mgm.exe複製到192.168.1.102c:/mysql/bin目錄下。在192.168.1.102c:/mysql/bin下生成兩個檔案,my.iniconfig.inimy.ini的內容為:

[mysql_cluster]

# Options formanagement node process

config-file=C:/mysql/bin/config.ini

config.ini的內容:

[ndbd default]

# Optionsaffecting ndbd processes on all data nodes:

NoOfReplicas=2                     # Number of replicas

DataDir=D:/ProgramFiles/mysqlcluster/datanode/mysql/bin/cluster-data   # Directory foreach data node's data files

                                   #Forward slashes used in directory path,

                                    #rather than backslashes. This is correct;

                                   # seeImportant note in text

DataMemory=80M   # Memory allocated to data storage

IndexMemory=18M  # Memory allocated to 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 Cluster setup.

[ndb_mgmd]

# Managementprocess options:

HostName=192.168.1.102              # Hostname or IP address of management node

DataDir=C:/mysql/bin/cluster-logs  # Directory for management node log files

[ndbd]

# Options fordata node "A":

                               # (one [ndbd] section per data node)

HostName=192.168.1.103          # Hostname or IP address

[ndbd]

# Options fordata node "B":

HostName=192.168.1.108          # Hostname or IP address

[mysqld]

# SQL nodeoptions:

HostName=192.168.1.103          # Hostname or IP address

[mysqld]

# SQL nodeoptions:

HostName=192.168.1.108          # Hostname or IP address

3.3 Data nodes的安裝配置

IP192.168.1.103的機子上生成D:/Program Files/mysqlcluster/datanode/mysql/binD:/Program Files/mysqlcluster/datanode/mysql/cluster-dataD:/Program Files/mysqlcluster/datanode/mysql/bin/cluster-data.在下載的的解壓資料夾mysql/bin中將ndbd.exe複製到192.168.1.103機子的D:/Program Files/mysqlcluster/datanode/mysql/bin目錄下,並在D:/Program Files/mysqlcluster/datanode/mysql/bin目錄下生成my.ini檔案,檔案的內容為:

[mysql_cluster]

# Options fordata node process:

ndb-connectstring=192.168.1.102 # location of management server

弄好後直接將192.168.1.103機子下的D:/ProgramFiles/mysqlcluster/datanode整個資料夾複製到192.168.1.108機子的同樣路徑下(或者按照上面的方法一步一步為192.168.1.108機子生成相應的目錄和檔案,但是由於Data nodes的安裝配置都是一樣的,所以直接複製即可)

3.4 SQL node的安裝配置

IP192.168.1.103的機子上生成D:/Program Files/mysqlcluster/sqlnode目錄,將下載的解壓資料夾mysql直接整個複製到D:/Program Files/mysqlcluster/sqlnode目錄下,在D:/Program Files/mysqlcluster/sqlnode/mysql下生成my.ini檔案,檔案內容為:

[mysqld]

# Options formysqld process:

ndbcluster                     # run NDB storage engine

ndb-connectstring=192.168.1.102 # location of management server

即:

《【原創】Windows下構建Mysql Cluster叢集資料庫.docx

同理,將D:/Program Files/mysqlcluster/sqlnode整個資料夾複製到192.168.1.108機子的相同目錄下

4啟動MySQL Cluster

啟動各個節點是有順序的,先是Management node,然後是Data nodes,最後是SQL nodes

4.1啟動Management node

192.168.1.102機子下進入命令列,轉到c:/mysql/bin目錄下,輸入:

ndb_mgmd -fconfig.ini

【執行這個命令的時候出現錯誤,換成下面的就ok了:

ndb_mgmd -fconfig.ini --configdir=C:\mysql\mysql-cluster

點選回車鍵。我第一次啟動的時候是按照官網的弄得,結果官網上少生成了c:/mysql/mysql-clusterc:/mysql/bin/cluster-logs目錄,導致啟動不成功,生成這兩個目錄之後就可以啟動了。這兩個目錄是config.ini檔案裡配置的Datadir,所以要自己相應的生成,這一點官網沒有提示。

4.2啟動Data node

192.168.1.103機子下進入命令列,轉到D:/ProgramFiles/mysqlcluster/datanode/mysql/bin目錄下,輸入:

Ndbd

【要修改為:ndbd --connect-string="host=MGDBIP地址"

ndbd --connect-string="host=59.64.43.174"

點選回車鍵。我第一次啟動的時候是按照官網的弄得,結果官網上少生成了D:/ProgramFiles/mysqlcluster/datanode/mysql/bin/cluster-data目錄,導致啟動不成功,生成這個目錄之後就可以啟動了。這兩個目錄是config.ini檔案裡配置的Datadir,所以要自己相應的生成,這一點官網沒有提示。

同理,按相同方式在192.168.1.108下啟動Data node.

注:此時可通過在Management node中新開一命令列,轉到c:/mysql/bin目錄下輸入命令:

ndb_mgm

啟動ndb_mgm.exe,之後輸入命令:

       ALLSTATUS

檢視到Data node連線是否成功.之後啟動正常之後才能繼續啟動SQL node

4.3啟動SQL node

192.168.1.103機子下進入命令列,轉到D:/ProgramFiles/mysqlcluster/sqlnode/mysql/bin目錄下,輸入:

mysqld --console

【啟動sqlnode的時候,要注意埠是否被佔用,埠被佔用的話會有相應的錯誤提示,我配置的時候出現這個問題了,改一下該sqlnode的埠就行了】

按相同方式啟動192.168.1.108下的SQL node

注:可通過在Management node節點的機器下,轉到c:/mysql/bin目錄下輸入命令:

ndb_mgm       

啟動ndb_mgm.exe,之後輸入命令:

       SHOW

即可檢視到各個節點的連線情況。

接下來我們可以在某個SQL node 機器上利用MYSQL GUI TOOLSMYSQLadministradtor工具新建一個數據庫,然後在其他SQLnode檢視,我們可以看到,所有的SQL node都可以看到新生成的資料庫,至此MYSQL叢集搭建成功.

如果其他SQL node上看不到新生成的資料庫中的表,則說明其中的表沒有使用ndb引擎,方法:alter table table_name engine=ndb

5MySQL Cluster叢集架構

附錄:將MySQL Cluster的各個程式安裝成Windows Services

每次都要轉到相應bin目錄下才能啟動各個程式,有點不方便,這樣我們可以將這些程式安裝到Windows Services中,安裝方式如下:

1        Managementnode

1.1進入命令列,輸入命令

C:/mysql/bin/ndb_mgmd.exe--install

1.2    啟動

NET START ndb_mgmd

1.3    關閉

NET STOP ndb_mgmd

其他程式的安裝類似,略

中間遇到的問題:

1Error Code : 1118

Row size too large. The maximum row size for the usedtable type, not counting BLOBs, is 14000. You have to change some columns toTEXT or BLOBs

問題描述:欄位型別是varchar的時候,如果長度太大,比如2000,則將表的引擎改為ndb的時候會報下面的錯誤:

解決方法:varchar該為longtext便可

2、Error Code : 1005 Cannot create table(……)  (errno:136)

問題描述:只能將學習元資料庫中的一部分表的引擎轉換成ndb

問題原因:MaxNoOfOrderedIndexes引數的值太少了,剛配置叢集完畢的時候沒有設定這個引數,其預設值是128,所以導致只能匯入一部分表。

PS:這個問題耽誤了一天多的時間,當時只是將注意力放在了MaxNoOfTablesMaxNoOfAttributes兩個引數上,沒有考慮這個引數。感覺還是對於資料庫掌握的不好,遇到問題視野很窄,只能依靠搜尋引擎找答案。關於config.ini的詳細配置參考:《MySQL Cluster 詳細配置檔案(config.ini).docx

3、Error Code : 1005 Cannot create table '' (errno: 4335)

問題描述:將表的引擎轉換成ndb的時候,個別表報上面的錯誤。

解決方法:將相應的欄位設為主鍵。

4、檢視無法自動同步

問題描述:A節點中建立的檢視,在B節點中看不到。

問題原因:剛開始以為要改變檢視的engine,發現語法錯誤,也就是不能改變檢視的engine。

注意事項

第四點很重要

1:如果發現關閉一臺機器的ndbd程序,另一臺機器的ndbd的程序也關閉,則需要修改引數NoOfReplicas。

2:./ndbd --initial不能同時在所有資料節點機器上執行,如執行,會刪除所有資料

3:可以像操作非簇型別的資料庫那樣,操作mysqld節點

4:每次修改config.ini檔案,重啟ndb_mgmd時,需要刪除mysql-cluster檔案下的ndb_1_config.bin.1檔案,因為他預設呼叫此檔案

【這一點非常重要,我之前沒注意到這點,導致修改沒用!!!】

5:NDB 簇不支援自動發現數據庫的功能,這點很重要,一旦在一個數據節點上建立了世界(world)資料庫和它的表,

在簇中的每個SQL節點上還需要發出命令 CREATE DATABASE world,後跟FLUSH TABLES。這樣,節點就能

識別資料庫並讀取其表定義。(在本版本MySQL Cluster 7.1.5下資料庫也會自動同步的

6:如果在相關節點伺服器啟動時,注意檢視~/mysql/mysql-cluster目錄內的相關日誌檔案以獲取錯誤資訊.

7:在管理節點的配置檔案裡各[mysqld],[ndbd]和[ndb_mgmd]配置的選項值順序應該如下:

[mysqld]

Id=4

HostName=192.168.208.3

Id在頂端緊跟其後的是HostName,如果順序錯了,當SQL或資料節點連線管理節點時,管理節點無法正確的定位

到其對應的節點配置上.

因為無法定位到對應的節點配置,當沒有剩餘的[空節點]時,客戶端節點啟動時(./mysqld or ./ndbd)

還會報:

Configurationerror: Error : Could not alloc node id at 192.168.0.231 port 1186: No free

node id found formysqld

(API).Failed toinitialize consumers

8:[空節點]是沒有指定HostName選項的節點配置均為空節點,空節點可以用來動態配置一些動態IP的節點,

一般管理節點的 配置檔案要預留3個以上的空節點,因為備份時需要連線一個節點,如下:

[mysqld]

Id=6