1、MySQL集羣簡介
MySQL羣集技術在分佈式系統中爲MySQL數據提供了冗餘特性,增強了安全性,使得單個MySQL服務器故障不會對系統產生巨大的負面效應,系統的穩定性得到保障。MySQL羣集需要有一組計算機,每臺計算機的角色可能是不一樣的。MySQL羣集中有三種節點:管理節點、數據節點和SQL節點。羣集中的某計算機可能是某一種節點,也可能是兩種或三種節點的集合。這三種節點只是在邏輯上的劃分,所以它們不一定和物理計算機是一一對應的關係。
管理節點(也可以稱管理服務器)主要負責管理數據節點和SQL節點,還有羣集配置文件和羣集日誌文件。它監控其他節點的工作狀態,能夠啓動、關閉或重啓某個節點。其他節點從管理節點檢索配置數據,當數據節點有新事件時就把事件信息發送給管理節點並寫入羣集日誌。
數據節點用於存儲數據。
SQL節點跟一般的MySQL服務器是一樣的,我們可以通過它進行SQL操作。
下圖中畫出了三種羣集節點及應用程序間的關係:
2、MySQL集羣安裝配置
下載MySQL集羣:http://dev.mysql.com/downloads/cluster/
mysql-cluster-gpl-7.3.5-winx64.zip:
http://cdn.mysql.com/Downloads/MySQL-Cluster-7.3/mysql-cluster-gpl-7.3.5-winx64.zip
mysql-cluster-gpl-7.3.5-win32.zip:
http://cdn.mysql.com/Downloads/MySQL-Cluster-7.3/mysql-cluster-gpl-7.3.5-win32.zip
1)、MySQL簡介
首先找三臺電腦,或者是開三個虛擬機,管理節點部署在一臺機子上,其他兩臺每臺都部署一個數據節點和一個SQL節點。這裏以兩臺機子舉例,其中一臺(IP爲192.168.24.16)部署管理節點、數據節點和SQL節點,另一臺(IP爲192.168.24.43)部署數據節點和SQL節點。
實際應用中,不要將管理節點跟數據節點部署到一臺機子上,因爲如果數據節點宕機會導致管理節點不可用,同時整個MySQL羣集也就都不可用了。所以一個MySQL羣集理想情況下至少有三臺服務器,將管理節點單獨放到一臺服務器上。這裏以兩臺舉例,只是爲了說明三種節點的配置啓動方法。
2)、配置管理節點
1、在IP爲192.168.24.16的主機的C盤中新建文件夾mysql,然後在此文件夾下新建子目錄bin和mysql-cluster,再將安裝包中的bin目錄下的ndb_mgm.exe和ndb_mgmd.exe拷貝到C:\mysql\bin下。在目錄C:\mysql\bin下新建cluster-logs目錄、config.ini文件和my.ini文件。2、config.ini文件內容如下:
[ndbd default]
# Options affecting ndbd processes on all data nodes:
# Number of replicas
NoOfReplicas=2
DataDir=c:/mysqlcluster/datanode/mysql/bin/cluster-data
# Directory for each data node's data files
# Memory allocated to data storage
DataMemory=80M
# Memory allocated to index storage
IndexMemory=18M
# For DataMemory and IndexMemory, we have used the
# default values.
[ndb_mgmd]
# Management process options:
# Hostname or IP address of management node
HostName=192.168.24.16
# Directory for management node log files
DataDir=C:/mysql/bin/cluster-logs
[ndbd]
# Options for data node "A":
# (one [ndbd] section per data node)
# Hostname or IP address
HostName=192.168.24.16
[ndbd]
# Options for data node "B":
# Hostname or IP address
HostName=192.168.24.43
[mysqld]
# SQL node options:
# Hostname or IP address
HostName=192.168.24.16
[mysqld]
# SQL node options:
# Hostname or IP address
HostName=192.168.24.43
3、my.ini中的內容如下:
[mysql_cluster]
# Options for management node process
config-file=C:/mysql/bin/config.ini
3)、配置數據節點
1、在IP爲192.168.24.16的主機中新建文件夾C:\mysqlcluster\datanode\mysql,然後在此文件夾中繼續新建子目錄bin和cluster-data,bin下再建一個子目錄也叫cluster-data。
2、將安裝包data目錄下的所有文件拷貝到C:\mysqlcluster\datanode\mysql\cluster-data下
3、將安裝包中bin目錄下的ndbd.exe拷貝到C:\mysqlcluster\datanode\mysql\bin下,並在C:\mysqlcluster\datanode\mysql中新建my.ini文件,文件內容爲:
[mysql_cluster]
# Optionsfor data node process:
#location of management server
ndb-connectstring=192.168.24.16
4)、配置SQL節點
1、在192.168.24.16主機的C:\mysqlcluster下新建子目錄sqlnode,在C:\mysqlcluster\sqlnode下新建子目錄mysql,將安裝包文件解壓到mysql目錄下,然後在C:\mysqlcluster\sqlnode\mysql下新建my.ini文件,文件內容爲:[mysqld]
# Options for mysqld process:
# run NDB storage engine
ndbcluster
# location of management server
ndb-connectstring=192.168.24.16
2、將my-default.ini 文件刪除或更名爲my-default.ini.bak注:因爲SQL節點的配置也是一樣的,所以我們可以直接將192.168.24.16主機中的文件夾C:\mysqlcluster\sqlnode文件夾整個拷貝到192.168.24.43主機的C盤下。
3、啓動MySQL Cluster
1)簡介
在啓動MySQL Cluster之前,首先要做的是保證每個SQL節點上的MySQL服務能夠啓動成功,併爲每個SQL節點進行相關權限的分配以保證能夠遠程登錄訪問。然後依次啓動三種節點。三種節點服務啓動時,一定要按照先啓動管理節點,後啓動數據節點,再啓動SQL節點的順序進行。
2)、啓動MySQL服務
1、進入C:\mysqlcluster\sqlnode\mysql\bin目錄下,使用mysqld –install安裝MySQL服務
2、 使用net start mysql命令啓動MySQL服務3)配置MySQL遠程連接
1、 進入C:\mysqlcluster\sqlnode\mysql\bin目錄下,使用mysql –uroot –p,然後輸入密碼,設置root用戶密碼。2、 切換到mysql數據庫,輸入以下命令,爲root用戶分配遠程連接的相關權限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
4)、啓動管理節點
1、在192.168.24.16主機中打開命令行窗口,切到C:\mysql\bin目錄,輸入:
ndb_mgmd -f config.ini --configdir=C:\mysql\mysql-cluster
回車,管理節點服務就啓動了,命令行上可能沒有任何提示信息,可以打開C:\mysql\bin\cluster-logs\ndb_1_cluster.log日誌文件查看啓動信息。注意,此命令行窗口不能關閉,除非你想停止服務。
2、也可以將其做成服務,在命令行中輸入:
ndb_mgmd --install=ndb_mgmd -f config.ini --configdir=C:\mysql\mysql-cluster
5)、啓動數據節點
1、在192.168.24.16主機中打開新命令行窗口,切到C:\mysqlcluster\datanode\mysql\bin,輸入:
ndbd
2、也可以將其做成服務,在命令行中輸入:
ndbd --install=ndbd
3、以相同的方法在其他數據節點,即192.168.24.43中啓動數據節點服務。4、在192.168.24.16主機中打開新命令行窗口,切到目錄C:\mysql\bin,輸入:
ndb_mgm
回車,然後再輸入:ALL STATUS
回車,就可以查看數據節點的連接信息了。
6)、啓動SQL節點
1、在192.168.24.16主機中打開新命令行窗口,切到C:\mysqlcluster\sqlnode\mysql\bin,輸入:
mysqld --console
回車,SQL節點啓動。2、也可以將其做成服務,輸入:
mysqld -install mysql
3、以相同的方法在其他SQL節點,即192.168.24.43中啓動SQL節點。4、想要查看SQL節點的啓動情況可以在192.168.1.10主機中同樣打開新命令行,輸入:
ndb_mgm
回車,再輸入:SHOW
回車,就可以看到SQL節點的連接情況了。4、測試MySQL Cluster
1)、在任一SQL結點,即192.168.24.16主機上新創建一個數據庫myDB,可以看到其他SQL結點,即192.168.24.43均創建了一個MyDB數據庫2)、在任一SQL結點,即192.168.24.16主機上的myDB中使用
create table student (id int(2)) engine=ndbcluster;
新建一個student表,可以看到其他SQL結點,即192.168.24.43均在myDB數據庫中創建了一個student表3)、在任一SQL結點,即192.168.24.16主機上的myDB中的student表插入幾條數據之後,可以看到其他SQL結點,即192.168.24.43均作了相關的變化
注:與沒有使用 Cluster的MySQL相比,在MySQL Cluster內操作數據的方式沒有太大的區別。執行這類操作時應記住兩點:
1、表必須用ENGINE=NDB或ENGINE=NDBCLUSTER選項創建,或用ALTER TABLE選項更改,以使用NDB Cluster存儲引擎在 Cluster內複製它們。如果使用mysqldump的輸出從已有數據庫導入表,可在文本編輯器中打開SQL腳本,並將該選項添加到任何表創建語句,或用這類選項之一替換任何已有的ENGINE(或TYPE)選項。
2、另外還請記住,每個NDB表必須有一個主鍵。如果在創建表時用戶未定義主鍵,NDB Cluster存儲引擎將自動生成隱含的主鍵。(註釋:該隱含 鍵也將佔用空間,就像任何其他的表索引一樣。由於沒有足夠的內存來容納這些自動創建的鍵,出現問題並不罕見)。
到此爲止關於MySQL集羣的搭建就講解完畢了,但是單純的按照這樣搭建還有一個缺陷,什麼缺陷呢?咱們下次講解,敬請期待!