配置環境
VMware:(版本10.0.01)
作業系統:Windows Server 2008 R2 Enterprise
VM1:192.168.220.103 管理節點(MGM),資料節點(NDBD1),SQL節點(SQL1)
VM2:192.168.220.104 資料節點(NDBD2),SQL節點(SQL2)
MySQL Cluster版本:7.3.7 (MSI Installer) 下載地址:http://dev.mysql.com/downloads/cluster/
測試載入器:Navicate for MySQL
相關知識
簡介:
MySQL Cluster 是一種技術,該技術允許在無共用的系統中部署“記憶體中”資料庫的 Cluster 。通過無共用體繫結構,系統能夠使用廉價的硬體,而且對軟硬體無特殊要求。此外,由於每個組件有自己的記憶體和磁碟,不存在單點故障。
MySQL Cluster 由一組電腦構成,每台電腦上均運行著多種進程,包括MySQL伺服器,NDB Cluster 的資料節點,管理伺服器,以及(可能)專門的資料訪問程式
特點: http://www.mysql.com/products/cluster/features.html
三種節點:
管理節點:用於管理叢集共它節點; 守護進程ndb_mgmd
資料節點:用於儲存叢集的資料; 守護進程ndbd
SQL節點:用於串連資料節點;守護進程mysqld
詳情請參考:參考手冊中MySQL Cluster章節
配置過程
在VM1和VM2上安裝MySQL Cluster(mysql-cluster-gpl-7.3.7-winx64)
選擇typical安裝,安裝目錄均為:C:Program FilesMySQLMySQL Cluster 7.3
在VM1和VM2上的Windows 資源管理員中開啟C:Program FilesMySQL,在此目錄下建立檔案夾MySQL Server 5.6,然後在建立的MySQL Server 5.6檔案夾下建立mysql-cluster檔案夾
建立檔案夾的路徑分別為:C:Program FilesMySQLMySQL Server 5.6
C:Program FilesMySQLMySQL Server 5.6mysql-cluster
在VM1的Windows 資源管理員開啟目錄C:Program FilesMySQLMySQL Cluster 7.3,並在此目錄下建立一個config.ini檔案
代碼如下 |
複製代碼 |
[ndbd default] NoOfReplicas=2 [ndb_mgmd] NodeId=1 HostName=192.168.220.103 DataDir=C:Program FilesMySQLMySQL Cluster 7.3data [ndbd] NodeId=21 HostName=192.168.220.103 DataDir=C:Program FilesMySQLMySQL Server 5.6mysql-cluster [ndbd] NodeId=22 HostName=192.168.220.104 DataDir=C:Program FilesMySQLMySQL Server 5.6mysql-cluster [mysqld] NodeId=11 HostName=192.168.220.103 [mysqld] NodeId=12 HostName=192.168.220.104 |
在VM1和VM2的資源管理員中開啟目錄C:Program FilesMySQLMySQL Cluster 7.3,並在此目錄下建立一個my.ini檔案
代碼如下 |
複製代碼 |
[mysqld] character_set_server=utf8 basedir="C:Program FilesMySQLMySQL Cluster 7.3" datadir="C:Program FilesMySQLMySQL Cluster 7.3data" sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES ndbcluster ndb-connectstring=192.168.220.103 explicit_defaults_for_timestamp=true [mysql_cluster] ndb-connectstring=192.168.220.103 |
在VM1和VM2中設定環境變數(非必需,文中並未用到,都會CD轉到到相應目錄去執行命令)
電腦右鍵屬性 (或者 控制台系統和安全系統)--->進階系統配置--->"進階"選擇卡--->環境變數--->系統變數中找到 Path--->編輯--->加上C:Program FilesMySQLMySQL Cluster 7.3bin
注意:多個路徑用分號分隔
設定檔主要參數介紹:
[NDBD]:定義了叢集的資料節點
[MYSQLD]:定義了叢集的MySQL伺服器節點
[MGM]或[NDB_MGMD]:定義了叢集的管理伺服器節點
[NDB_MGMD]Id:節點唯一的標識
[NDBD]NoOfReplicas:全域參數僅能在[NDBD DEFAULT]中設定,它定義了叢集中每個表儲存的副本數。該參數還指定了節點群組的大小。節點群組指的是儲存相同資訊的節點集合
[NDBD]DataDir:該參數指定了存放追蹤檔案、記錄檔、 pid檔案以及錯誤記錄檔的目錄
[MYSQLD]basedir:使用指定目錄作為根目錄
[MYSQLD]datadir:使用指定目錄讀取資料庫檔案
在管理節點(MGM)機器上(VM1)中開啟CMD視窗執行如下命令,啟動管理節點
代碼如下 |
複製代碼 |
cd "C:Program FilesMySQLMySQL Cluster 7.3bin" db_mgmd.exe --config-file="C:Program FilesMySQLMySQL Cluster 7.3config.ini" --configdir="C:Program FilesMySQLMySQL Cluster 7.3" |
注意:warning資訊不影響,兩台機器組態管理節點和資料節點在一台機器上的原因,並不會引起叢集失敗
在資料節點(NDBD1)機器上(VM1)中新開啟CMD視窗執行如下命令,啟動資料節點
cd "C:Program FilesMySQLMySQL Cluster 7.3bin"
ndbd.exe --initial
注意:--initial只有初次執行需要,以後執行ndbd.exe就可以(參考手冊裡的意思應該是當需要清理叢集檔案時才使用,所以這個參數應該要慎用或者提前備份)
在SQL節點(SQL1)機器上(VM1)中新開CMD視窗執行如下命令,啟動SQL節點
代碼如下 |
複製代碼 |
cd "C:Program FilesMySQLMySQL Cluster 7.3bin" mysqld.exe --default-file="C:Program FilesMySQLMySQL Cluster 7.3my.ini" mysqld --install net start mysql |
注意:執行mysqld --install 你可以在電腦的伺服器看到名為“MySQL”的服務,在執行net start mysql,在服務中可以看到MySQL服務為“啟動”狀態
在資料節點(NDBD2)機器上(VM2)中新開啟CMD視窗執行如下命令,啟動資料節點
代碼如下 |
複製代碼 |
cd "C:Program FilesMySQLMySQL Cluster 7.3bin" ndbd.exe |
在SQL節點(SQL2)機器上(VM2)中新開CMD視窗執行如下命令,啟動SQL節點
代碼如下 |
複製代碼 |
cd "C:Program FilesMySQLMySQL Cluster 7.3bin" mysqld.exe --default-file="C:Program FilesMySQLMySQL Cluster 7.3my.ini" mysqld --install net start mysql |
檢查配置
在管理節點(MGM)機器上(VM1)中開啟CMD視窗執行如下命令
代碼如下 |
複製代碼 |
ndb_mgm.exe show |
如上圖狀態,表示安裝成功!
同步測試
在VM1和VM2上安裝Navicat for MySQL(安裝步驟省略)
在VM1和VM2上開啟Navicat for MySQL並建立串連(樣本建立串連分別為:192.168.220.103和192.168.220.104) 安裝後預設使用者名為root,沒有密碼
在192.168.220.103中建立資料庫wilson_mysqlcluster_test,在192.168.220.104中查看
發現192.168.220.104中也出現wilson_mysqlcluster_test
在192.168.220.104中的wilson_mysqlcluster中建一個tb_test表,注意引擎選擇“ndbcluster”,在192.168.220.103中可以看到也會有tb_test表出現
測試在192.168.220.103或192.168.220.104中增、刪、改操作,兩個資料庫都會同步
故障測試
在VM2中停止SQL節點,在192.168.220.103上插入一條資料(原本有2條資料),再啟動VM2上的SQL節點,看是否能正常同步
1.在VM2中CMD視窗執行如下命令停止MySQL服務
net stop msyql
2.在192.168.220.103中插ID為3的資料後,執行如下命令,再次啟動VM2中的MySQL服務,查看192.168.220.104中資料是否完整
net start mysql
測試結果如圖:得到完整資料
其它測試就不一一列舉了
總結
配置前仔細看了MySQL參考檔案MySQL Cluster章節
MySQL Cluster配置過程還是比較容易出錯,配置過程中大小錯誤遇到非常多(目錄、SQL節點not connected、MYSQL服務無法啟動、資料無法同步等等),根據CMD上錯誤和記錄檔尋找對應的解決方案
注意啟動順序會少遇到很多錯誤:管理節點--->資料節點--->SQL節點
生產環境建議用至少3台伺服器去配置,需要修改一下config.ini檔案,配置過程與兩台沒什麼差別