mysql叢集搭建教程-mysql+windows篇
張哥視訊課:https://edu.csdn.net/course/play/7912
搭建MySQL叢集,首先看了一些關於叢集的資料,然後根據步驟一步步的整,遇到了一些問題,在這裡把我遇到的問題以及解決方法分享出來。
【是什麼】
叢集(cluster)技術是一種較新的技術,通過叢集技術,可以在付出較低成本的情況下獲得在效能、可靠性、靈活性方面的相對較高的收益,其任務排程則是集群系統中的核心技術。
mysql叢集技術在分散式系統中為MySQL資料提供了冗餘特性,增強了安全性,使得單個MySQL伺服器故障不會對系統產生巨大的負面效應,系統的穩定性得到保障。
一個mysql叢集包含三個節點:管理節點,資料節點和sql節點。啟動順序為:管理節點,資料節點,sql節點。管理節點只能一個,資料節點和sql節點可以根據需要設定個數。
管理節點:(也可以稱管理伺服器)主要負責管理資料節點和SQL節點,還有叢集配置檔案和叢集日誌檔案。它監控其他節點的工作狀態,能夠啟動、關閉或重啟某個節點。其他節點從管理節點檢索配置資料,當資料節點有新事件時就把事件資訊傳送給管理節點並寫入叢集日誌。
資料節點:負責儲存資料
sql節點:通過它進行sql操作。
【為什麼】
為什麼要使用叢集還要通過它的優點來看,叢集用較低的成本,在效能,靈活可用方面上有很大的改進
【優點】
高可伸縮性:伺服器叢集具有很強的可伸縮性。 隨著需求和負荷的增長,可以向集群系統新增更多的伺服器。在這樣的配置中,可以有多臺伺服器執行相同的應用和資料庫操作。
高可用性:在不需要操作者干預的情況下,防止系統發生故障或從故障中自動恢復的能力。通過把故障伺服器上的應用程式轉移到備份伺服器上執行,集群系統能夠把正常執行時間提高到大於99.9%,大大減少伺服器和應用程式的停機時間。
高可管理性:系統管理員可以從遠端管理一個、甚至一組叢集,就好象在單機系統中一樣。
【缺點】
我們知道叢集中的應用只在一臺伺服器上執行,如果這個應用出現故障,其它的某臺伺服器會重新啟動這個應用,接管位於共享磁碟櫃上的資料區,進而使應用重新正常運轉。我們知道整個應用的接管過程大體需要三個步驟:偵測並確認故障、後備伺服器重新啟動該應用、接管共享的資料區。因此在切換的過程中需要花費一定的時間,原則上根據應用的大小不同切換的時間也會不同,越大的應用切換的時間越長。
【總結】
這是mysql叢集的首篇部落格,主要介紹叢集的基礎知識,叢集的由來,為什麼使用,以及叢集的優缺點,下篇部落格講解mysql叢集在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
- [mysql_cluster]
- # Options for management node process
- config-file=C:/mysql/bin/config/config.ini
config.ini
[plain] view plain copy- [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.22.238 # 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.22.238 # Hostname or IP address
- [ndbd]
- # Options for data node "B":
- HostName=192.168.22.240 # Hostname or IP address
- [mysqld]
- # SQL node A options:
- HostName=192.168.22.238 # Hostname or IP address
- [mysqld]
- # SQL node B options:
- HostName=192.168.22.240 # Hostname or IP address
3、配置資料節點:
在配置資料節點(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
在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建立資料庫並插入資料:
在sql節點A的計算機上(192.168.22.238)的cmd中執行C:\mysql\bin\mysql.exe -u root -p命令登入mysql,接下來需要輸入密碼時,密碼預設為空(直接回車)。
·建立名為“chan”的資料庫:
create database chan;
·建立名為“T_chan”的表:
use chan;
create table T_chan(Name varchar(23),Age int) engine=ndbcluster;
注意建表語句後面一定要加上 engine=ndbcluster,為什麼要加上,在下一篇部落格中會介紹。
·插入資料:
insert into T_chan values('chan',23);
·查詢資料:
select * from T_chan;
2、在sql節點B查到資料
在sql節點B的計算機上(192.168.22.240)的cmd中執行C:\mysql\bin\mysql.exe -u root -p命令登入mysql。
執行 show databases; 命令可以檢視到在sql節點A新建的資料庫;
執行
use chan;
select * from T_chan;
可以查詢到在sql節點A插入的資料。
到這裡mysql叢集搭建就已經完成了。在搭建過程中也遇到了一些問題,在接下來的部落格中,將會將會把我遇到的問題分享給大家。
【總結】
mysql叢集我們現在做到的是加入一個數據節點宕機後,不會影響整個叢集的執行,資料也不會丟失,保證了資料的完整性。第一次搭建的時候遇到了一些困難,不過這些都是小事啦。看完上面的步驟是不是覺得mysql搭建很簡單,熟練以後在搭建的時候會遇到什麼問題,以及如何解決,輕輕鬆鬆的就搞定了。
下面介紹在搭建mysql叢集的時候我遇到了一些問題。1、mysql叢集安裝不成功
遇到的問題:
之前做網上商城的專案的時候安裝了mysql,這次搭建mysql叢集的時候按照百度經驗裡的教程解除安裝了,http://jingyan.baidu.com/article/f96699bbaa8fc1894f3c1b5a.html。但是在安裝mysql叢集的時候還是沒有安裝成功。
我之前用的mysql和叢集版本的mysql是兩個不同的版本,用之前的版本是不可能搭建成功mysql叢集的。
MySQL Community Server 社群版本,開源免費,但不提供官方技術支援
MySQL Cluster 叢集版,開源免費。可將幾個MySQL Server封裝成一個Server
解決方案:
開啟服務(win+ R,輸入services.msc),檢視mysql的可執行檔案的路徑。檢視是否是C:\mysql\**(我的mysql叢集安裝在C:\mysql),如果不是,
1、執行刪除mysql服務的命令:sc delete mysql
2、安裝mysql:進入C:\mysql\bin目錄下,使用mysqld –install安裝MySQL服務
3、啟動mysql服務:使用net start mysql命令啟動MySQL服務
這樣mysql就能安裝成功了!
2、The system tablespace must be writable!
解決方案:
1、開啟工作管理員終止mysqld程序;
2、開啟mysql安裝目錄的data資料夾,刪除以下2個檔案:
ib_logfile0和ib_logfile1
3、重新啟動mysql
3、mysql服務無法啟動,發生系統錯誤:1067,程序意外終止
執行:mysqlbin mysqladmin -u root shutdown
然後按照第一個解決方案就可以解決。
4、mysql叢集沒有搭建完成,出現的問題
解決方案:
按照部落格:http://blog.csdn.net/chenxiaochan/article/details/50856072,重新搭建就好。
總結:
在搭建mysql叢集的時候遇到的這些問題,都是因為沒有對mysql叢集瞭解不夠,通過這次的搭建,在搭建過程過程中遇到的問題,讓我對mysql叢集有了簡單的瞭解,由最初的每走一步都困難重重,到現在的簡簡單單,這些錯誤都是小問題,這些只是在搭建上遇到的問題,還有在應用的時候遇到的問題,在接下來的部落格中都會寫到,期待吧。