记录日常工作关于系统运维,虚拟化云计算,数据库,网络安全等各方面问题。
 
0

CentOS搭建MySQL-Cluster集群

发表者:admin分类:数据库2020-11-30 11:24:42 阅读[831]

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.htmlhttps://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



转载请标明出处【CentOS搭建MySQL-Cluster集群】。

《www.micoder.cc》 虚拟化云计算,系统运维,安全技术服务.

网站已经关闭评论