我的数据盘挂接在/mnt
1. 集群配置如下
(3台机器)
管理节点:10.117.9.177
数据节点1:10.153.193.91
数据节点2:10.173.82.29
sql节点1:10.153.193.91
sql节点2:10.173.82.29
我使用3台机器进行配置,其中两台机器上的数据节点与sql节点在一起
安装包:mysql-cluster-gpl-7.4.6-linux-glibc2.5-x86_64.tar
2. 管理节点安装(10.117.9.177)
安装
shell> groupadd mysql
shell> useradd mysql -g mysql
shell> mv mysql-cluster-gpl-7.4.6-linux-glibc2.5-x86_64.tar.gz /mnt/
shell> cd /mnt/
shell> tar zxvf mysql-cluster-gpl-7.4.6-linux-glibc2.5-x86_64.tar.gz
shell> mv mysql-cluster-gpl-7.4.6-linux-glibc2.5-x86_64 mysql
shell> chown -R mysql:mysql mysql
shell> cd mysql
shell> scripts/mysql_install_db --user=mysql --basedir=/mnt/mysql/ --datadir=/mnt/mysql/data/
配置管理节点
shell> mkdir /var/lib/mysql-cluster
shell> cd /var/lib/mysql-cluster
vi config.ini 添加以下内容
[ndbd default]
NoOfReplicas=2
DataMemory=2048M
IndexMemory=2048M
MaxNoOfConcurrentOperations=50000
[ndb_mgmd]
NodeId=1
Hostname=10.117.9.177
datadir=/mnt/mysql/mysql-cluster/data
[ndbd]
NodeId=2
Hostname=10.153.193.91
datadir=/mnt/mysql/data/
[ndbd]
NodeId=3
Hostname=10.173.82.29
datadir=/mnt/mysql/data/
[MYSQLD]
NodeId=4
Hostname=10.153.193.91
[mysqld]
NodeId=5
Hostname=10.173.82.29
3. 数据节点安装(10.153.193.91,10.173.82.29)
执行相同的安装操作
shell> groupadd mysql
shell> useradd mysql -g mysql
shell> mysql-cluster-gpl-7.4.6-linux-glibc2.5-x86_64.tar.gz /mnt
shell> cd /mnt/
shell> tar zxvf mysql-cluster-gpl-7.4.6-linux-glibc2.5-x86_64.tar.gz
shell> mv mysql-cluster-gpl-7.4.6-linux-glibc2.5-x86_64 mysql
shell> chown -R mysql:mysql mysql
shell> cd mysql
shell> scripts/mysql_install_db --user=mysql --basedir=/mnt/mysql/ --datadir=/mnt/mysql/data/
shell> cp support-files/mysql.server /etc/init.d/mysqld
配置数据节点
vi /etc/my.cnf 添加入如下内容
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
[mysqld]
wait_timeout=31536000
interactive_timeout=31536000
default-storage-engine=ndbcluster
ndbcluster
datadir=/mnt/mysql/data
basedir=/mnt/mysql
innodb_file_per_table=1
ndb-connectstring="10.117.9.177:1186"
socket=/mnt/mysql/mysqld.sock
#skip-grant-tables
#tmpdir=/mnt/tmp
character_set_server=utf8
[mysql_cluster]
ndb-connectstring="10.117.9.177:1186"
[client]
port=3306
socket=/mnt/mysql/mysqld.sock
#sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
4. 启动管理节点服务(10.117.9.177)
shell> /mnt/mysql/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini --configdir=/mnt/mysql/mysql-cluster--initial
shell> netstat -lntpu
看到1186开放说明启动正常
★必须注意:只是在第一次启动或在备份/恢复或配置变化后重启ndbd时,才加–initial参数!
5. 启动数据节点服务(10.153.193.91,10.173.82.29) Data (NDBD) node
shell> /mnt/mysql/bin/ndbd --initial
备注: 启动此处时,需要为防火墙开启1186,3306端口。
在两台机器上启动服务, 执行相同操作
★必须注意:只是在第一次启动或在备份/恢复或配置变化后重启ndbd时,才加–initial参数!
启动结果如下:
2012-06-30 05:01:11 [ndbd] INFO -- Angel connected to '192.168.6.134:1186'
2012-06-30 05:01:11 [ndbd] INFO -- Angel allocated nodeid: 3
6. 启动SQL节点服务(10.153.193.91,10.173.82.29) MySQL server (SQL) node
shell> service mysqld start
7. 功能测试
在管理节点(10.117.9.177)上查看服务状态
shell> /mnt/mysql/bin/ndb_mgm
ndb_mgm> show
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @10.153.193.91 (mysql-5.5.22 ndb-7.4.6, Nodegroup: 0, Master)
id=3 @10.173.82.29 (mysql-5.5.22 ndb-7.4.6, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @10.117.9.177 (mysql-5.5.22 ndb-7.4.6)
[mysqld(API)] 2 node(s)
id=4 @10.153.193.91 (mysql-5.5.22 ndb-7.4.6)
id=5 @10.173.82.29 (mysql-5.5.22 ndb-7.4.6)
可以看到这里的数据节点、管理节点、sql节点都是正常的
★非常重要:
1.在建表的时候一定要用ENGINE=NDB或ENGINE=NDBCLUSTER指定使用NDB集群存储引擎,或用ALTER TABLE选项更改表的存储引擎。
2.NDB表必须有一个主键,因此创建表的时候必须定义主键,否则NDB存储引擎将自动生成隐含的主键。
3.Sql节点的用户权限表仍然采用MYISAM存储引擎保存的,所以在一个Sql节点创建的MySql用户只能访问这个节点,如果要用同样的用户访问别的Sql节点,需要在对应的Sql节点追加用户。虽然在MySql Cluster7.2版本开始提供了”用户权限共享”.
测试一:
现在我们在其中一个数据节点上进行相关数据库的创建,然后到另外一个数据节点上看看数据是否同步
在数据节点1(10.153.193.91)上执行:
shell> /mnt/mysql/bin/mysql -u root -p
mysql>show databases;
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;
然后在数据节点2上看数据是否同步过来了
经过测试,在非master上创建数据,可以同步到master上
查看表的引擎是不是NDB,>show create table 表名;
测试二、关闭一个数据节点 ,在另外一个节点写输入,开启关闭的节点,看数据是否同步过来
首先把数据节点1重启,然后在节点2上添加数据
在节点2(10.173.82.29)上操作如下:
mysql> create database bb;
mysql> use bb
mysql> CREATE TABLE ctest3 (i INT) ENGINE=NDB;
mysql> use aa
mysql> INSERT INTO ctest2 () VALUES (3333);mysql> SELECT * FROM ctest2;
等节点1启动完毕,启动节点1的服务#/usr/local/mysql/bin/ndbd --initial#service mysqld start然后登录进去查看数据# /usr/local/mysql/bin/mysql -u root –p可以看到数据已经同步过来了,说明数据可以双向同步了。
8. 关闭集群
1.关闭管理节点和数据节点,只需要在管理节点(ClusterMgm--134)里执行
shell> /mnt/mysql/bin/ndb_mgm -e shutdown
显示
Connected to Management Server at: localhost:1186
2 NDB Cluster node(s) have shutdown.
Disconnecting to allow management server to shutdown.
2.然后关闭Sql节点(91,29),分别在2个节点里运行:
shell> /etc/init.d/mysql stop
Shutting down MySQL... SUCCESS!
注意:要再次启动集群,就按照第4,5,6步的启动步骤即可,不过这次启动数据节点的时候就不要加”–initial”参数了。