MySQL cluster中有三种节点:
管理节点、数据节点和SQL节点。
群集中的某计算机可能是某一种节点,也可能是两种或三种节点的集合。
管理节点(也可以称管理服务器)
主要负责管理数据节点和SQL节点,还有群集配置文件和群集日志文件。它监控其他节点的工作状态,能够启动、关闭或重启某个节点。其他节点从管理节点检索配置数据,当数据节点有新事件时就把事件信息发送给管理节点并写入群集日志。
数据节点用于存储数据。
1、配置管理节点
[ndbd default]
NoOfReplicas= 2
DataMemory= 20M
IndexMemory= 1M
DataDir= /data/
[ndb_mgmd]
HostName= 192.168.18.10
DataDir= /data/
[ndbd]
Id=10
Hostname=192.168.18.11
DataDir= /data/
[ndbd]
Id=11
Hostname=192.168.18.12
DataDir= /data/
[mysqld]
Id=21
Hostname=192.168.18.10
[mysqld]
Id=22
Hostname=192.168.18.9
安装管理节点,不需要mysqld二进制文件,只需要MySQL Cluster服务端程序(ndb_mgmd)和监听客户端程序(ndb_mgm),这两个文件都在下载的MySQL-cluster文件解压后的bin文件夹中,下面我们解压mysql-cluster-gpl-7.2.8-linux2.6-i686.tar.gz这个文件,并顺带的把mysql安装完毕,由于我们的MGM管理节点于一台sql节点在同一机器上,所以我们稍后直接启动服务即可
2、配置sql节点
解压进入后,查看安装INSTALL-BINARY这个安装二进制文件,并查找以shell开头的文件行具体如下:
可以看到,已经明确给出了install的源码,把以上几行复制粘贴出来后,保存为一个文件,稍加修改即可,文件内如如下:(由于我们压缩包已经解压,所以取消了tar -zxf部分)
groupadd mysql
useradd -r -g mysql mysql
cd /usr/local
ln -s /home/mysql-cluster-gpl-7.2.8-linux2.6-i686 mysql
cd mysql
chown -R mysql .
chgrp -R mysql .
scripts/mysql_install_db --user=mysql
chown -R root .
chown -R mysql data
# Next command is optional
cp support-files/my-medium.cnf /etc/my.cnf
bin/mysqld_safe --user=mysql &
# Next command is optional
cp support-files/mysql.server /etc/init.d/mysqld
chomd 755 /etc/init.d/mysqld
保存为setup, 并给于执行权限chmod +x setup
[root@localhost mysql-cluster-gpl-7.2.8-linux2.6-i686]# ./setup
安装完毕即可
[root@localhost mysql-cluster-gpl-7.2.8-linux2.6-i686]# /usr/local/mysql/bin/mysql
看到已经启动了
因为其作为mysql-cluster中的sql节点,所以还需要配置一下/etc/my.cnf这个文件,只需要在[mysqld]加入(如图所示)
[mysqld]
ndbcluster
ndb-connectstring=192.168.18.10 #指向MGM管理节点
加入[mysql_cluster]
ndb-connectstring=192.168.18.10 #指向MGM管理节点
并注释掉如下参数
#log-bin=mysql-bin
#binlog_format=mixed
#server-id = 1
3、配置数据节点
安装数据节点,不需要mysqld二进制文件,只需要NDBD服务端即可,这个文件在下载的MySQL-cluster文件解压后的bin文件夹中
因此我们直接解压mysql-cluster-gpl-7.2.8-linux2.6-i686.tar.gz这个文件即可
[mysqld]
datadir=/data
ndbcluster
ndb-connectstring=192.168.18.10
[mysql_cluster]
ndb-connectstring=192.168.18.10
4、启动
顺序必须是MGM-NDBD-SQL
启动管理节点:
/usr/local/mysql/bin/ndb_mgmd -f /home/config.ini
show
启动ndbd:
/usr/local/mysql/bin/ndbd
启动sql:
/etc/init.d/mysqld start or restart
Mysql cluster对需要进行分片的表需要修改引擎Innodb为NDB,不需要分片的可以不修改。NDB的事务隔离级别只支持Read Committed,即一个事务在提交前,查询不到在事务内所做的修改;而Innodb支持所有的事务隔离级别,默认使用Repeatable Read,不存在这个问题。外键支持:虽然最新的Cluster版本已经支持外键,但性能有问题(因为外键所关联的记录可能在别的分片节点中),所以建议去掉所有外键。Data Node节点数据会被尽量放在内存中,对内存要求大。
表必须用ENGINE=NDB或ENGINE=NDBCLUSTER选项创建,或用ALTER TABLE选项更改,以使用NDB Cluster存储引擎在 Cluster内复制它们。如果使用mysqldump的输出从已有数据库导入表,可在文本编辑器中打开SQL脚本,并将该选项添加到任何表创建语句,或用这类选项之一替换任何已有的ENGINE(或TYPE)选项。
另外还请记住,每个NDB表必须有一个主键。如果在创建表时用户未定义主键,NDB Cluster存储引擎将自动生成隐含的主键。(注释:该隐含 键也将占用空间,就像任何其他的表索引一样。由于没有足够的内存来容纳这些自动创建的键,出现问题并不罕见)。
mysql集群原理
mysql-cluster群集+lvs keepalived高可用