天天看點

mysql叢集 基礎詳解

作業系統:

    Centos5.2

軟體包:

    mysql-cluster-gpl-7.0.8a-linux-i686-glibc23.tar.gz

資料庫管理節點: 192.168.100.151

資料庫資料節點: 192.168.100.65,192.168.100.58

資料庫sql節點: 192.168.100.65,192.168.100.58

我這裡資料節點和sql節點用相同的2台機器承擔.

1.管理節點的安裝

 #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

2.管理節點的配置

 #mkdir /var/lib/mysql-cluster

 #cd /var/lib/mysql-cluster

 #vi config.ini               //這裡需要手動添加如下内容

[ndbd default]

 NoOfReplicas=2

 DataMemory=80M

 IndexMemory=18M                  //這裡有很多參數,大家可以自己找下相關資料

 [ndb_mgmd]

 Id=1

 Hostname=10.10.1.151             //管理節點IP

 datadir=/usr/local/mysql/logs

 [ndbd]

 Id=2

 Hostname=10.10.1.65              //資料節點IP

 datadir=/usr/local/mysql/data/   //資料節點的資料目錄,這裡要與資料節點的配置檔案my.cnf

                                    的資料指定相同

 Id=3

 Hostname=10.10.1.58            //資料節點IP

 datadir=/usr/local/mysql/data/

 [MYSQLD]

3.安裝和配置資料節點

 這裡2台機器資料節點安裝是相同的.

 #groupadd mysql  #useradd mysql -g 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

 connect-string=10.10.1.151

 [mysql_cluster]

 [ndb_mgm]

 connect-string=192.168.1.151

 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

 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

| aa                 |

| bb                 |

| ndb_3_fs           |

mysql> select * from ctest2;

從上面可以看到資料已經同步了,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   |

然後我們恢複10.10.1.65資料節點,檢視下ctest3資料是否同步過來了.

mysql> show tables;

| ctest        |

可以看到10.10.1.65資料節點已經把10.10.1.58資料節點的資料同步過來了,說明mysql叢集是沒有問題的了.随後做下mysql性能相關的測試.

下一篇: sphinx

繼續閱讀