本文將討論在Windows下搭建MySQL集羣的步驟和搭建過程中應當注意的問題。
由於機器數量和性能有限,搭建環境爲一臺宿主機(IP:10.200.178.191),一臺虛擬機(IP:10.200.178.192)。
管理節點、數據存儲節點和SQL節點的分配情況如下:
管理節點:10.200.178.191
數據存儲節點:10.200.178.192
SQL節點:10.200.178.191和10.200.178.192
注意:生產環境中最好不要將數據存儲節點和管理節點放在同一臺機器上,否則如果數據存儲節點宕機,將導致管理節點宕機,最終後果是整個集羣宕機。
第一步:安裝MySQL CLuster集羣,下載地址:http://dev.mysql.com/downloads/cluster,下載Windows下的MySQL Cluster。
注意:如果在配置實例的過程中出現"mysql Error Nr. 2003”錯誤,說明本機安裝了IPV6,導致MySQL無法解析localhost爲127.0.0.1。
解決方法:在cmd中運行 ipv6 uninstall,安裝後在cmd中運行ipv6 install 就可以避免上述問題了,如果ping localhost時結果如下圖所示,表示正確。
第二步:配置MySQL集羣
2.1:配置config.ini文件
在10.200.178.191機器的C:\mysql\mysql-cluster目錄下,新建config.ini初始文件,內容如下:
[NDBD DEFAULT]#ndbd節點的默認配置
NoOfReplicas=1#因爲每組數據節點個數,組數=數據節點總數/NoOfReplicas,且組數必須爲整數,#否則將報Nodegroup i has j members,NoOfReplicas=x此類錯#誤
DataDir=C:\mysql\mysql-cluster\bin\cluster-data #Data node storage directory,ndbd配置的datadir優先級更高
DataMemory=80M # 數據存儲分配的內存,酌情設置
IndexMemory=18M # 索引存儲分配的內存,酌情設置
[MYSQLD DEFAULT]
[NDB_MGMD DEFAULT]
[TCP DEFAULT]
#management node
[NDB_MGMD]
HostName=10.200.178.191
#data storage node 1
#[NDBD]
#HostName=10.200.178.191
#DataDir= D:\cluster-data#若沒有,請先創建該目錄
#data storage node 2
[NDBD]
HostName=10.200.178.192
DataDir= D:\cluster-data
#sql node 1
[MYSQLD]
HostName=10.200.178.191
#sql node 2
[MYSQLD]
HostName=10.200.178.192
2.2:配置my.ini文件
在10.200.178.191機器的MySQL安裝目錄的bin下,找到my.ini,配置該機器爲MySQL節點,在該文件末尾添加如下內容:
[mysqld]
ndbcluster#mysql服務將作爲羣集的 SQL 節點啓動
ndb-connectstring=10.200.178.191#管理節點IP
在10.200.178.192機器的MySQL安裝目錄的bin下,找到my.ini,配置該機器爲數據存儲節點和MySQL節點,在該文件末尾添加如下內容:
[mysqld]#MySQL節點
ndbcluster
ndb-connectstring=10.200.178.191#管理節點IP
[mysql_cluster]#數據存儲節點
ndb-connectstring=10.200.178.191#管理節點IP
注意:每一次對配置文件進行修改後,務必重新啓動MySQL服務。
第三步:啓動MySQL集羣
MySQL集羣的啓動順序爲管理節點、數據節點和SQL節點
3.1:啓動管理節點
在10.200.178.191機器的cmd下輸入ndb_mgmd -f "C:\mysql\mysql-cluster\config.ini"
注意:運行上述命令的前提是已將MySQL的bin目錄添加到了環境變量中的Path目錄下。
3.2:啓動數據節點
在10.200.178.192機器的cmd下輸入ndbd.exe --initial
注意:第一次啓動數據節點必須加上 --initial,如果再次啓動時加 --initial會將所有的數據幹掉
3.3:啓動sql節點
默認情況下是如果開啓動了MySQL服務,表示已開啓了SQL節點。
第四步:查看MySQL集羣狀態
在任何一臺機器的cmd下輸入ndb_mgm回車後,輸入show查看集羣的狀態,如下圖所示:
第五步:測試MySQL集羣
在任何一臺SQL節點上創建數據庫cluster,sql如下:
create table people(id int, name varchar(10)) engine=ndbcluster default charset utf8;
在任何一臺SQL節點的mysql客戶端下插入數據,然後在任何一臺SQL節點的mysql客戶端下查詢數據。
第六步:關閉MySQL集羣
MySQL集羣的關閉順序是SQL節點、存儲節點、管理節點
在集羣中每一臺機器的cmd下輸入net stop mysql關閉SQL節點
在集羣中任何一臺機器的cmd下輸入ndb_mgm回車後,輸入shutdown -e關閉數據存儲結點和管理結點