標籤:mysqlclust mysql叢集 mysql 叢集
前言
最近在項目中用到了MySQL叢集,所以就和小夥伴們研究了兩天。下面給大家分享一下成果。
小編始終覺得對新事物的學習,沒有比看圖這種方式更好地理解了。所以先來看一張mysql叢集的架構圖(摘自百度百科-MySQL Cluster):
一共分了四層:Applications、SQL、Storage、Management。
如果您的英語不是體育老師教的的話,那麼您肯定已經猜出來每一層的職責了:
—–Applications主要是指需要串連資料庫的應用程式;
—–SQL中每一個mysqld都是一個sql節點,Applications需要通過串連sql節點來儲存資料,您可以把它看成應用程式與資料庫叢集進行資料交換的大門
—–Storage有‘倉庫’的意思,所以資料都是存在資料節點(ndbd)中的,而且每個資料節點的資料都是一致的,都是一整套最新的資料
—–Management中就是管理節點,一個MySQL中只有一個管理節點,用來管理其他節點
綜上所述,一個MySQL叢集中包括三種節點(不包括Applications):管理節點、資料節點,sql節點。
一、下載叢集版mysql
下載mysql-cluster-gpl-7.4.7-win32或mysql-cluster-gpl-7.4.7-winx64
:http://yunpan.cn/cd892RtysQ3Vk (提取碼:45c8)
MySQL官網:http://dev.mysql.com/downloads/cluster/
二、配置MySQL叢集
需要用三台機器(沒有條件的朋友可以考慮用虛擬機器),一台組態管理節點:另外兩台每台配置一個資料節點和一個SQL節點(也可以用五台電腦,每台電腦配置一個節點):
管理節點:192.168.25.50
資料節點A:192.168.25.49
資料節點B:192.168.25.48
SQL節點A:192.168.25.49
SQL節點B:192.168.25.48
1、首先將下載壓縮包解壓到每台電腦的C:/mysql目錄下:
當然放在其他盤的目錄裡也可以。
2、組態管理節點
在組態管理節點(192.168.25.50)的電腦上的C:\Mysql\Bin目錄下建立cluster-logs和config兩個檔案夾。cluster-logs用來儲存記錄檔,在config檔案夾中建立my.ini和config.ini兩個設定檔:
my.ini
[mysql_cluster] # Options for management node process config-file=C:/mysql/bin/config/config.ini
config.ini
[ndbd default] # Options affecting ndbd processes on all data nodes: NoOfReplicas=2 # Number of replicas DataDir=C:/mysql/bin/cluster-data # Directory for each data node‘s data files # Forward slashes used in directory path, # rather than backslashes. This is correct; # see Important 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] # Management process options: HostName=192.168.25.50 # 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": HostName=192.168.25.49 # Hostname or IP address[ndbd] # Options for data node "B":HostName=192.168.25.48 # Hostname or IP address[mysqld] # SQL node A options:HostName=192.168.25.49 # Hostname or IP address[mysqld] # SQL node B options:HostName=192.168.25.48 # Hostname or IP address
3、配置資料節點
在配置資料節點(192.168.25.48、192.168.25.49)的電腦上的C:\Mysql\Bin目錄下建立cluster-data檔案夾,用來存放資料:
SQL節點不用任何配置,至此,整個MySQL叢集就搭建完成了。
三、啟動MySQL叢集
啟動MySQL叢集時,有一個啟動順序:先啟動管理節點,再啟動資料節點,再啟動sql節點。
1、啟動管理節點:
在cmd中運行如下命令
c:\mysql\bin\ndb_mgmd.exe --configdir=c:\mysql\bin\config --config-file=c:\mysql\bin\config\config.ini --ndb-nodeid=1 --reload –initial
2、啟動每個資料節點:
在cmd中運行如下命令:
c:\mysql\bin\ndbd.exe --ndb-connectstring=192.168.25.50
3、啟動每個sql節點:
在cmd中運行如下命令:
c:\mysql\bin\mysqld.exe --ndbcluster --ndb-connectstring=192.168.25.50 --console
現在整個MySQL叢集就已經啟動了。
4、查看每個節點的狀態:
在管理節點所在電腦上(192.168.25.50)開啟ndb_mgm.exe,或者直接在cmd中運行
c:\mysql\bin\ndb_mgm
執行“show”命令,可以查看到每個節點的串連狀態:
這就表明每個節點均串連正常。下面測試資料。
三、測試MySQL叢集1、在sql節點A建立資料庫並插入資料:
在sql節點A的電腦上(192.168.25.49)的cmd中運行C:\mysql\bin\mysql.exe -u root -p命令登入mysql,接下來需要輸入密碼時,密碼預設為空白(直接斷行符號)。
建立資料庫並插入資料:
—–建立名為”MySQL_Cluster_Test”的資料庫:
create database MySQL_Cluster_Test;
—–建立表”T_User”:
use MySQL_Cluster_Test;create table T_User(Name varchar(32),Age int) engine=ndbcluster;
注意建表語句後面一定要加上 engine=ndbcluster
—–插入資料:
insert into T_User values(‘DannyHoo‘,26);
—–查詢資料:
select * from T_User;
2、在sql節點B也可以查詢到資料。
同樣在sql節點B的電腦上(192.168.25.48)的cmd中運行C:\mysql\bin\mysql.exe -u root -p命令登入mysql。
執行 show databases; 命令可以查看到在sql節點A建立的資料庫;
執行use MySQL_Cluster_Test;
select * from T_User;
可以查詢到在sql節點A插入的資料。
到這裡,整個叢集的搭建和測試就完成了。假如一個資料節點宕機,並不會影響整個叢集的運行,任何一個資料節點死掉甚至物理損壞都不用擔心,因為每個資料節點儲存的資料都是完整的一份資料(在你操作資料的時候,它早就自動為你把最新的資料備份到每一個資料節點上啦)。你可以測試一下,這時手動停止某個資料節點和sql節點,另外一個資料節點和sql節點還會正常運行。當你把停止的資料節點和sql節點重新啟動時,會發現又重新串連到叢集裡了,而且每個資料節點的資料都是最新的。
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
在Windows環境下配置MySQL叢集