mysql cluster 基于NDB CLUSTER存储引擎的完整的分布式数据库系统。MYSQL CLUSTER是一个share nothing架构,各个mysql server之间并不共享任何数据。mysql cluster其实是在无共享存储设备上实现的一种彻底分布式数据库系统。如今版本的MYSQL CLUSTER能够作到将全部搜索引擎装载在内存中,实际的数据能够不用所有装载到内存中。node
mysql cluster有3部分组成:mysql
1.sql node:负责数据库存储层之上的全部事情,好比连接管理,quere优化和相应,cache管理。须要在配置文件(my.cnf)添加ndbcluster参数。linux
2.data node:实现底层的数据存储功能,保存cluster的数据,每一个data节点保存完整数据的一个fragment.通常来讲ndb节点被组织成一个一个的ndb group,一个ndb group实际上就是一组存有彻底相同的物理数据的NDB节点群。数据节点的配置参数在管理节点的config.ini中配置。NoOfreplicas参数指定每一份数据被冗余存储在不一样节点上面的分数,通常至少设置成2.sql
3.managerment node:负责管理整个集群中的各个节点的管理工做,包括集群的配置,启动关闭节点,对各个节点进行常规维护,以及实施数据的备份等。shell
mysql cluter 启动顺序:数据库
managerment node --->data node --->sql nodevim
######################################################3网络
mysql cluster network:架构
managerment node:10.10.54.86分布式
data node:10.10.54.85/87
sql node:10.10.54.85/87
备份之前数据:
[root@nan86 ~]# mv /usr/local/mysql/ /usr/local/mysql_bak
[root@nan85 ~]# mv /usr/local/mysql/ /usr/local/mysql_bak
[root@nan87 ~]# mv /usr/local/mysql/ /usr/local/mysql_bak
配置步骤:
1.解压文件: 三个主机85,86,87都作以下操做: #tar xvf mysql-cluster-gpl-7.2.15-linux2.6-x86_64.tar.gz #mv mysql-cluster-gpl-7.2.15-linux2.6-x86_64 /usr/local/mysql #chown mysql.mysql -R /usr/local/mysql 2.配置管理节点 在主机10.10.54.86上: [root@nan86 bin]# cp /usr/local/mysql/bin/ndb_mgm* /usr/local/bin/ [root@nan86 etc]# pwd /etc [root@nan86 etc]# mkdir ndb [root@nan86 ndb]# vim /etc/ndb/config.ini [NDBD DEFAULT] NoOfReplicas=2 DataMemory=512M IndexMemory=256M //能够不加 [TCP DEFAULT] portnumber=2202 [NDB_MGMD] nodeid=1 hostname=10.10.54.86 datadir=/data/ndb [NDBD] nodeid=2 hostname=10.10.54.85 datadir=/data/ndb BackupDataDir=/data/backup [NDBD] nodeid=3 hostname=10.10.54.87 datadir=/data/ndb BackupDataDir=/data/backup [MYSQLD] nodeid=10 hostname=10.10.54.85 [MYSQLD] nodeid=11 hostname=10.10.54.87 3.SQL节点配置 在主机10.10.54.85和10.10.54.87上作以下操做: #/etc/init.d/mysqld stop # vim /etc/my.cnf //添加以下: [mysql_cluster] ndb-connectstring=10.10.54.86 [mysqld] datadir=/data/ndb ndbcluster ndb-connectstring=10.10.54.86 # vim /etc/init.d/mysqld #修改下面的数据 datadir=/data/ndb 初始化数据: #/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql 4.启动管理节点 在主机10.10.54.86上 [root@nan86 ~]# ndb_mgmd -f /etc/ndb/config.ini --initial MySQL Cluster Management Server mysql-5.5.35 ndb-7.2.15 [root@nan86 ~]# ndb_mgm -- NDB Cluster -- Management Client -- ndb_mgm> show 5.启动data节点 在10.10.54.85和10.10.54.87 # ndbd --initial --ndb-connectstring=10.10.54.86 2014-02-26 08:21:38 [ndbd] INFO -- Angel connected to '10.10.54.86:1186' 2014-02-26 08:21:38 [ndbd] INFO -- Angel allocated nodeid: 2 6.启动SQL节点 在10.10.54.85和10.10.54.87 #/etc/init.d/mysqld start 7.查看SQL节点和data节点是否成功 在管理节点上,看到以下是成功的。 [root@nan86 ndb]# ndb_mgm -- NDB Cluster -- Management Client -- ndb_mgm> show Connected to Management Server at: localhost:1186 Cluster Configuration --------------------- [ndbd(NDB)] 2 node(s) id=2 @10.10.54.85 (mysql-5.5.35 ndb-7.2.15, Nodegroup: 0, *) id=3 @10.10.54.87 (mysql-5.5.35 ndb-7.2.15, Nodegroup: 0) [ndb_mgmd(MGM)] 1 node(s) id=1 @10.10.54.86 (mysql-5.5.35 ndb-7.2.15) [mysqld(API)] 2 node(s) id=4 @10.10.54.85 (mysql-5.5.35 ndb-7.2.15) id=5 @10.10.54.87 (mysql-5.5.35 ndb-7.2.15) @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 若是看到以下: ndb_mgm> show Connected to Management Server at: localhost:1186 Cluster Configuration --------------------- [ndbd(NDB)] 2 node(s) id=2 (not connected, accepting connect from 10.10.54.85) id=3 (not connected, accepting connect from 10.10.54.87) [ndb_mgmd(MGM)] 1 node(s) id=1 @10.10.54.86 (mysql-5.5.35 ndb-7.2.15) [mysqld(API)] 2 node(s) id=4 (not connected, accepting connect from 10.10.54.85) id=5 (not connected, accepting connect from 10.10.54.87) 解决方法: (1)查看SQL节点和data节点是否启动。 (2)查看/data/ndb下全部文件全部者否是mysql.mysql /usr/local/mysql下全部文件全部者否是mysql.mysql (3)查看iptables (4)查看网络 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 7.验证NDB集群 在10.10.54.85上 mysql> create table sn(age int) -> engine=ndb; mysql> show tables; +----------------+ | Tables_in_test | +----------------+ | sn | +----------------+ mysql> insert into sn values(12); ... 在10.10.54.87上 mysql> select * from sn; +------+ | age | +------+ | 12 | | 12 | | 12 | | 12 | | 12 | +------+ 经测试,插入更新一样能同步。