要配置一个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_64MySQL-Cluster-server-gpl-7.2.10-1.el6.x86_64MySQL-Cluster-shared-compat-gpl-7.2.10-1.el6.x86_64MySQL-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 = 1hostname=localhostdatadir=/mysqlData/clustermgmd-data/[NDBD]NodeId = 2hostname=localhostdatadir=/mysqlData/clusterndb1-data/[NDBD]NodeId = 3hostname=localhostdatadir=/mysqlData/clusterndb2-data/[MYSQLD]NodeId = 4hostname=localhost[MYSQLD]NodeId = 5hostname=localhost[MYSQLD] [root@cluster-one mysqlData]# more my1.cnf[mysqld]ndbclustersocket=/data/socket/n1.sockpid-file=/data/socket/n1.pidlog-error = /data/log/n1_err.logport = 3501[mysql_cluster]ndb-connectstring=localhost[root@cluster-one mysqlData]# more my2.cnf
[mysqld]ndbclustersocket=/data/socket/n2.sockpid-file=/data/socket/n2.pidlog-error = /data/log/n2_err.logport = 3502[mysql_cluster]ndb-connectstring=localhost[root@cluster-one mysqlData]# more /etc/my.cnf
[mysqld]ndbclustersocket=/var/lib/mysql/mysql.sockpid-file=/data/socket/mysqld.piddatadir=/mysqlData/clusterapi
log-bin=mysql-binlog-bin-index=mysql-bin.indexbinlog-format=ROWserver-id=1port = 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.cnf2013-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.cnf2013-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:1186Cluster 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 2Server 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 respectiveowners.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)