1、准备
1)操作系统为CentOS,使用root用户安装
2)下载mysql-cluster-gpl-7.6.13-el7-x86_64.tar.gz,下载地址https://dev.mysql.com/downloads/cluster/7.6.html。
3)准备3台Linux主机
IP地址 | 作用 |
172.16.43.142 | 管理节点 |
172.16.43.148 | 数据节点、SQL节点 |
172.16.43.149 | 数据节点、SQL节点 |
保证所有主机防火墙对1181和3306端口例外,或直接禁用防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
2、安装管理节点(Management Node)
管理节点最好与数据节点不在同一台机器,如果在同一台机器,当这台机器挂了,则整个服务不可用。
1)创建文件/var/lib/mysql-cluster/config.ini
mkdir /var/lib/mysql-cluster
vi /var/lib/mysql-cluster/config.ini
文件内容为(配置说明见:https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-install-configuration.html,https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-ndbd-definition.html):
[ndbd default] NoOfReplicas=2 [ndb_mgmd] NodeId=1 HostName=172.16.43.151 DataDir=/var/lib/mysql-cluster [ndbd] NodeId=11 HostName=172.16.43.153 DataDir=/usr/local/mysql/data [ndbd] NodeId=12 HostName=172.16.43.154 DataDir=/usr/local/mysql/data [mysqld] NodeId=21 HostName=172.16.43.153 [mysqld] NodeId=22 HostName=172.16.43.154
注意:NodeId只能是数字,可以在不同类型节点间空出几个数字,以备扩展。NoOfReplicas值范围是1-2。
2)解压安装文件,拷贝需要的程序
对于单纯管理节点,只需要ndb_mgm和ndb_mgmd,其他解压内容都可以删除。
tar zxvf mysql-cluster-gpl-7.6.13-el7-x86_64.tar cd mysql-cluster-gpl-7.6.13-el7-x86_64/ cp bin/ndb_mgm* /usr/local/bin chmod +x /usr/local/bin/ndb_mgm*
3)启动管理节点,并查看集群信息
ndb_mgmd -f /var/lib/mysql-cluster/config.ini --config-cache=FALSE ndb_mgm
ndb_mgmd启动参数介绍:https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-programs-ndb-mgmd.html
因为我们的数据节点和SQL节点都没安装,所有状态都是not connected。
3、安装SQL节点(SQL Node)
1)创建mysql用户和组
groupadd mysql
useradd -g mysql mysql
2)修改/etc/my.cnf文件
vi /etc/my.cnf
修改后的内容为:
[mysqld] ndbcluster
default-storage-engine=ndbcluster
character_set_server=utf8
lower_case_table_names=1
#basedir=/usr/local/mysql #datadir=/usr/local/mysql/data [mysql_cluster] ndb-connectstring=172.16.43.151
配置说明:
default-storage-engine=ndbcluster设置默认Engine。
lower_case_table_names=1,设置大小写不敏感。
character_set_server=utf8设置字符集,mysql默认字符集不支持汉字
此处datadir与config.ini中的DataDir是不同的设置,一个针对SQL节点,一个针对数据节点,它们的值可以相同,也可以不同,如果相同,且SQL节点与数据节点在同一台主机,则需保证SQL节点要先初始化,不然会报错。
如果安装位置不是/usr/local/mysql,则需要basedir参数,不然mysql初始化时有些配置找不到。
3)创建数据存储目录并更改属性
mkdir /usr/local/mysql/data cd /usr/local/mysql/ chown -R mysql data chgrp -R mysql .
3)解压安装文件并初始化
tar -xzvf mysql-cluster-gpl-7.6.13-el7-x86_64.tar.gz mv mysql-cluster-gpl-7.6.13-el7-x86_64/ /usr/local/mysql cd /usr/local/mysql ./bin/mysqld --initialize --user=mysql
记住上图中初始化生成的随机密码,丢了我是不晓得在哪可以再找到这个临时密码
4)添加并启动Linux服务
cp support-files/mysql.server /etc/init.d/mysqld chmod +x /etc/init.d/mysqld chkconfig --add mysqld service mysqld start
4、安装数据节点
1)复制ndbd和ndbmtd文件并授权
对于单纯数据节点,只需要ndbd和ndbmtd文件,其他解压文件均可删除
cd /usr/local/mysql cp bin/ndbd /usr/local/bin/ndbd cp bin/ndbmtd /usr/local/bin/ndbmtd chmod +x /usr/local/bin/ndb*
2)修改my.cnf文件(如果数据节点与SQL节点在同一台服务器,且datadir一样,这一步可省略)
[mysqld]
ndbcluster
[mysql_cluster]
ndb-connectstring=172.16.43.142
3)创建管理节点config.ini中ndbd定义的DataDir目录(如果数据节点与SQL节点在同一台服务器,且datadir一样,这一步可省略)
mkdir /usr/local/mysql
mkdir /usr/local/mysql/data
4)启动数据节点
ndbd
5、验证安装
1)打开管理节点,重新查看各个节点状态,若出现下图则表示全部安装完成
2)登陆mysql,创建'root'@'%'用户,每个SQL节点都要创建
# 使用'root'%'localhost'用户登陆 cd /usr/local/mysql/bin ./mysql -u root -p set password = password('abc123'); # 创建'root'@'%' create user 'root'@'%' identified by 'abc123'; grant all on *.* to 'root'@'%' with grant option;
3)使用数据库连接工具创建数据库表,注意表的Engine为ndbcluster(也可以在my.cnf中设置默认引擎),这样2个SQL节点都可以看到这张表和表中的数据了。
出现的问题:
1、启动ndb_mgmd时报,Could not create directory '/usr/local/mysql/mysql-cluster'. Either create it manually or specify a different directory with --configdir=<path>
解决方式一:增加--config-cache=FALSE
解决方式二:配置--configdir参数为已存在的目录
解决方式三:创建默认的/usr/local/mysql/mysql-cluster目录
2、mysqld(API) not connected(如下图),检测防火墙是否打开了。
其他:
官网安装介绍:https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-install-linux-binary.html