我這裏數據節點和sql節點用相同的2臺機器承擔.
#groupadd mysql
#useradd mysql -g mysql
#mv mysql-cluster-gpl-7.0.8a-linux-i686-glibc23.tar.gz /usr/local/
#cd /usr/local/
#tar zxvf mysql-cluster-gpl-7.0.8a-linux-i686-glibc23.tar.gz
#rm -f mysql-cluster-gpl-7.0.8a-linux-i686-glibc23.tar.gz
#mv mysql-cluster-gpl-7.0.8a-linux-i686-glibc23 mysql
#chown -R mysql:mysql mysql
#cd mysql
#scripts/mysql_install_db --user=mysql
#cp support-files/my-medium.cnf /etc/my.cnf
#cp support-files/mysql.server /etc/init.d/mysqld
#vi /etc/my.cnf
//這裏須要手動添加以下的內容
datadir=/usr/local/mysql/data/ //這裏要與管理節點的config.ini相同
ndbcluster
ndb-connectstring=10.10.1.151
[ndbd]
connect-string=10.10.1.151
[mysql_cluster]
ndb-connectstring=10.10.1.151
[ndb_mgm]
connect-string=192.168.1.151
[ndb_mgmd]
config-file=/var/lib/mysql-cluster/config.ini
//這裏要指定管理節點配置文件路徑
4.啓動相關服務
在管理節點啓動相關服務:
#/usr/local/mysql/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini
#netstat -lntpu
tcp 0 0 0.0.0.0:1186 0.0.0.0:*
LISTEN 22907/ndb_mgmd
看到1186端口開放了說明啓動是正常的.
在數據節點啓動相關服務:
#/usr/local/mysql/bin/ndbd --initial
#netstat -lntpu
tcp 0 0 10.10.1.65:32975 0.0.0.0:* LISTEN 1901/ndbd
tcp 0 0 10.10.1.65:32976 0.0.0.0:* LISTEN 1901/ndbd
tcp 0 0 10.10.1.65:32977 0.0.0.0:* LISTEN 1901/ndbd
#service mysqld start
#netstat -lntpu
tcp 0 0 :::3306 :::* LISTEN 2258/mysqld
能夠看到相關的ndbd服務以及mysql已經啓動ok了.
5.功能測試
到管理節點查看下相關服務狀態
# ndb_mgm
ndb_mgm> show
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @10.10.1.65 (mysql-5.1.37 ndb-7.0.8, Nodegroup: 0, Master)
id=3 @10.10.1.58 (mysql-5.1.37 ndb-7.0.8, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @10.10.1.151 (mysql-5.1.37 ndb-7.0.8)
[mysqld(API)] 2 node(s)
id=4 @10.10.1.65 (mysql-5.1.37 ndb-7.0.8)
id=5 @10.10.1.58 (mysql-5.1.37 ndb-7.0.8)
能夠看到這裏的數據節點、管理節點、sql節點都是正常的.
如今咱們在其中一個數據節點上進行相關數據庫的建立,而後到另一個數據節點上看看數據是否同步
# /usr/local/mysql/bin/mysql -u root -p
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| ndb_2_fs |
| test |
+--------------------+
mysql> create database aa;
mysql> use aa
mysql> CREATE TABLE ctest2 (i INT) ENGINE=NDB;
//這裏必須指定數據庫表的引擎爲NDB,不然同
步失敗
mysql> INSERT INTO ctest2 () VALUES (1);
mysql> SELECT * FROM ctest2;
+------+
| i |
+------+
| 1 |
+------+
如今到另一個數據節點查看下aa數據庫是否同步過來了.
#/usr/local/mysql/bin/mysql -u root -p
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| aa |
| bb |
| mysql |
| ndb_3_fs |
| test |
+--------------------+
mysql> use aa
mysql> select * from ctest2;
+------+
| i |
+------+
| 1 |
+------+
從上面能夠看到數據已經同步了,mysql集羣環境已經搭建完成.
6.破壞性測試
你們在上面能夠看到10.10.1.65做爲主的數據節點,我如今把10.10.1.65這臺機器關閉,看下有什麼結果
ndb_mgm> show
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 (not connected, accepting connect from 10.10.1.65)
id=3 @10.10.1.58 (mysql-5.1.37 ndb-7.0.8, Nodegroup: 0, Master)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @10.10.1.151 (mysql-5.1.37 ndb-7.0.8)
[mysqld(API)] 2 node(s)
id=4 (not connected, accepting connect from any host)
id=5 @10.10.1.58 (mysql-5.1.37 ndb-7.0.8)
從上面能夠發現如今10.10.1.65這臺機器的數據節點和sql節點已經鏈接不上了,10.10.1.58成爲了主數
據節點,咱們如今在10.10.1.58數據節點上建立一個表,而後恢復10.10.1.65的數據節點,看下它是否
把數據同步過來了.
先在10.10.1.58數據節點作以下操做:
mysql> create table ctest3(id int(11)) engine=NDB;
mysql> show tables;
+--------------+
| Tables_in_aa |
+--------------+
| ctest2 |
| ctest3 |
+--------------+
mysql> insert into ctest3 values(1);
mysql> select * from ctest3;
+------+
| id |
+------+
| 1 |
+------+
而後咱們恢復10.10.1.65數據節點,查看下ctest3數據是否同步過來了.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| aa |
| bb |
| mysql |
| ndb_2_fs |
| test |
+--------------------+
mysql> use aa
mysql> show tables;
+--------------+
| Tables_in_aa |
+--------------+
| ctest |
| ctest2 |
| ctest3 |
+--------------+
mysql> select * from ctest3;
+------+
| id |
+------+
| 1 |
+------+
能夠看到10.10.1.65數據節點已經把10.10.1.58數據節點的數據同步過來了,說明mysql集羣是沒有問題的了.隨後作下mysql性能相關的測試.