MySQL群集技術在分布式系統中為MySQL數據提供了冗余特性,增強了安全性,使得單個MySQL服務器故障不會對系統產生巨大的負面效應,系統的穩定性得到保障。

       Mysql群集(Cluster)簡介

       MySQL群集需要有一組計算機,每臺計算機的角色可能是不一樣的。MySQL群集中有三種節點:管理節點、數據節點和SQL節點。群集中的某計算機可能是某一種節點,也可能是兩種或三種節點的集合。這三種節點只是在邏輯上的劃分,所以它們不一定和物理計算機是一一對應的關系。

       管理節點(也可以稱管理服務器)主要負責管理數據節點和SQL節點,還有群集配置文件和群集日志文件。它監控其他節點的工作狀態,能夠啟動、關閉或重啟某個節點。其他節點從管理節點檢索配置數據,當數據節點有新事件時就把事件信息發送給管理節點并寫入群集日志。

       數據節點用于存儲數據。

       SQL節點跟一般的MySQL服務器是一樣的,我們可以通過它進行SQL操作。

       下圖中畫出了三種群集節點及應用程序間的關系:

       MySQL Cluster的下載

       我們使用的Mysql Server已經不能滿足群集的要求,配置群集需要使用MySQL Cluster。

       MySQL Cluster支持Linux、Mac OS X、Solaris和Windows操作系統。雞啄米以Windows系統下的MySQL Cluster版本MySQL Cluster 7.2.5為例說明MySQL Cluster的配置和啟動。

       MySQL Cluster的下載地址是http://dev.mysql.com/downloads/cluster。如果你的操作系統是32位的,就選擇Windows (x86, 32-bit), ZIP Archive下載,大小為228.9M,如果是64位的,就下載Windows (x86, 64-bit), ZIP Archive,大小為232.7M。它們都是免安裝的二進制版本。

       MySQL Cluster的配置

       首先找三臺電腦,或者是開三個虛擬機,管理節點部署在一臺機子上,其他兩臺每臺都部署一個數據節點和一個SQL節點。雞啄米這里以兩臺機子舉例,其中一臺(IP為192.168.1.10)部署管理節點、數據節點和SQL節點,另一臺(IP為192.168.1.20)部署數據節點和SQL節點。

       其實最好不要將管理節點跟數據節點部署到一臺機子上,因為如果數據節點宕機會導致管理節點也不可用,整個MySQL群集就都不可用了。所以一個MySQL群集理想情況下至少有三臺服務器,將管理節點單獨放到一臺服務器上。雞啄米暫以兩臺舉例,只是為了說明三種節點的配置啟動方法。

       1.將上面下載的安裝包解壓,并改文件夾名為mysql,因為需要多次在命令行中操作,所以名字改短后更容易輸入。

       2.配置管理節點

       在IP為192.168.1.10的主機的C盤中新建文件夾mysql,然后在此文件夾下新建子目錄bin和mysql-cluster,再將安裝包解壓后的mysql\bin中的ndb_mgm.exe和ndb_mgmd.exe拷貝到C:\mysql\bin下。在目錄C:\mysql\bin下新建cluster-logs目錄、config.ini文件和my.ini文件。

       config.ini文件的內容如下:

       [ndbd default]
       # Options affecting ndbd processes on all data nodes:
       NoOfReplicas=2                      # Number of replicas
       DataDir=c:/mysqlcluster/datanode/mysql/bin/cluster-data     # Directory for each data node's data files                             
                                                            
       DataMemory=80M    # Memory allocated to data storage 
       IndexMemory=18M   # Memory allocated to index storage                  
                                        # For DataMemory and IndexMemory, we have used the                   
                                        # default values.

       [ndb_mgmd]
       # Management process options:
       HostName=192.168.1.10                 # Hostname or IP address of management node
       DataDir=C:/mysql/bin/cluster-logs    # Directory for management node log files

       [ndbd]
       # Options for data node "A":                                
       # (one [ndbd] section per data node) 
       HostName=192.168.1.10          # Hostname or IP address

       [ndbd]
       # Options for data node "B":
       HostName=192.168.1.20          # Hostname or IP address

       [mysqld]
       # SQL node options: 
       HostName=192.168.1.10          # Hostname or IP address

       [mysqld]
       # SQL node options:
       HostName=192.168.1.20          # Hostname or IP address

       my.ini中的內容為:

       [mysql_cluster]
       # Options for management node process
       config-file=C:/mysql/bin/config.ini

       3.配置數據節點

       在IP為192.168.1.10的主機中新建文件夾C:\mysqlcluster\datanode\mysql,然后在此文件夾中繼續新建子目錄bin和cluster-data,bin下再建一個子目錄也叫cluster-data。

       將安裝包解壓文件夾中mysql\bin中的ndbd.exe拷貝到C:\mysqlcluster\datanode\mysql\bin下,并在C:\mysqlcluster\datanode\mysql中新建my.ini文件,文件內容為:

       [mysql_cluster] 
       # Options for data node process:
       ndb-connectstring=192.168.1.10      # location of management server

       因為兩臺主機的數據節點的配置是一樣的,所以我們可以直接將192.168.1.10主機中的文件夾C:\mysqlcluster拷貝到192.168.1.20主機的C盤下。

       4.配置SQL節點

       在192.168.1.10主機的C:\mysqlcluster下新建子目錄sqlnode,將安裝包解壓文件夾mysql整個拷貝到這個子目錄下,然后在C:\mysqlcluster\sqlnode\mysql下新建my.ini文件,文件內容為:

       [mysqld]
       # Options for mysqld process:
       ndbcluster                        # run NDB storage engine 
       ndb-connectstring=192.168.1.10   # location of management server

       之后也把C:\mysqlcluster\sqlnode文件夾整個拷貝到192.168.1.20主機的相同目錄下。

       MySQL Cluster的啟動

       三種節點服務啟動時,一定要按照先啟動管理節點,后啟動數據節點,再啟動SQL節點的順序進行。

       1.啟動管理節點

       在192.168.1.10主機中打開命令行窗口,切到C:\mysql\bin目錄,輸入:

       ndb_mgmd -f config.ini --configdir=C:\mysql\mysql-cluster

       回車,管理節點服務就啟動了,命令行上可能沒有任何提示信息,可以打開C:\mysql\bin\cluster-logs\ndb_1_cluster.log日志文件查看啟動信息。注意,此命令行窗口不能關閉,除非你想停止服務。

       注:我們也可以將其做成服務,在命令行中輸入:

       ndb_mgmd --install=ndb_mgmd -f config.ini --configdir=C:\mysql\mysql-cluster

       2.啟動數據節點

       在192.168.1.10主機中打開一個新的命令行窗口,切到目錄C:\mysqlcluster\datanode\mysql\bin,輸入:

       ndbd

       回車,數據節點就啟動了。

       注:我們也可以將其做成服務,在命令行中輸入:

       ndbd --install=ndbd

       以相同的方法在192.168.1.20中啟動數據節點服務。

       如何查看是否啟動成功呢?我們可以在192.168.1.10主機中再新開一個命令行窗口,切到目錄C:\mysql\bin,輸入:

       ndb_mgm

       回車,然后再輸入:

       ALL STATUS

       回車,就可以看到數據節點的連接信息了。

       3.啟動SQL節點

       在192.168.1.10主機中繼續打開一個新的命令行窗口,切到目錄C:\mysqlcluster\sqlnode\mysql\bin,輸入:

       mysqld --console

       回車,SQL節點啟動。

       注:我們也可以將其做成服務,輸入:

       mysqld -install mysql

       以相同的方法在192.168.1.20中啟動SQL節點。

       想要查看SQL節點的啟動情況可以在192.168.1.10主機中同樣打開新命令行,輸入:

       ndb_mgm

       回車,再輸入:

       SHOW

       回車,就可以看到SQL節點的連接情況了。

       測試MySQL Cluster

       我們需要測試三種情況:

       1.在任一SQL節點對數據節點進行操作后,各數據節點是否能夠實現數據同步。例如,我們在192.168.1.10主機上新創建一個數據庫myDB,然后再建一個表student(新建表如下命令:create table student (id int(2)) engine=ndbcluster),插入若干數據,接著我們到192.168.1.20主機上查看是否能看到新的數據庫myDB和新的表student以及插入數據。

       2.當關閉任一數據節點后,在所有SQL節點中進行操作是否不受其影響。例如,我們關閉192.168.1.10主機上的數據節點服務,在兩臺主機上應該能夠繼續對數據庫進行各種操作。

       3.關閉某數據節點進行了數據庫操作,然后重新啟動,所有SQL節點的操作是否正常。

       這里要說明的是,通過SQL節點創建新的數據庫時,必須在create語句中使用“engine=ndbcluster”選擇ndbcluster數據庫引擎,否則創建的數據庫不會加到MySQL群集系統中,只能作為普通的數據庫獨立使用。

除非特別注明,雞啄米文章均為原創
轉載請標明本文地址:http://www.cpbsu.com/software/168.html
2012年4月29日
作者:雞啄米 分類:軟件開發 瀏覽: 評論:9