- 管理主機: 服務程式(Deamon) 稱為 ndb_mgmd (NDB Management Daemon的意思), 管理工具稱為 ndb_mgm (NDB Management 的意思),預設使用 Port 1186。
- Data Node: 實際存放資料的主機 (Storage node),服務程式稱為 ndbd (NDB Daemon的意思).
- SQL Node : 提供存取資料庫內容,服務程式稱為 mysqld (MySQL Deamon的意思)
- 五台 Virtual Machine (安裝 CentOS 6.0)
- node 1 eth1:192.168.152.139 (MGM Node)
- node 2 eth1:192.168.152.140 (SQL Node 1)
- node 3 eth1:192.168.152.141 (Data Node 1)
- node 4 eth1:192.168.152.142 (Data Node 2)
- node 5 eth1:192.168.152.143 (Data Node 2)
0. 關閉SELinux:
- chkconfig iptables off
- /usr/sbin/setenforce 0 close SELINUX
- reboot
- 下載以下 MySQL cluster package 至 /home/MySQL Cluster Package 目錄:
- MySQL-Cluster-gpl-client-7.1.4b-1.rhel5.x86_64.rpm
- MySQL-Cluster-gpl-clusterj-7.1.4b-1.rhel5.x86_64
- MySQL-Cluster-gpl-debuginfo-7.1.4b-1.rhel5.x86_64
- MySQL-Cluster-gpl-devel-7.1.4b-1.rhel5.x86_64
- MySQL-Cluster-gpl-embedded-7.1.4b-1.rhel5.x86_64
- MySQL-Cluster-gpl-extra-7.1.4b-1.rhel5.x86_64
- MySQL-Cluster-gpl-management-7.1.4b-1.rhel5.x86_64
- MySQL-Cluster-gpl-server-7.1.4b-1.rhel5.x86_64
- MySQL-Cluster-gpl-shared-7.1.4b-1.rhel5.x86_64
- MySQL-Cluster-gpl-storage-7.1.4b-1.rhel5.x86_64
- MySQL-Cluster-gpl-test-7.1.4b-1.rhel5.x86_64
- MySQL-Cluster-gpl-tools-7.1.4b-1.rhel5.x86_64
3. MGM Node Setting
- a. mkdir -p /var/lib/mysql-cluster
- b. vi /var/lib/mysql-cluster/config.ini (這裡有 config.ini 的基本範例http://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-config-example.html)
- c. 將以下內容貼上
- [ndbd default]
- NoOfReplicas=2
- DataMemory=80M
- IndexMemory=18M
- [tcp default]
- portnumber=2202
- [ndb_mgmd]
- hostname=192.168.152.139
- id=1
- datadir=/var/lib/mysql-cluster
- [ndbd]
- hostname=192.168.152.142
- datadir=/var/lib/mysql-cluster
- id=4
- [ndbd]
- hostname=192.168.152.141
- datadir=/var/lib/mysql-cluster
- id=3
- [mysqld]
- hostname=192.168.152.140
- id=2
- [mysqld]
- hostname=192.168.152.143
- id=5
- a. vi /etc/my.cnf (這裡有 my.cnf 的基本範例http://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-config-example.html)
- b. 將以下內容貼上:
- [mysqld]
- ndbcluster # run NDB storage engine
- ndb-connectstring=192.168.152.139 ## MGM Node IP Address
- [mysql_cluster]
- ndb-connectstring=192.168.152.139 ## MGM Node IP Address
5. 啟動 MySQL Cluster
- a. 注意啟動順序: MGM Node > Data Node > SQL Node
- b. 於 MGM Node: ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial
- c. 於兩台 Data Node: ndbd --initial
- d. 於兩台 SQL Node: service mysql start
- a. 於MGM Node: ndb_mgm -e show
- b. 畫面會出現:
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=3 @192.168.152.141 (mysql-5.1.44 ndb-7.1.4, Nodegroup: 0)
id=4 @192.168.152.142 (mysql-5.1.44 ndb-7.1.4, Nodegroup: 0, Master)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.152.139 (mysql-5.1.44 ndb-7.1.4)
[mysqld(API)] 2 node(s)
id=2 @192.168.152.140 (mysql-5.1.44 ndb-7.1.4)
id=5 @192.168.152.143 (mysql-5.1.44 ndb-7.1.4)
7. 簡單測試
- a. 資料庫要設為 Cluster 有些重點必須先知道:
Table 的 storage engine 須設為 NDBCLUSTER。
Table 必須有一個 primary key,若沒有,系統會自動新增一個隱藏的 primary key。
新增資料庫時,需在 Cluster 的每個 SQL node 手動執行新增該資料庫名稱。
新增 SQL node 時,需在該 node 手動新增那些要作同步的資料庫名稱。
- b. 新增資料庫至其中一台SQL NODE:
mysql -u root -p
Enter password:
mysql> create database testDB;
mysql> use testDB;
mysql> create table testTable (id mediumint unsigned not null auto_increment primary key, name varchar(20) not null default '') engine = ndbcluster default charset utf8;
mysql> insert into testTable value(1,'test1');
mysql> insert into testTable value(2,'test2');
**注意要達到兩台同步化一定要在table建立時加入: engine = ndbcluster
c. 兩台SQL Node 均出現以下資料
mysql> select * from testTable;
+----+-------+
| id | name |
+----+-------+
| 1 | test1 |
| 2 | test2 |
+----+-------+
2 rows in set (0.04 sec)
8. 其他常用指令集:
- a. MGM Node:
檢視目前狀況: ndb_mgm -e show
停止: ndb_mgm -e shutdown (它會把所有 MGM Node 和所有 Data Node 的 ndb_mgmd 和 ndbd 都停止掉, 但是mysqld 還留著)
- b. Data Node:
- c. SQL Node:
停止: service mysql stop
重啟: service mysql restart
9. 參考資料
- http://helloworld.pixnet.net/blog/post/26817994-mysql-cluster-%E5%AE%89%E8%A3%9D%E7%AD%86%E8%A8%98
- http://space.itpub.net/15415488/viewspace-620903
- http://gis.nchc.org.tw/lsi/linux_basic/discuss/look.asp?id=1135&Page=2&ADMIN=1
- http://www.osslab.com.tw/index.php?title=User:Alang/Linux_%26_UNIX_%E5%B7%A5%E4%BD%9C%E7%AD%86%E8%A8%98/MySQL_DBA_%E7%AD%86%E8%A8%98/MySQL_Cluster