這篇文章主要介紹了Windows Server 2003 下配置 MySQL 集群(Cluster)教程,本文先是講解了原理知識,然後給出詳細配置步驟和操作方法,需要的朋友可以參考下
MySQL 群集是 MySQL 適合於分布式計算環境的高可用、高冗余版本。它采用了 NDB Cluster 存儲引擎,允許在 1 個群集中運行多個 MySQL 服務器。在 MySQL 5.0 及以上的二進制版本中,以及與最新的 Linux 版本兼容的 RPM 包中提供了該存儲引擎。
MySQL 群集是一種技術,該技術允許在無共享的系統中部署“內存中”和“磁盤中”數據庫的 Cluster 。通過無共享體系結構,系統能夠使用廉價的硬件,而且對軟硬件無特殊要求。此外,由於每個組件有自己的內存和磁盤,不存在單點故障。MySQL Cluster 由一組計算機構成,每台計算機上均運行著多種進程,包括 MySQL 服務器,NDB Cluster 的數據節點,管理服務器,以及(可能存在的)專門的數據訪問程序。
管理服務器(MGM節點)負責管理 Cluster 配置文件和 Cluster 日志。Cluster 中的每個節點從管理服務器檢索配置數據。當數據節點內出現新的事件時,節點將關於這類事件的信息傳輸到管理服務器,然後,將這類信息寫入 Cluster 日志。
目前能夠運行 MySQL Cluster 的操作系統有 Linux、Mac OS X 和 Solaris,最新的版本已經支持 Windows 操作系統。
MySQL 群集的數據節點之間的通信是不加密的,並且需要高速的帶寬,所以建議把群集建立在一個高速局域網內,不建議跨網段、跨公網的部署這種系統體系。
MySQL 群集分為三種節點:管理節點,數據節點和SQL節點。
管理節點:主要用於管理各個節點,能夠通過命令對某個節點進行重啟、關閉、啟動等操作。也能夠監視全部節點的工作狀態。
數據節點:主要是對數據的存儲,不提供其他的服務。
SQL節點:主要是對外提供SQL功能,類似一台普通的 MySQL Server。
而SQL節點和數據節點可以是同一台機器,也就是說這台機器即是SQL節點也是數據節點。它們只是邏輯關系上的劃分,實際部署時,甚至所有的階段都可以位於同一台物理機器上,只是配置較復雜些。
一、軟件下載機器操作環境
配置 MySQL 群集必需使用其群集版本,注意和 MySQL Server 版本的區別。本文以 Windows 平台下的 MySQL 群集版本 MySQL Cluster 7.1.3 為例(截至2010年6月初的最高版本),這是 MySQL Server 5.1 系列版本之一,添加了群集的功能。下載地址為:http://dev.mysql.com/downloads/cluster,選擇 mysql-cluster-gpl-noinstall-7.1.3-win32.zip 文件,這是一個 for Windows 32位版本的、免安裝的二進制版本。
根據自己的操作系統的位數,也可以選擇 64 位版本的。還有一個 27.2M 的 Windows(x86, 32-bit) 版本,下載下來需要自己編譯,有經驗的高級用戶可以選用。
本實驗在 2 台安裝 Windows Server 2003(sp2) 的機器上進行。節點分配及 IP 配置如下:
第一台機器,IP 為 10.0.0.201,作為管理節點(MGM),SQL節點1(SQL1),數據節點1(NDBD1)。
第二台機器,IP 為 10.0.0.202,作為SQL節點2(SQL2),數據節點2(NDBD2)。
管理節點最好不要與數據節點部署在同一台服務器上,否則可能會因為該數據節點服務器的當機,而導致管理節點服務器的問題,從而導致整個群集系統的崩潰。
二,配置管理節點:
在第一台機器上,建文件夾 D:mysql-cluster,在其下建立文件 config.ini,內容如下:
代碼如下:
[NDBD DEFAULT]
NoOfReplicas=1
[MYSQLD DEFAULT]
[NDB_MGMD DEFAULT]
[TCP DEFAULT]
# Managment Server
[NDB_MGMD]
hostname=10.0.0.201
# Storage Engines
[NDBD]
hostname=10.0.0.201
datadir= D:data
[NDBD]
hostname=10.0.0.202
datadir= D:data
# SQL Engines
[MYSQLD]
hostname=10.0.0.201
[MYSQLD]
hostname=10.0.0.202
Cluster 管理節點的默認端口是1186,數據節點的默認端口是 2202。從 MySQL 5.0.3開始,該限制已被放寬,Cluster 能夠根據空閒的端口自動地為數據節點分配端口。如果你的版本低於5.0.22,請注意這個細節。
Cluster 管理節點作為一個服務端(通過運行 db_mgmd.exe 程序讀取本配置文件來啟動),通過本機上的客戶端 ndb_mgm.exe 來連接和操作。
三、配置 MySQL 數據庫服務器:
在2台機器上,分別依次操作。
解壓 mysql-cluster-gpl-noinstall-7.1.3-win32.zip 文件到 D:mysql-cluster-gpl-noinstall-7.1.3-win32 文件夾下,把 D:mysql-cluster-gpl-noinstall-7.1.3-win32bin 加到 Windows 的系統 path 中。
打開DOS命令行窗口(配置完系統path後,在再次打開新的命令行窗口),執行以下語句,讓 MySQL 作為 Windows 服務運行:
代碼如下:
mysqld.exe -install mysql
再在 Windows 服務管理界面裡,配置 mysql 服務,手動啟動(不要自動啟動)。
把 D:mysql-cluster-gpl-noinstall-7.1.3-win32 下的某個備用的配置文件(例如my-small.ini)復制為 my.ini 文件。
建立 D:tmp 文件夾。
四、配置SQL節點和數據節點:
在2台機器上,分別依次操作。
建立文件夾 D:data。
編輯 NySQL 配置文件 D:mysql-cluster-gpl-noinstall-7.1.3-win32my.ini,在 [mysqld] 節末尾加語句:
代碼如下:
#SQL群集節點
ndbcluster
ndb-connectstring=10.0.0.201
有了 ndbcluster 語句,mysql 服務將作為群集的 SQL 節點啟動。mysqld.exe 命令帶參數 –ndbcluster 運行是一樣的效果。
mysql 服務連接到數據節點的 2202 默認端口,或自動分配的別的可用端口。
(問題:SQL節點如何獲得數據節點的IP地址?是否通過連接管理節點,取得所有數據節點的IP地址的列表?)
這裡的連接字符串的值在 MySQL 服務啟動時使用,用於連接到管理節點。
在末尾加語句:
代碼如下:
#NDB集群節點
[mysql_cluster]
ndb-connectstring=10.0.0.201
注:好像以下形式也可:
代碼如下:
[ndbd]
ndb-connectstring=10.0.0.201
這裡的連接字符串的值在數據節點啟動時使用,用於連接到管理節點。
五,啟動群集各服務器
啟動順序依次是:管理節點、數據節點、SQL節點。
1,啟動管理節點
在第一台服務器的DOS窗口,運行命令:
代碼如下:
C:>ndb_mgmd.exe -f d:mysql-cluster.confconfig.ini –configdir=d:mysql-cluster
注:如果不帶 –configdir=d:mysql-cluster 參數,將默認為 C:mysqlmysql-cluster 文件夾。
屏幕顯示:
代碼如下:
C:>ndb_mgmd.exe -f d:mysql-cluster.confconfig.ini –configdir=d:mysql-cluster
2010-06-10 01:16:57 [MgmtSrvr] INFO — NDB Cluster Management Server. mysql-5.1.44 ndb-7.1.3
2010-06-10 01:16:57 [MgmtSrvr] INFO — Reading cluster configuration from ‘d:mysql-cluster.confconfig.ini'
2010-06-10 01:16:57 [MgmtSrvr] INFO — Got initial configuration from ‘d:mysql-cluster.confconfig.ini', will try to set it when all ndb_mgmd(s) started
2010-06-10 01:16:57 [MgmtSrvr] INFO — Mgmt server state: nodeid 1 reserved for ip 10.0.0.201, m_reserved_nodes 1.
2010-06-10 01:16:57 [MgmtSrvr] INFO — Id: 1, Command port: *:1186
==INITIAL==
2010-06-10 01:16:57 [MgmtSrvr] INFO — Starting initial configuration change
2010-06-10 01:16:57 [MgmtSrvr] INFO — Configuration 1 commited
2010-06-10 01:16:57 [MgmtSrvr] INFO — Config change completed! New generation: 1
==CONFIRMED==
2,啟動數據節點
分別在2台服務器的DOS窗口運行命令。
第一次,或初始化群集節點時,運行命令:
代碼如下:
ndbd.exe –initial
初始化之後,只運行 ndbd.exe 即可。若帶參數 –initial 運行,將使正常運行的群集系統中,數據節點的數據全部丟失。
數據節點依賴管理節點服務器,進行數據的自動復制和同步,使各個數據節點的數據保持一致,並在某個數據節點意外關閉又恢復後,進行數據的恢復重建。
3,啟動SQL節點
有了 ndbcluster 語句,啟動 mysql 服務,就啟動了SQL節點。應在前2種節點啟動後,分別在2台服務器上進行。
六、群集管理
在所有的數據節點和SQL節點未啟動之前,運行群集管理節點服務的客戶端 ndb_mgm.exe,只能獲得以下信息: