程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> win2003辦事器下設置裝備擺設 MySQL 群集(Cluster)的辦法

win2003辦事器下設置裝備擺設 MySQL 群集(Cluster)的辦法

編輯:MySQL綜合教程

win2003辦事器下設置裝備擺設 MySQL 群集(Cluster)的辦法。本站提示廣大學習愛好者:(win2003辦事器下設置裝備擺設 MySQL 群集(Cluster)的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是win2003辦事器下設置裝備擺設 MySQL 群集(Cluster)的辦法正文


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節點也是數據節點。它們只是邏輯關系上的劃分,現實安排時,乃至一切的階段都可以位於統一台物理機械上,只是設置裝備擺設較龐雜些。


1、軟件下載機械操作情況

設置裝備擺設 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 來銜接和操作。

3、設置裝備擺設 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-win32\bin 加到 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 文件夾。

4、設置裝備擺設SQL節點和數據節點:

在2台機械上,分離順次操作。

樹立文件夾 D:\data。

編纂 NySQL 設置裝備擺設文件 D:\mysql-cluster-gpl-noinstall-7.1.3-win32\my.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.conf\config.ini –configdir=d:\mysql-cluster

注:假如不帶 –configdir=d:\mysql-cluster 參數,將默許為 C:\mysql\mysql-cluster 文件夾。

屏幕顯示:

C:\>ndb_mgmd.exe -f d:\mysql-cluster.conf\config.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.conf\config.ini'
2010-06-10 01:16:57 [MgmtSrvr] INFO — Got initial configuration from ‘d:\mysql-cluster.conf\config.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台辦事器長進行。

6、群集治理

在一切的數據節點和SQL節點未啟動之前,運轉群集治理節點辦事的客戶端 ndb_mgm.exe,只能取得以下信息:

C:\>ndb_mgm.exe
— NDB Cluster — Management Client –
ndb_mgm> show
Cluster Configuration
———————
[ndbd(NDB)] 2 node(s)
id=2 (not connected, accepting connect from 10.0.0.201)
id=3 (not connected, accepting connect from 10.0.0.202)

[ndb_mgmd(MGM)] 1 node(s)
id=1 @10.0.0.201 (mysql-5.1.44 ndb-7.1.3)

[mysqld(API)] 2 node(s)
id=4 (not connected, accepting connect from 10.0.0.201)
id=5 (not connected, accepting connect from 10.0.0.202)

ndb_mgm>

解釋數據節點、SQL節點均未銜接到治理節點辦事。

在一切的數據節點和SQL節點准確啟動以後,將取得以下信息:

ndb_mgm> show
Cluster Configuration
———————
[ndbd(NDB)] 2 node(s)
id=2 @10.0.0.201 (mysql-5.1.44 ndb-7.1.3, Nodegroup: 0, Master)
id=3 @10.0.0.202 (mysql-5.1.44 ndb-7.1.3, Nodegroup: 1)

[ndb_mgmd(MGM)] 1 node(s)
id=1 @10.0.0.201 (mysql-5.1.44 ndb-7.1.3)

[mysqld(API)] 2 node(s)
id=4 @10.0.0.201 (mysql-5.1.44 ndb-7.1.3)
id=5 @10.0.0.202 (mysql-5.1.44 ndb-7.1.3)

ndb_mgm>

封閉群集的DOS敕令:

ndb_mgm -e shutdown

或在 ndb_mgm 情況下履行 shutdown 敕令。

以上敕令或封閉治理節點辦事和一切的數據節點。隨便、強行封閉群集體系(關機或封閉過程),會招致數據沒有全體寫回磁盤而招致的數據喪失。

封閉SQL節點的 mysqld 辦事:

C:\>net stop mysql,或:

C:\>mysqladmin -u root shutdown

7、測試

正常運轉的 MySQL 群集體系,經由過程SQL節點可以對數據節點停止數據庫操作,各數據節點可以主動停止數據同步。某一個數據節點封閉後,不影響SQL節點的應用。某些數據節點失足後,可以停止恢復。須要留意的是,SQL節點樹立數據庫時,必需選擇“ndbcluster”數據庫引擎。假如不選擇“ndbcluster”引擎,樹立的數據庫將不會進入MySQL群集體系中,然則可以自力應用。

別的,每一個 NDB 表必需有一個主鍵。假如在創立表時不決義主鍵,NDB Cluster 存儲引擎將主動生成隱含的主鍵。該隱含的鍵也將占用空間,就像任何其他的表索引一樣。因為沒有足夠的內存來包容這些主動創立的鍵,湧現成績其實不罕有。

測試實例:

在某台 SQL 節點上登錄 mysql,建表 city,並拔出數據:
C:\>mysql -u root test
mysql>create table city (nId mediumint unsigned not null auto_increment primary key, sName varchar(20) not null)
engine = ndbcluster default charset utf8;
mysql>insert city values(1, ‘city-1′);
mysql>insert city values(1, ‘city-2′);

在另外一台 SQL 節點上登錄 mysql,從表 city 裡獲得記載:
C:\>mysql -u root test
mysql>select * from city;

在群集體系正常任務的情形下,應該能取到先前拔出的一切記載。

別的的測試(單點毛病測試):

1,還可以工資停滯某一個數據節點(Ctrl+C中止DOS敕令ndbd.exe,停滯該辦事),看看一切的 SQL 節點是否是能正常任務。
2,在某一個數據節點停滯後,停止數據庫操作。然後從新開啟該數據節點,看看群集中的一切的 SQL 節點能不克不及獲得完全的數據。

8、罕見成績與擴大

設置裝備擺設和治理 MySQL 群集體系其實不是一件簡略的工作。因為不公道的設置裝備擺設招致的體系成績異常罕見,好比收集毛病、內存限制等,會招致仲裁體統強迫封閉數據節點。

假如機械上本來曾經裝置過 MySQL Server,則必定要卸載清潔本來的數據庫體系。留意群集體系中的 mysql.exe 法式與非群集體系的治理 Client 是分歧的。

還可以與負載平衡體系聯合,以供給更強的可用性和數據存取效力。

能夠因為未知的Bug或其余緣由,招致群集體系湧現一些不測毛病。所以建議拔取版本時,選擇曾經獲得年夜多半人承認的版本,紛歧定拔取最新的版本,最新的版本常常不太穩固。固然也不要選用太陳腐的功效無限制的版本。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved