注:本文來源: 陳曉嬋 《 windows+mysql集群搭建-三分鍾搞定集群 》
一:mysql集群搭建教程-基礎篇
計算機一級考試系統要用集群,目標是把集群搭建起來,保證一個庫dang了,不會影響程序的運行。於是在孟海濱師哥的帶領下開始了我的第一次搭建mysql集群,首先看了一些關於集群的資料,然后根據步驟一步步的整,遇到了一些問題,在這里把我遇到的問題以及解決方法分享出來。
【是什么】
集群(cluster)技術是一種較新的技術,通過集群技術,可以在付出較低成本的情況下獲得在性能、可靠性、靈活性方面的相對較高的收益,其任務調度則是集群系統中的核心技術。
MySQL集群技術在分布式系統中為MySQL數據提供了冗余特性,增強了安全性,使得單個MySQL服務器故障不會對系統產生巨大的負面效應,系統的穩定性得到保障。
一個mysql集群包含三個節點:管理節點,數據節點和sql節點。啟動順序為:管理節點,數據節點,sql節點。管理節點只能一個,數據節點和sql節點可以根據需要設置個數。
管理節點:(也可以稱管理服務器)主要負責管理數據節點和SQL節點,還有集群配置文件和集群日志文件。它監控其他節點的工作狀態,能夠啟動、關閉或重啟某個節點。其他節點從管理節點檢索配置數據,當數據節點有新事件時就把事件信息發送給管理節點並寫入集群日志。
數據節點:負責存儲數據
sql節點:通過它進行sql操作。
【為什么】
為什么要使用集群還要通過它的優點來看,集群用較低的成本,在性能,靈活可用方面上有很大的改進
【優點】
高可伸縮性:服務器集群具有很強的可伸縮性。 隨着需求和負荷的增長,可以向集群系統添加更多的服務器。在這樣的配置中,可以有多台服務器執行相同的應用和數據庫操作。
高可用性:在不需要操作者干預的情況下,防止系統發生故障或從故障中自動恢復的能力。通過把故障服務器上的應用程序轉移到備份服務器上運行,集群系統能夠把正常運行時間提高到大於99.9%,大大減少服務器和應用程序的停機時間。
高可管理性:系統管理員可以從遠程管理一個、甚至一組集群,就好象在單機系統中一樣。【缺點】
我們知道集群中的應用只在一台服務器上運行,如果這個應用出現故障,其它的某台服務器會重新啟動這個應用,接管位於共享磁盤櫃上的數據區,進而使應用重新正常運轉。我們知道整個應用的接管過程大體需要三個步驟:偵測並確認故障、后備服務器重新啟動該應用、接管共享的數據區。因此在切換的過程中需要花費一定的時間,原則上根據應用的大小不同切換的時間也會不同,越大的應用切換的時間越長。
【總結】
這是mysql集群的首篇博客,主要介紹集群的基礎知識,集群的由來,為什么使用,以及集群的優缺點,下篇博客講解mysql集群在windows環境下的搭建過程以及在搭建過程中遇到的問題以及解決方案。
二:windows+mysql集群搭建-三分鍾搞定集群
【准備工作】
1、mysql-cluster-gpl-7.4.9-winx64
下載方式:
http://dev.mysql.com/downloads/cluster/
2、兩台電腦
一台配置管理節點,一個數據節點和一個sql節點,一台配置一個數據節點和一個sql節點。
管理節點:192.168.22.238
數據節點A:192.168.22.238
數據節點B:192.168.22.240
SQL節點A:192.168.22.238
SQL節點B:192.168.22.240
【搭建之路】
一、配置mysql集群
1、將下載的mysql集群壓縮包解壓到管理節點192.168.22.238的C:\mysql目錄下:
2、配置管理節點:
在配置管理節點(192.168.22.238)的計算機上的C:\Mysql\Bin目錄下建立cluster-logs和config兩個文件夾。cluster-logs用來存儲日志文件,在config文件夾中建立my.ini和config.ini兩個配置文件:
my.ini
1 [mysql_cluster] 2 # Options for management node process 3 config-file=C:/mysql/bin/config/config.ini
config.ini
1 2 [ndbd default] 3 # Options affecting ndbd processes on all data nodes: 4 NoOfReplicas=2 # Number of replicas 5 DataDir=C:/mysql/bin/cluster-data # Directory for each data node's data files 6 # Forward slashes used in directory path, 7 # rather than backslashes. This is correct; 8 # see Important note in text 9 10 DataMemory=80M # Memory allocated to data storage 11 IndexMemory=18M # Memory allocated to index storage 12 # For DataMemory and IndexMemory, we have used the 13 # default values. Since the "world" database takes up 14 # only about 500KB, this should be more than enough for 15 # this example Cluster setup. 16 17 [ndb_mgmd] 18 # Management process options: 19 HostName=192.168.22.238 # Hostname or IP address of management node 20 DataDir=C:/mysql/bin/cluster-logs # Directory for management node log files 21 22 [ndbd] 23 # Options for data node "A": 24 HostName=192.168.22.238 # Hostname or IP address 25 26 27 [ndbd] 28 # Options for data node "B": 29 HostName=192.168.22.240 # Hostname or IP address 30 31 32 33 34 [mysqld] 35 # SQL node A options: 36 HostName=192.168.22.238 # Hostname or IP address 37 38 [mysqld] 39 # SQL node B options: 40 HostName=192.168.22.240 # Hostname or IP address 41 423、配置數據節點:
在配置數據節點(192.168.25.48、192.168.25.49)的計算機上的C:\Mysql\Bin目錄下建立cluster-data文件夾,用來存放數據:SQL節點不用任何配置,至此,整個MySQL集群就搭建完成了。
將管理節點(192.168.22.238)電腦C:\mysql文件拷到192.168.22.240電腦的C盤
二、啟動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.22.238
3、啟動每個sql節點:
在cmd中運行如下命令:
c:\mysql\bin\mysqld.exe --ndbcluster --ndb-connectstring=192.168.22.238 --console
4、查看每個節點的狀態
在cmd命令中運行:c:\mysql\bin\ndb_mgm,再執行“show”命令,可以查看到每個節點的連接狀態:
這就表明每個節點均連接正確。
三:【測試mysql集群】
1、在sql節點A建立數據庫並插入數據:
1 ---在sql節點A的計算機上(192.168.22.238)的cmd中運行C:\mysql\bin\mysql.exe -u root -p命令登錄mysql,接下來需要輸入密碼時,密碼默認為空(直接回車)。 2 3 4 --·創建名為“chan”的數據庫: 5 6 create database chan; 7 8 ---·創建名為“T_chan”的表: 9 10 use chan; 11 create table T_chan(Name varchar(23),Age int) engine=ndbcluster; 12 13 --注意建表語句后面一定要加上 engine=ndbcluster,為什么要加上,在下一篇博客中會介紹。 14 15 --·插入數據: 16 17 insert into T_chan values('chan',23); 18 19 20 ·查詢數據: 21 22 select * from T_chan; 23
2、在sql節點B查到數據
1 ---在sql節點B的計算機上(192.168.22.240)的cmd中運行C:\mysql\bin\mysql.exe -u root -p命令登錄mysql。 2 3 4 5 --執行 show databases; 命令可以查看到在sql節點A新建的數據庫; 6 --執行 7 8 use chan; 9 select * from T_chan; 10 --可以查詢到在sql節點A插入的數據。到這里mysql集群搭建就已經完成了。在搭建過程中也遇到了一些問題,在接下來的博客中,將會將會把我遇到的問題分享給大家。
四:【總結】
mysql集群我們現在做到的是加入一個數據節點宕機后,不會影響整個集群的運行,數據也不會丟失,保證了數據的完整性。第一次搭建的時候遇到了一些困難,不過這些都是小事啦。看完上面的步驟是不是覺得mysql搭建很簡單,熟練以后在搭建的時候會遇到什么問題,以及如何解決,輕輕松松的就搞定了。
——————————————————————————————————————————————————————————————————————————————————————————————