如何配置MySQL集羣在一臺服務器

要配置一個Cluster集羣,至少得需要配置

1個MGM(管理結點)+1個SQL結點+2 Data 結點

MGM可以和SQL結點共用一臺機器,數據結點單獨佔一臺服務器。

這樣最少也需要3臺服務器。

 

有時候這樣會覺得很麻煩,如果是學習階段,可考慮在單臺服務器搭建一個MySQL Cluster。

 

下文就是教你如何在一臺服務器上搭建Cluster。

 

一,先確認Cluster的包已經正確安裝

[root@cluster-one ~]# rpm -aq|grep -i mysql
MySQL-Cluster-client-gpl-7.2.10-1.el6.x86_64
MySQL-Cluster-server-gpl-7.2.10-1.el6.x86_64
MySQL-Cluster-shared-compat-gpl-7.2.10-1.el6.x86_64
MySQL-Cluster-devel-gpl-7.2.10-1.el6.x86_64

二,創建如下幾個配置文件,下面啓動時要用到

[root@cluster-one mysqlData]# more config.ini
[NDBD DEFAULT]
NoOfReplicas=2
[TCP DEFAULT]
#portnumber=3388
[NDB_MGMD]
NodeId = 1
hostname=localhost
datadir=/mysqlData/clustermgmd-data/
[NDBD]
NodeId = 2
hostname=localhost
datadir=/mysqlData/clusterndb1-data/
[NDBD]
NodeId = 3
hostname=localhost
datadir=/mysqlData/clusterndb2-data/
[MYSQLD]
NodeId = 4
hostname=localhost
[MYSQLD]
NodeId = 5
hostname=localhost
[MYSQLD]


[root@cluster-one mysqlData]# more my1.cnf
[mysqld]
ndbcluster
socket=/data/socket/n1.sock
pid-file=/data/socket/n1.pid
log-error = /data/log/n1_err.log
port = 3501
[mysql_cluster]
ndb-connectstring=localhost

[root@cluster-one mysqlData]# more my2.cnf
[mysqld]
ndbcluster
socket=/data/socket/n2.sock
pid-file=/data/socket/n2.pid
log-error = /data/log/n2_err.log
port = 3502
[mysql_cluster]
ndb-connectstring=localhost

[root@cluster-one mysqlData]# more /etc/my.cnf
[mysqld]
ndbcluster
socket=/var/lib/mysql/mysql.sock
pid-file=/data/socket/mysqld.pid

datadir=/mysqlData/clusterapi
log-bin=mysql-bin
log-bin-index=mysql-bin.index
binlog-format=ROW
server-id=1

port = 3401
[mysql_cluster]
ndb-connectstring=localhost
[client]
socket=/var/lib/mysql/mysql.sock

 

三,分別啓動所有結點 (需要注意的是,如果是第一次啓動,請在  管理結點/數據結點 的啓動參數後面加上 --initial)

啓動結點之前,請確保,上面配置文件指定的目錄都存在。

不存在,請自行先創建一個,或是你修改配置文件指定其它目錄。目錄有:

/mysqlData/clustermgmd-data/
/mysqlData/clusterndb1-data/
/mysqlData/clusterndb2-data/

/mysqlData/clusterapi

/data/socket/mysqld.pid 

/data/socket/

/data/log/

 

 

管理結點

[root@cluster-one ~]# ndb_mgmd -f /mysqlData/config.ini
MySQL Cluster Management Server mysql-5.5.29 ndb-7.2.10

數據結點1
[root@cluster-one ~]# ndbd --defaults-file=/mysqlData/my1.cnf
2013-12-20 02:35:42 [ndbd] INFO     -- Angel connected to 'localhost:1186'
2013-12-20 02:35:42 [ndbd] INFO     -- Angel allocated nodeid: 2

數據結點2
[root@cluster-one ~]# ndbd --defaults-file=/mysqlData/my2.cnf
2013-12-20 02:35:46 [ndbd] INFO     -- Angel connected to 'localhost:1186'
2013-12-20 02:35:46 [ndbd] INFO     -- Angel allocated nodeid: 3

查詢結點,如果沒有/etc/init.d/mysql這個文件,可以 把 “

/usr/share/mysql/mysql.server” 拷貝到/etc/init.d目錄下,並改名爲mysql

[root@cluster-one ~]# /etc/init.d/mysql start
Starting MySQL                                             [  OK  ]

四,啓動成功後檢查

 

檢查結點連接狀態

[root@cluster-one ~]# ndb_mgm -e show
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)]     2 node(s)
id=2    @127.0.0.1  (mysql-5.5.29 ndb-7.2.10, Nodegroup: 0, Master)
id=3    @127.0.0.1  (mysql-5.5.29 ndb-7.2.10, Nodegroup: 0)

[ndb_mgmd(MGM)] 1 node(s)
id=1    @127.0.0.1  (mysql-5.5.29 ndb-7.2.10)

[mysqld(API)]   3 node(s)
id=4    @127.0.0.1  (mysql-5.5.29 ndb-7.2.10)
id=5 (not connected, accepting connect from localhost)
id=6 (not connected, accepting connect from any host)

 

創建一個測試表

[root@cluster-one ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.5.29-ndb-7.2.10-cluster-gpl-log MySQL Cluster Community Server (GPL)

Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


mysql> mysql> CREATE TABLE `sbtest` (
    ->   `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
    ->   `k` int(10) unsigned NOT NULL DEFAULT '0',
    ->   `c` char(120) NOT NULL DEFAULT '',
    ->   `pad` char(60) NOT NULL DEFAULT '',
    ->   PRIMARY KEY (`id`),
    ->   KEY `k` (`k`),
    ->   KEY `idx_c` (`c`)
    -> ) ENGINE=ndbcluster ;
Query OK, 0 rows affected (0.63 sec)

mysql> show create table sbtest;
+--------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table  | Create Table                                                                                                                                                                                                                                                                                           |
+--------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| sbtest | CREATE TABLE `sbtest` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `k` int(10) unsigned NOT NULL DEFAULT '0',
  `c` char(120) NOT NULL DEFAULT '',
  `pad` char(60) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`),
  KEY `k` (`k`),
  KEY `idx_c` (`c`)
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 |
+--------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章