1. 程式人生 > >兩臺電腦來簡單搭建Windows平臺下的MySQL叢集

兩臺電腦來簡單搭建Windows平臺下的MySQL叢集




MySQL叢集支援多臺電腦,本文搭建的MySQL叢集以兩臺機子為例,其中一臺(IP為192.168.24.33)部署管理節點、資料節點和SQL節點,另一臺(IP為192.168.24.82)部署資料節點和SQL節點。
   實際應用中,不要將管理節點跟資料節點部署到一臺機子上,因為如果資料節點宕機會導致管理節點不可用,同時整個MySQL群集也就都不可用了。所以一個MySQL群集理想情況下至少有三臺伺服器,將管理節點單獨放到一臺伺服器上。這裡以兩臺舉例,只是為了說明三種節點的配置啟動方法。

注意:本人使用的MySQL Cluster版本為:mysql-cluster-gpl-7.3.X-winx64.zip  之後的版本結構不一樣,部署的方式略有不同 ,系統環境為win7,win10因為許可權調整,會比較麻煩



   簡單介紹一下MySQL叢集涉及的三種節點:
   管理節點(也可以稱管理伺服器)是整個叢集環境的核心,類似於叢集中起排程作用的樞紐,由它來負責管理其它節點(資料節點和SQL節點)的開啟、關閉或重啟某個節點等等;其他節點從管理節點檢索配置資料,當資料節點有新事件時就把事件資訊傳送給管理節點並寫入群集日誌。該管理節點也是從mysql 5.6版本之後才出現,可見資料庫對於搭建叢集這個方向正在提出新的需求和新的挑戰,也許在之後的版本中搭建叢集將變的非常簡單,期待後續版本功能更強大。


    資料節點用於儲存資料,如使用者的資料、資料庫、表、檢視、儲存過程等都儲存在資料節點中。
    SQL節點(即MySQL Service伺服器)跟一般的MySQL伺服器是一樣的,通過它來對資料進行管理和維護工作,為資料庫提供各種服務,如操作資料庫、安全、備份。
     下面簡單介紹MySQL叢集的搭建過程:


一、本例項MySQL叢集所需環境
    1.兩臺電腦(本人使用兩臺Windows8 作業系統的電腦)。
    2.MySQL Cluster軟體,官網地址:http://dev.mysql.com/downloads/cluster/


 (本人使用的MySQL Cluster版本為:mysql-cluster-gpl-7.3.5-winx64.zip)
     注意:下載合適的MySQL版本,包括平臺和安裝方式,推薦下載zip版本,便於配置和遷移




二、配置MySQL Cluster
1.配置管理節點
1.1 在IP為192.168.24.33的主機的C盤根目錄中新建資料夾mysql,然後在此資料夾下新建子目錄bin和mysql-cluster,再將安裝包中的bin目錄下的ndb_mgm.exe和ndb_mgmd.exe拷貝到C:\mysql\bin下。在目錄C:\mysql\bin下新建cluster-logs目錄、config.ini檔案和my.ini檔案。




1.2 config.ini檔案內容如下:


[plain]  view plain  copy  print ?
  1. [ndbd default]   
  2. # Options affecting ndbd processes on all data nodes:   
  3. # Number of replicas  
  4. NoOfReplicas=2   
  5. DataDir=c:/mysqlcluster/datanode/mysql/bin/cluster-data       
  6. # Directory for each data node's data files                               
  7. # Memory allocated to data storage                                                    
  8. DataMemory=80M  
  9. # Memory allocated to index storage      
  10. IndexMemory=18M                        
  11. # For DataMemory and IndexMemory, we have used the                     
  12. # default values.  
  13.   
  14. [ndb_mgmd]   
  15. # Management process options:  
  16. # Hostname or IP address of management node 管理節點   
  17. HostName=192.168.24.33               
  18. # Directory for management node log files   
  19. DataDir=C:/mysql/bin/cluster-logs  
  20.   
  21. [ndbd]   
  22. # Options for data node "A":                                  
  23. # (one [ndbd] section per data node)   
  24. # Hostname or IP address 資料節點  
  25. HostName=192.168.24.33          
  26.   
  27. [ndbd]   
  28. # Options for data node "B":   
  29. # Hostname or IP address  
  30. HostName=192.168.24.82            
  31.   
  32. [mysqld]   
  33. # SQL node options:   
  34. # Hostname or IP address sql節點  
  35. HostName=192.168.24.33       
  36.   
  37. [mysqld]   
  38. # SQL node options:   
  39. # Hostname or IP address  
  40. HostName=192.168.24.82   






1.3 my.ini中的內容如下



[plain]  view plain  copy  print ? 派生到我的程式碼片
  1. [mysql_cluster]  
  2. # Options for management node process  
  3. config-file=C:/mysql/bin/config.ini 





2.配置資料節點
2.1 在IP為192.168.24.33的主機中新建資料夾C:\mysqlcluster\datanode\mysql,然後在此資料夾(mysql)中繼續新建子目錄bin和cluster-data,bin下再建一個子目錄也叫cluster-data。
2.2 將安裝包data目錄下的所有檔案拷貝到C:\mysqlcluster\datanode\mysql\cluster-data下
2.3 將安裝包中bin目錄下的ndbd.exe拷貝到C:\mysqlcluster\datanode\mysql\bin下,並在C:\mysqlcluster\datanode\mysql中新建my.ini檔案,檔案內容為:


