1.創建zone
由於我僅僅是想驗證功能 ,因此我在一台機器上面建立了5個zone
1個zone做管理節點
2個zone做MySQL API
2個zone做數據節點
先建立zone1,然後克隆其它四個zone
mkdir /export/home/zones/zone1
mkdir /export/home/zones/zone2
mkdir /export/home/zones/zone3
mkdir /export/home/zones/zone4
mkdir /export/home/zones/zone5
chmod 700 /export/home/zones/zone1
chmod 700 /export/home/zones/zone2
chmod 700 /export/home/zones/zone3
chmod 700 /export/home/zones/zone4
chmod 700 /export/home/zones/zone5
zonecfg -z zone1
zonecfg:zone1> set zonepath=/export/home/zones/zone1
zonecfg:zone1> set autoboot=true
zonecfg:zone1> add net
zonecfg:zone1:net> set physical=e100g0
zonecfg:zone1:net> set address=10.0.0.1/24
zonecfg:zone1>info
zonecfg:zone1>verify
zonecfg:zone1> commit
zonecfg:zone1>exit
安裝zone1
zoneadm -z zone1 install
zoneadm -z zone1 boot
zlogin -C zone1
然後對zone1進行一系列的配置即可
1)下載webstack1.4 http://www.opensolaris.org/os/project/webstack/
2)解壓並安裝
例如,
gunzip webstack-native-1.4-b06-solaris-i586.tar.gz
tar -xvf webstack-native-1.4-b06-solaris-i586.tar
pkgadd -d ./ sun-mysql50.pkg
3)vi /etc/my.cnf
mysqld
port=3306
socket=/tmp/mysql.sock
basedir=/opt/webstack/mysql
datadir=/disk2/zone1
4)chown -R mysql:mysql /opt/webstack/mysql
/opt/webstack/mysql/bin/mysql_install_db
chown -R mysql:mysql /disk2/zone1
/opt/webstack/mysql/bin/mysqld_safe &
ps -ef | grep mysql
(1).停止作為克隆模版的zone(例如,zone1)
#zoneadm -z zone1 halt
(2).把zone1的配置導入文件中
mkdir /test
cd /test
mkfile -nv 100M file1
zonecfg -z zone1 export -f /test/file1
(3).編輯 /test/file1
#vi /test/file1
zonepath=/export/home/zones/zone2
set pool=pool2
add net
set address=10.0.0.2/24
set physical=e1000g0
end
zonecfg -z zone2 -f /test/file1
(5).用zone1的配置安裝zone2
zoneadm -z zone2 clone zone1
(6).zoneadm -z zone2 boot
(7).登陸zone2
zlogin -C zone2
10.0.0.1 zone1
10.0.0.2 zone2
10.0.0.3 zone3
10.0.0.4 zone4
10.0.0.5 zone5
然後根據實際情況調整/etc/my.cnf的配置參數,例如,datadir=/disk2/zone1
檢查是否均能正常啟動MySQL
zone1(10.0.0.1)是管理節點
zone2(10.0.0.2),zone5(10.0.0.5)是SQL節點
zone3(10.0.0.3),zone4(10.0.0.4)是數據存儲節點
1)安裝管理節點(zone1)
- vi /etc/config.ini
NDBD DEFAULT
NoOfReplicas=2
TCP DEFAULT
portnumber=3306
NDB_MGMD
hostname=zone1
datadir=/disk2/zone1
NDBD
hostname=zone3
datadir=/disk2/zone3
NDBD
hostname=zone4
datadir=/disk2/zone4
MYSQLD
hostname=zone2
MYSQLD
hostname=zone5
2)配置SQL節點(zone2,zone5) - vi /etc/my.cnf
mysqld
user=mysql
port=3306
socket=/tmp/mysql.sock
basedir=/opt/webstack/mysql
datadir=/disk2/zone2
ndbcluster
ndb-connectstring=zone1
MYSQL_CLUSTER
ndb-connectstring=zone1
ndb-mgmd-host=zone1
注意:在zone5上需要修改datadir
3)配置存儲節點(NDB節點,zone3,zone4) - vi /etc/my.cnf
mysqld
port=3306
socket=/tmp/mysql.sock
basedir=/opt/webstack/mysql
datadir=/disk2/zone3
Ndbcluster
ndb-connectstring=zone1
MYSQL_CLUSTER
ndb-connectstring=zone1
ndb-mgmd-host=zone1
注意:在zone4上需要修改datadir
4)啟動MySQL Cluster
較為合理的啟動順序是,首先啟動管理節點服務器,然後啟動存儲節點服務器,最後才啟動SQL節點服務器:
- /opt/webstack/mysql/bin/ndb_mgmd -f /etc/config.ini
必須用參數「f」或「-config-file」告訴 ndb_mgm 配置文件所在位置,默認是在ndb_mgmd相同目錄下。
- /opt/webstack/mysql/bin/ndbd --initial
注意,僅應在首次啟動ndbd時,或在備份/恢復數據或配置文件發生變化後重啟ndbd時使用「--initial」參數。因為該參數會使節點刪除由早期ndbd實 例創建的、用於恢復的任何文件,包括用於恢復的日誌文件。
如果不是第一次啟動,直接運行如下命令即可: - /opt/webstack/mysql/bin/ndbd
#/opt/webstack/mysql/bin/mysqld_safe &
- /opt/webstack/mysql/bin/ndb_mgm
- NDB Cluster – Management Client –
ndb_mgm> show
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
ndbd(NDB) 2 node(s)
id=2 @10.0.0.3 (Version: 5.0.67, Nodegroup: 0, Master)
id=3 @10.0.0.4 (Version: 5.0.67, Nodegroup: 0)
- NDB Cluster – Management Client –
id=1 @10.0.0.1 (Version: 5.0.67)
id=4 @10.0.0.2 (Version: 5.0.67)
id=5 @10.0.0.5 (Version: 5.0.67)
具體的輸出內容可能會略有不同,這取決於你所使用的MySQL版本。
5)創建數據庫表
與沒有使用 Cluster的MySQL相比,在MySQL Cluster內操作數據的方式沒有太大的區別。執行這類操作時應記住兩點:
(1) 表必須用ENGINE=NDB或ENGINE=NDBCLUSTER選項創建,或用ALTER TABLE選項更改,以使用NDB Cluster存儲引擎在 Cluster內複製它們。如果使用mysqldump的輸出從已有數據庫導入表,可在文本編輯器中打開SQL腳本,並將該選項添加到任何表創建語句,或 用這類選項之一 替換任何已有的ENGINE(或TYPE)選項。
(2)另外還請記住,每個NDB表必須有一個主鍵。如果在創建表時用戶未定義主鍵,NDB Cluster存儲引擎將自動生成隱含的主鍵。(註釋:該隱含鍵也將佔用空間,就像任何其他的表索引一樣。由於沒有足夠的內存來容納這些自動創建的鍵,出現問題並不罕見 )。
在zone2上,創建數據表,插入數據:
- mysql
mysql> create database testdb;
mysql> use testdb;
mysql> create table city(
mysql> id mediumint unsigned not null auto_increment primary key,
mysql> name varchar(20) not null default ''
mysql> ) engine = ndbcluster default charset utf8;
mysql> insert into city values(1, 'city1');
mysql> insert into city values(2, 'city2');
- mysql
mysql> create database testdb;
mysql> select * from city;
-----------id name -----------1 city1 -----------2 city2 -----------
停掉數據存儲節點zone3,在管理節點上可以看到zone4接替服務
ndb_mgm> show
Cluster Configuration
---------------------
ndbd(NDB) 2 node(s)
id=2 (not connected, accepting connect from zone3)
id=3 @10.0.0.4 (Version: 5.0.67, Nodegroup: 0, Master)
id=1 @10.0.0.1 (Version: 5.0.67)
ndb_mgm> show
Cluster Configuration
---------------------
ndbd(NDB) 2 node(s)
id=2 (not connected, accepting connect from zone3)
id=3 @10.0.0.4 (Version: 5.0.67, Nodegroup: 0, Master)
id=1 @10.0.0.1 (Version: 5.0.67)
id=4 @10.0.0.2 (Version: 5.0.67)
id=5 (not connected, accepting connect from zone5)
要想關閉 Cluster,可在MGM節點所在的機器上,輸入下述命令:
- /opt/webstack/mysql/bin/ndb_mgm -e shutdown
在SQL節點上運行以下命令關閉SQL節點的mysqld服務:
#/opt/webstack/mysql/bin/mysqladmin -u root shutdown