一、准備工作
首先得准備好硬件設施、我這裡是3台機器在做群集、結構如下:
管理節點(MGM) 172.16.0.162(db1)
SQL節點1(SQL1) 172.16.0.161(db2)
SQL節點2(SQL2) 172.16.0.202(db3)
數據節點1(NDBD1) 172.16.0.161(db4)
數據節點2(NDBD2) 172.16.0.202(db4)
這個硬件搞定了、現在搞軟件
最好下載7以上的版本、因為性能好嘛,7.2這個版本的新特性上介紹說是:自適應查詢本地化(AQL) 復雜連接速度提高70多倍。當然到底是不是這樣我沒有測試過不清楚。
二、安裝軟件
解壓mysql-cluster-gpl-7.2.9-win32.zip包
Management node的安裝配置。
Management node一定要安裝在C盤下,並且是以下的目錄(這是在運行此節點時報錯,說找不到相對應的目錄)。在IP為172.16.0.162的機子上
生成c:/mysql/bin、C:/mysql/mysql-cluster(第一次啟動後在這個文件夾會生成類似ndb_1_config.bin.1的文件,好像是為了以後啟動加載的配置)
和c:/mysql/bin/cluster-logs目錄,在下載解壓的文件目錄mysql/bin中將ndb_mgmd.exe和ndb_mgm.exe復制到172.16.0.162的c:/mysql/bin目錄下。
在172.16.0.162的c:/mysql/bin下生成兩個文件,my.ini和config.ini。
my.ini的內容為:
[plain]view plaincopyprint?
[mysql_cluster]
# Options for management node process
config-file=C:/mysql/bin/config.ini
[mysql_cluster] # Options for management node process config-file=C:/mysql/bin/config.ini
config.ini的內容:(注:ID不能從0開始,必須大於0)
[html]view plaincopyprint?
[NDBD DEFAULT]
NoOfReplicas=2
DataDir=D:/Program Files/mysqlcluster/datanode/mysql/bin/cluster-data
DataMemory=80M
IndexMemory=18M
[MYSQLD DEFAULT]
[NDB_MGMD DEFAULT]
[TCP DEFAULT]
[NDB_MGMD]
ID=1
HostName=172.16.0.162 #管理節點服務器
# Storage Engines
DataDir=C:/mysql/bin/cluster-logs
[NDBD]
ID=2
HostName=172.16.0.161 #MySQL集群db1的IP地址
#DataDir= D:/Program Files/mysqlcluster/datanode/mysql/bin/cluster-data #如果不存在就創建一個
[NDBD]
ID=3
HostName=172.16.0.202 #MySQL集群db2的IP地址
#DataDir= D:/Program Files/mysqlcluster/datanode/mysql/bin/cluster-data #如果不存在就創建一個
[MYSQLD]
ID=4
HostName=172.16.0.161
[MYSQLD]
ID=5
HostName=172.16.0.202
[NDBD DEFAULT]NoOfReplicas=2DataDir=D:/Program Files/mysqlcluster/datanode/mysql/bin/cluster-dataDataMemory=80MIndexMemory=18M[MYSQLD DEFAULT][NDB_MGMD DEFAULT][TCP DEFAULT][NDB_MGMD]ID=1HostName=172.16.0.162 #管理節點服務器# Storage EnginesDataDir=C:/mysql/bin/cluster-logs[NDBD]ID=2HostName=172.16.0.161 #MySQL集群db1的IP地址#DataDir= D:/Program Files/mysqlcluster/datanode/mysql/bin/cluster-data #如果不存在就創建一個[NDBD]ID=3HostName=172.16.0.202 #MySQL集群db2的IP地址#DataDir= D:/Program Files/mysqlcluster/datanode/mysql/bin/cluster-data #如果不存在就創建一個[MYSQLD]ID=4HostName=172.16.0.161[MYSQLD]ID=5HostName=172.16.0.202
Data nodes的安裝配置
在IP為172.16.0.161 的機子上生成D:/Program Files/mysqlcluster/datanode/mysql/bin、D:/Program Files/mysqlcluster/datanode/mysql/cluster-data、
D:/Program Files/mysqlcluster/datanode/mysql/bin/cluster-data.在下載的的解壓文件夾/bin中將ndbd.exe復制到
172.16.0.161 機子的D:/Program Files/mysqlcluster/datanode/mysql /bin目錄下,
並在D:/Program Files/mysqlcluster/datanode/mysql/bin目錄下生成my.ini文件,文件的內容為:
[html]view plaincopyprint?
[mysql_cluster]
# Options for data node process:
ndb-connectstring=172.16.0.162 # location of management server
[mysql_cluster] # Options for data node process:ndb-connectstring=172.16.0.162 # location of management server 同理在172.16.0.202機子上配置相同的配置,也可以直接復制到172.16.0.202機子上。
SQL node的安裝配置
在IP為172.16.0.161的機子上生成D:/Program Files/mysqlcluster/sqlnode目錄,將下載的解壓文件夾直接整個復制到D:/ProgramFiles/mysqlcluster/sqlnode/mysql目錄下,在D:/ProgramFiles/mysqlcluster/sqlnode/mysql下生成my.ini文件,文件內容為:
[html]view plaincopyprint?
[html]view plaincopyprint?
[mysqld]
# Options for mysqld process:ndbcluster
[mysqld] # Options for mysqld process:ndbcluster
[html]view plaincopyprint?
# run NDB storage engine
ndb-connectstring=172.16.0.154
# location of management server
# run NDB storage engine ndb-connectstring=172.16.0.154 # location of management server同理,將D:/Program Files/mysqlcluster/sqlnode整個文件夾復制到172.16.0.202機子的相同目錄下。
三、啟動集群
啟動各個節點是有順序的,先是Management node,然後是Data nodes,最後是SQL nodes。
a、啟動Management node在172.16.0.162機子下進入命令行,轉到c:/mysql/bin目錄下,輸入:
ndb_mgmd -f config.ini
(
如果報如下錯誤:MySQL Cluster Management Server mysql-5.5.28 ndb-7.2.9
2013-05-03 10:13:10 [MgmtSrvr] INFO -- The default config directory 'C:/Prog
ram Files/MySQL/MySQL Server 5.5/mysql-cluster' does not exist. Trying to create
it...
Failed to create directory 'C:/Program Files/MySQL/MySQL Server 5.5/mysql-cluste
r', error: 3
2013-05-03 10:13:10 [MgmtSrvr] ERROR -- Could not create directory 'C:/Progra
m Files/MySQL/MySQL Server 5.5/mysql-cluster'. Either create it manually or spec
ify a different directory with --configdir=
則在創建如下文件夾:C:\Program Files\MySQL\MySQL Server 5.5
)
b、啟動Data node
在172.16.0.161機子下進入命令行,轉到D:/Program Files/mysqlcluster/datanode/mysql/bin目錄下,輸入:
ndbd --connect-string="nodeid2;host=172.16.0.162:1186"
同理啟動172.16.0.202機子,nodeid2是根據管理節點的配置文件
config.ini中的id決定的,如果id為2,則為nodeid2,配置文件中未指定
id,則按順序執行。
(注)此時可通過在Management node中新開一命令行,轉到
c:/mysql/bin目錄下輸入命令:
ndb_mgm
啟動ndb_mgm.exe,之後輸入命令:
ALL STATUS
查看到Data node連接是否成功.之後啟動正常之後才能繼續啟動
SQLnode
c、啟動SQL node
在172.16.0.161機子下進入命令行,轉到D:/Program
Files/mysqlcluster/sqlnode/mysql/bin目錄下,輸入:
mysqld --console
按相同方式啟動172.16.0.202下的SQL node。
(注):可通過在Management node節點的機器下,轉到c:/mysql/bin目錄
下輸入命令:
ndb_mgm
啟動ndb_mgm.exe,之後輸入命令:
SHOW
即可查看到各個節點的連接情況。
正確顯示應該為:
四、測試
(注:創建表時一定要加上engine = ndbcluster default charset utf8; ndbcluster :表示該表為數據節點可操作; default charset:表示設置字符集)
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 節點能不能得到完整的數據。