参考URL:http://wenku.baidu.com/link?url=AewP4ggf4PFxdsDJnqq-8f8nwD__7Ci1HaRw7HSQ25KS5LVWxhzq9TdDmxRqUsu0koAll0Z6-Uu_eLoU2rwCORWZU2azSZVMSklCLyEeMMO
1、下载mysql-cluster-gpl-7.4.8-linux-glibc2.5-x86_64压缩包
#wget http://cdn.mysql.com//Downloads/MySQL-Cluster-7.4/mysql-cluster-gpl-7.4.8-linux-glibc2.5-x86_64.tar.gz
2、解压
#tar -zxvf mysql-cluster-gpl-7.4.8-linux-glibc2.5-x86_64.tar.gz
3、新建文件夹 #mkdir -p /usr/local/mysql
4、复制文件到mysql文件夹下 #mv mysql-cluster-gpl-7.4.8-linux-glibc2.5-x86_64/. /usr/local/mysql
5、添加用户组及用户 #groupadd mysql;useradd -g mysql mysql
6、设置mysql文件所有者 #cd /usr/local/;chown -R mysql.mysql mysql;chgrp -R mysql mysql;
7、安装MySQL之前,必须创建 MySQL 数据目录和初始化授权表,授权表定义了初始 MySQL 用户账户和访问权限
#cd mysql;scripts/mysql_install_db --user=mysql
8、添加启动脚本
#cp support-files/mysql.server /etc/init.d/mysql;
=====centos=====
#chmod +x /etc/init.d/mysql
#chkconfig --add mysqld
#chkconfig --level 345 mysqld on
=====ubuntu=====
#chmod +x /etc/init.d/mysql;
#cd /etc/init.d/;update-rc.d mysql defaults
9、集群目录
建立集群所需目录:命令:mkdir /var/lib/mysql-cluster;mkdir /var/lib/mysql;mkdir /usr/local/mysql/mysql-cluster;mkdir /etc/mysql
官网地址:http://dev.mysql.com/doc/refman/5.6/en/mysql-cluster-install-linux-binary.html
#cp /usr/local/mysql/bin/ndbd /usr/local/bin/ndbd
#cp /usr/local/mysql/bin/ndbmtd /usr/local/bin/ndbmtd
#cp /usr/local/mysql/bin/ndb_mgm* /usr/local/bin
#cd /usr/local/bin
#chmod +x ndb*
这步很重要:
建立硬链接,软链接试过没啥效果,暂时定为硬链接:
cd /usr/local/mysql/bin;
ln ndbd /usr/bin/;
ln ndb_mgm /usr/bin/;
ln ndb_mgmd /usr/bin/;
ln mysql /usr/bin/;
ln mysqladmin /usr/bin/;
ln mysqldump /usr/bin/;
解析:ndbd、ndb_mgm、ndb_mgmd是集群需要用的。mysql、mysqladmin、mysqldump是mysql常用命令。
10、管理节点 192.168.3.13
NDB节点:192.168.3.13; 192.168.3.18
SQL节点:192.168.3.13; 192.168.3.18
11、修改mysql配置文件,集群的机子都要加。命令:vi /etc/mysql/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
default-storage-engine=NDBCLUSTER
ndbcluster
ndb-connectstring=192.168.3.13
[mysql_cluster]
ndb-connectstring=192.168.3.13
[mysql_safe]
log-error=/var/log/mysqld.log
#pid-file=/var/run/mysqld/mysqld.pid
[client]
socket=/var/lib/mysql/mysql.sock
12、在192.168.2.13上新建一个配置文件,配置如下:vi /etc/mysql/config.ini
[NDBD DEFAULT]
NoOfReplicas=2
MaxNoOfConcurrentOperations=10000
DataMemory=2G
IndexMemory=1G
TimeBetweenWatchDogCheck=30000
DataDir=/var/lib/mysql-cluster
MaxNoOfConcurrentOperations=256K
MaxNoOfConcurrentTransactions=256K
MaxNoOfTables=1024
MaxNoOfAttributes=24760
MaxNoOfOrderedIndexes=10000
StartPartialTimeout=100
StartPartitionedTimeout=100
ArbitrationTimeout=5000
TransactionDeadlockDetectionTimeout=5000
HeartbeatIntervalDbDb=5000
StopOnError=0
[MYSQLD DEFAULT]
[NDB_MGMD DEFAULT]
DataDir=/var/lib/mysql-cluster
[TCP DEFAULT]
portnumber=2202
[NDB_MGMD]
NodeId=1
HostName=192.168.3.13
DataDir=/var/lib/mysql-cluster
[NDBD]
NodeId=2
HostName=192.168.3.13
DataDir=/var/lib/mysql-cluster
[NDBD]
NodeId=3
HostName=192.168.3.18
DataDir=/var/lib/mysql-cluster
[MYSQLD]
HostName=192.168.3.13
ArbitrationRank=2
[MYSQLD]
HostName=192.168.3.18
ArbitrationRank=2
[MYSQLD]
[MYSQLD]
13、启动管理节点 ndb_mgmd -f /etc/mysql/config.ini
14、启动数据节点 (host1 、host2)
【首次启动 begin 】 首次启动必须加 --ndb-nodeid=2 --initial-start
# /usr/local/mysql/bin/ndbd --ndb-nodeid=2 --initial-start
# /usr/local/mysql/bin/ndbd --ndb–nodeid=3 --initial-start
【首次启动 end】
【后续启动 begin】 后续启动不能加 --initial-start 否则,原来的数据将丢失
# /usr/local/mysql/bin/ndbd
# /usr/local/mysql/bin/ndbd
【后续启动 end】
15、启动SQL节点 (host1、host2) 指定配置文件 mysqld_safe --defaults-file=/etc/mysql/my.cnf
# /etc/init.d/mysqld start
错误:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (
#chown -R mysql:mysql /var/lib/mysql
错误:/etc/init.d/mysqld start
...... * The server quit without updating PID file (/var/lib/mysql/bogon.pid).
重新安装 cd /usr/local/mysql;scripts/mysql_install_db --user=mysql;
16、查看集群状态
# ndb_mgm
--NDB Cluster --Management Client --
ndb_mgm>show
ndb_mgm>quit
17、测试集群
/usr/local/mysql/bin/mysql -uroot -p
mysql>use test;
mysql>create table t2(id int,name varchar(10)) engine=ndb;
mysql>insert into t2 values(1,'beijing');
mysql>insert into t2 values(2,'tianjing');
进入另外一个sql节点,应可以看到相应数据
a)在任意SQL节点(192.168.1.5 / 192.168.1.8)上关闭其中一个mysql服务,在另外一个上进行的数据库操作,等关闭的mysql服务启动后自动合并更新
使用ndb_mgn -e show 命令将在mysqld[API]项目中看到停止的mysql所在机器
b)在任意节点(192.168.1.5 / 192.168.1.8)上断开节点(把网线/ifdown eth0),在另外一个上进行的数据库操作,等断开的数据节点(连接网线 /ifup eth0)链接成功后自动合并更
新
使用ndb_mgn -e show 命令将在各个项目中看到停止的节点所在机器
建立数据表时,要加上 engine=ndbcluster 不然不能同步
创建数据库表,与没有使用 Cluster的MySQL相比,在MySQL Cluster内操作数据的方式没有太大的区别。
执行这类操作时应记住两点:
表必须用ENGINE=NDB或ENGINE=NDBCLUSTER选项创建,或用ALTER TABLE选项更改,以使用NDB Cluster存储引擎在 Cluster内复制它们。如果使用mysqldump的输出从已有数据库导入表,
可在文本编辑器中打开SQL脚本,并将该选项添加到任何表创建语句,或用这类选项之一替换任何已有的ENGINE(或TYPE)选项。
另外还请记住,每个NDB表必须有一个主键。如果在创建表时用户未定义主键,NDB Cluster存储引擎将自动生成隐含的主键。(注释:该隐含 键也将占用空间,就像任何其他的表索引一
样。由于没有足够的内存来容纳这些自动创建的键,出现问题并不罕见)。
18、安全关闭
要想关闭 Cluster,可在MGM节点所在的机器上,在Shell中简单地输入下述命令:
[db1~]root# /usr/local/mysql/bin/ndb_mgm -e shutdown
ndbdstop
运行以下命令关闭SQL节点的mysqld服务:
[db2~]root# /usr/local/mysql/bin/mysqladmin -uroot shutdown