[plain]  view plain  copy  print ? 派生到我的程式碼片
  1. [mysql_cluster]   
  2. # Options for data node process:   
  3. # location of management server  
  4. ndb-connectstring=192.168.24.33 



注:因為各資料節點的配置是一樣的,所以我們可以直接將192.168.24.33主機中的資料夾C:\mysqlcluster拷貝到192.168.24.82主機的C盤下,並無需任何更改。




3.配置SQL節點
3.1 在192.168.24.33主機的C:\mysqlcluster下新建子目錄sqlnode,在C:\mysqlcluster\sqlnode下新建子目錄mysql,將安裝包檔案解壓到mysql目錄下,然後在C:\mysqlcluster\sqlnode\mysql下新建my.ini檔案,檔案內容為:


[plain]  view plain  copy  print ? 派生到我的程式碼片
  1. [mysqld]   
  2. # Options for mysqld process:   
  3. # run NDB storage engine   
  4. ndbcluster                         
  5. # location of management server   
  6. ndb-connectstring=192.168.24.33  




3.2 將my-default.ini 檔案刪除或更名為my-default.ini.bak
注:因為各SQL節點的配置是一樣的,所以我們可以直接將192.168.24.33主機中的資料夾C:\mysqlcluster拷貝到192.168.24.82主機的C盤下,並無需任何更改。






三、啟動MySQL Cluster


   在啟動MySQL Cluster之前,首先要做的是保證每個SQL節點上的MySQL服務能夠啟動成功,併為每個SQL節點進行相關許可權的分配以保證能夠遠端登入訪問。然後依次啟動三種節點。三種節點服務啟動時,一定要按照先啟動管理節點,後啟動資料節點,再啟動SQL節點的順序進行。
1.啟動MySQL服務
1.1 進入C:\mysqlcluster\sqlnode\mysql\bin目錄下,使用mysqld –install安裝MySQL服務
1.2 使用net start mysql命令啟動MySQL服務(如果已經安裝MySQL服務,就不必進行第1步操作)




若沒安裝MySQL服務,先安裝MySQL服務再開啟MySQL服務,按如下圖片進行




注:依次執行各個SQL節點,保證MySQL服務正確啟動。


2.配置MySQL遠端連線
2.1 進入C:\mysqlcluster\sqlnode\mysql\bin目錄下,使用mysql -uroot -p,然後輸入密碼,設定root使用者密碼。(注:剛安裝的MySQL,預設密碼為空!)




2.2 切換到mysql資料庫,輸入以下命令,為root使用者分配遠端連線的相關許可權

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED  BY 'root' WITH GRANT OPTION;






接下來依次啟動各節點:
3.啟動管理節點
 在192.168.24.33主機中開啟命令列視窗,切到C:\mysql\bin目錄,輸入


ndb_mgmd -f config.ini   --configdir=C:\mysql\mysql-cluster
回車,管理節點服務就啟動了,命令列上可能沒有任何提示資訊,可以開啟C:\mysql\bin\cluster-logs\ndb_1_cluster.log日誌檔案檢視啟動資訊。



注意:此行命令列視窗不能關閉,除非想停止服務。




4.啟動資料節點
4.1 在192.168.24.33主機中開啟新命令列視窗,切到C:\mysqlcluster\datanode\mysql\bin,輸入 ndbd,按回車,資料節點就啟動了




4.2 以相同的方法在其他資料節點,即192.168.24.82中啟動資料節點服務。
4.3 檢視資料節點及SQL節點連線情況


在192.168.24.33主機中開啟新命令列視窗,切到目錄C:\mysql\bin,輸入:ndb_mgm;按回車,再輸入:
ALL STATUS,回車,就可以檢視資料節點的連線資訊了(若使用Show 會檢視到各管理節點、資料節點、SQL節點的連線資訊)








5.啟動SQL節點
5.1 在192.168.24.16主機中開啟新命令列視窗,切到C:\mysqlcluster\sqlnode\mysql\bin,輸入:
mysqld--console;回車,SQL節點啟動。






5.2  以相同的方法在其他SQL節點,即192.168.24.82中啟動SQL節點。
按上一步(4.3)檢視方法,使用show命令,檢視各SQL節點連線情況。若出現上圖情況,表示各節點均已連線成功!
四、測試MySQL Cluster
在任一SQL節點,即192.168.24.33主機上新建立一個數據庫mytestmysql,可以看到其他SQL結點,即192.168.24.82均建立了一個mytestmysqlB資料庫。在一臺機子上對資料表進行任何操作,另一臺機子上的資料庫也會進行相應的操作。


注意: 為了讓資料表能夠在cluster中正常複製,建立資料表時必須指定為ndbcluster引擎(engine=ndb或engine=ndbcluster)。




NDB儲存引擎
NDB儲存引擎是一個叢集儲存引擎,類似於orcle的rac叢集,不過與rac share everything結構不同的是,其結構是share nothing的叢集結構,因此能提供更高級別的高可用性。
特點:
1,資料全部放在記憶體中,從5.1版本開始,可以將非索引資料放在磁碟上,因此主鍵查詢的速度極快,並且通過新增ndb資料儲存引擎節點(Data Node)可以線性地提高資料庫效能,是高可用,高效能的集群系統。
2,ndb儲存引擎的連線操作(join)是在mysql資料庫層完成的,而不是在儲存引擎層完成的,這意味著複雜的連線操作需要巨大的網路開銷,因此,查詢速度很慢,這是ndb的瓶頸。



   至此,Windows平臺搭建MySQL叢集的過程就介紹完了!