MySQL Cluster集群搭建

前言

Mysql Cluster是两项技术的结合:NDB数据库,以及作为SQL前端的MySQL存储引擎。NDB是一个分布式,具备兼容性、非共享的数据库,提供同步复制以及节点间的数据自动分片。(《高性能MySQL》)
在这里插入图的撒大大片描述

MySQL Cluster基本架构

  • 管理节点(ndb_mgmd)
    负责管理其他各节点IP地址、内存分配以及保存数据路径;
  • 数据节点(ndbd)
    负责存储数据;
  • SQL节点(mysqld)
    提供SQL 的API调用功能,简单地讲就是mysqld服务器
    其中管理节点最好单独部署,数据节点和SQL节点可以部署在一起;

准备工作

安装包下载

链接: https://dev.mysql.com/downloads/cluster/7.5.html#downloads.
如下图所示:
在这里插入图片描述

集群规划

节点IP
管理节点192.168.10.8
数据节点192.168.10.9
数据节点192.168.10.19
SQL节点192.168.10.9
SQL节点192.168.10.19

建议采用内网IP,使用外网IP需要考虑host以及网卡设置等情况,需要提前完成配置

彻底卸载mysql

需要将以上各IP中msyql服务彻底卸载,包括关闭mysql相关服务、卸载软件以及删除与mysql相关的文件;

端口开放

集群中个节点需要开放相应端口,MySQL Cluster所用端口为11862202,mysql端口为3306

集群搭建

管理节点

MySQL Cluster 软件安装

解压缩安装包后,复制到指定位置

[root@10 ~]# cd /home
[root@10 home]# gunzip mysql-cluster-gpl-7.5.20-linux-glibc2.12-x86_64.tar.gz
[root@10 home]# tar -xvf mysql-cluster-gpl-7.5.20-linux-glibc2.12-x86_64.tar
[root@10 home]# mkdir /usr/local/mysql-cluster
[root@10 home]# mv mysql-cluster-gpl-7.5.20-linux-glibc2.12-x86_64/* /usr/local/mysql-cluster

添加用户权限

添加安装需要相关用户权限

[root@10 home]# groupadd mysql
[root@10 home]# useradd mysql -g mysql
[root@10 home]# cd /usr/local/mysql-cluster/
[root@10 mysql-cluster]# chown -R root .

管理程序拷贝

[root@10 mysql-cluster]# cp bin/ndb_mgm* /usr/local/bin
[root@10 mysql-cluster]# cd /usr/local/bin
[root@10 mysql-cluster]# chmod +x ndb_mgm*

配置文件

新建管理节点的配置文件config.ini

[root@10 mysql-cluster]# cd /var/lib/mysql-cluster/
[root@10 mysql-cluster]# touch config.ini
[root@10 mysql-cluster]# vim config.ini

config.ini配置内容为:

[NDBD DEFAULT]
NoOfReplicas =2
DataMemory = 512M
IndexMemory = 64M
[NDB_MGMD]
NodeId=1
hostname =192.168.10.8
datadir =/var/lib/mysql-cluster
[NDBD]
NodeId =2
hostname =192.168.10.9
datadir =/usr/local/mysql-cluster/data
[NDBD]
NodeId =3
hostname =192.168.10.19
datadir =/usr/local/mysql-cluster/data
[mysqld]
NodeId =4
hostname =192.168.10.9
[mysqld]
NodeId =5
hostname =192.168.10.19

其中:
[NDBD DEFAULT]
代表每个ndbd节点的默认设置,包括:

  • NoOfReplicas :每份数据在不同节点上的存储份数,根据实际情况确定
  • DataMemory :数据存储占用内存
  • IndexMemory : 索引存储占用内存

[NDB_MGMD]
代表管理节点的设置,包括:

  • NodeId:节点ID
  • hostname:管理节点IP地址,推荐采用内网IP
  • datadir:管理节点数据存储位置

[NDBD]
代表ndb数据节点的配置,包括:

  • NodeId:节点ID
  • hostname:数据节点IP地址,推荐采用内网IP
  • datadir:数据节点数据存储位置

[msyqld]
代表SQL节点的设置,包括:

  • NodeId:节点ID
  • hostname:SQL节点IP地址,推荐采用内网IP

管理节点启动

[root@10 mysql-cluster]# /usr/local/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial --ndb-nodeid=1
MySQL Cluster Management Server mysql-5.7.32 ndb-7.5.20

显示MySQL Cluster Management Server mysql-5.7.32 ndb-7.5.20则代表安装正确
查看管理节点运行情况:

[root@10 ~]# /usr/local/bin/ndb_mgm -e show
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 (not connected, accepting connect from 192.168.10.9)
id=3 (not connected, accepting connect from 192.168.10.19)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.10.8  (mysql-5.7.32 ndb-7.5.20)
[mysqld(API)] 2 node(s)
id=4 (not connected, accepting connect from 192.168.10.9)
id=5 (not connected, accepting connect from 192.168.10.19)

由于数据节点和sql节点尚未启动,所以看不到节点信息
管理节点初始化之后,再启动就不需要–initial后缀,管理节点的关闭命令为:

/usr/local/bin/ndb_mgm -e shutdown

常见问题

  1. 找不到相关目录:新建相关目录
  2. hostname无法连接:请确认IP地址是否可用,并且能够网卡配置与host配置支持使用该IP地址

数据节点

MySQL Cluster 软件安装

解压缩安装包后,复制到指定位置,与管理节点一致

[root@10 ~]# cd /home
[root@10 home]# gunzip mysql-cluster-gpl-7.5.20-linux-glibc2.12-x86_64.tar.gz
[root@10 home]# tar -xvf mysql-cluster-gpl-7.5.20-linux-glibc2.12-x86_64.tar
[root@10 home]# mkdir /usr/local/mysql-cluster
[root@10 home]# mv mysql-cluster-gpl-7.5.20-linux-glibc2.12-x86_64/* /usr/local/mysql-cluster

添加用户权限

[root@10 home]# groupadd mysql
[root@10 home]# useradd mysql -g mysql

配置文件

由于本文中数据节点与SQL节点共用一台机器,所以配置文件my.cnf中既有数据节点配置也有SQL节点配置

[root@10 home]# vim /etc/my.cnf

my.cnf

[mysqld]
basedir=/usr/local/mysql-cluster
datadir=/usr/local/mysql-cluster/data
socket=/usr/local/mysql-cluster/sock/mysql.sock
user=mysql
symbolic-links=0
ndbcluster
ndb-connectstring=192.168.10.8
port=3306

[mysql_cluster]
ndb-connectstring=192.168.10.8

[ndbd]
ndb-connectstring=192.168.10.8

[mysqld_safe]
log-error=/usr/local/mysql-cluster/logs/mysql.pid
pid-file=/usr/local/mysql-cluster/logs/error.log

[mysql]
socket=/usr/local/mysql-cluster/sock/mysql.sock
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

其中,需要注意的配置为:
datadir:需要与管理节点config.ini中的数据节点datadir保持一致
ndb-connectstring:配置文件中都设置为管理节点IP地址

数据节点启动

[root@10 mysql-cluster]# ./bin/ndbd --initial
2021-01-08 15:38:44 [ndbd] INFO     -- Angel connected to '192.168.10.8:1186'
2021-01-08 15:38:44 [ndbd] INFO     -- Angel allocated nodeid: 3

数据节点初始化后,之后再次启动就不需要–initial后缀

回到管理节点,查看集群状态,发现数据节点已经连接

[root@10 ~]# /usr/local/bin/ndb_mgm -e show
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 (not connected, accepting connect from 192.168.10.9)
id=3    @192.168.10.19  (mysql-5.7.32 ndb-7.5.20, starting, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.10.8  (mysql-5.7.32 ndb-7.5.20)
[mysqld(API)] 2 node(s)
id=4 (not connected, accepting connect from 192.168.10.9)
id=5 (not connected, accepting connect from 192.168.10.19)

常见问题

  1. 找不到相关文件和文件夹:新建相关文件和文件夹
  2. IP地址无法连接:查看管理节点和数据节点本身网卡设置与端口开放情况

SQL节点

由于本文中数据节点与SQL节点部署在同一台机器上,所以不需要再进行软件安装,配置文件也已经配置完成

添加用户权限

[root@10 home]# cd /usr/local/mysql-cluster/
[root@10 mysql-cluster]# mkdir logs
[root@10 mysql-cluster]# mkdir data
[root@10 mysql-cluster]# chown -R mysql:mysql ./

根据配置文件创建相关文件夹,本文为了方便直接将log和data文件都建立在安装目录下,建议实际使用时修改位置,但是各文件夹都需要增加mysql用户权限

msyqld服务初始化

需要对mysqld服务进行初始化操作

[root@10 mysql-cluster]# ./bin/mysqld --initialize --user=mysql

初始化操作需要一定时间执行,执行完成后末尾会有初始密码,改密码为需要记录
初始化完成后,将mysql程序复制到启动目录下,方便mysqld服务启动

[root@10 mysql-cluster]# cp support-files/mysql.server /etc/init.d/mysqld
[root@10 mysql-cluster]# chmod +x /etc/init.d/mysqld
[root@10 mysql-cluster]# service mysqld start
Starting MySQL.... SUCCESS!

回到管理节点,查看集群状态,发现数据节点已经连接

在这里插入代码片
[root@10 ~]# /usr/local/bin/ndb_mgm -e show
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2    @192.168.10.9  (mysql-5.7.32 ndb-7.5.20, starting, Nodegroup: 0)
id=3    @192.168.10.19  (mysql-5.7.32 ndb-7.5.20, starting, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.10.8  (mysql-5.7.32 ndb-7.5.20)
[mysqld(API)] 2 node(s)
id=4 (not connected, accepting connect from 192.168.10.9)
id=5	 @192.168.10.19  (mysql-5.7.32 ndb-7.5.20)

常见问题

  1. 必须启动全部数据节点才能启动SQL节点,否则连接不上
  2. mysqld初始化时需要data目录为空
  3. 出现缺少文件、目录错误时建议新建相关文件、文件夹

集群启停

启动顺序为:1.管理节点;2.数据节点(全部);3.SQL节点

测试

在SQL节点通过mysqld服务修改密码并开启远程访问权限,通过navicat工具测试集群是否正常工作
在这里插入图片描述

参考

链接: https://blog.csdn.net/csolo/article/details/87086086.
链接: https://blog.csdn.net/qq_36807862/article/details/81289143.

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MySQL 分布式集群一般采用主从复制或者多主复制的方式进行。下面我来介绍一下具体的步骤: 1. 安装 MySQL 软件 在每个节点上安装 MySQL 软件,可以选择官网下载二进制安装包或者使用 yum/apt-get/aptitude 等软件包管理器进行安装。 2. 配置 MySQL 主从复制或多主复制 - 主从复制:将一个 MySQL 节点作为主节点,其他节点作为从节点。主节点上的数据修改会被同步到从节点上。 - 多主复制:每个节点都是主节点和从节点。当一个节点上的数据修改时,会同步到其他节点上。 具体配置步骤可以参考 MySQL 官方文档。 3. 同步数据 在主从复制中,需要将主节点上的数据同步到从节点上。可以使用 mysqldump 工具备份主节点上的数据,然后在从节点上使用 mysql 命令进行导入。 在多主复制中,每个节点都需要同步其他节点上的数据。可以使用 Galera Cluster、Percona XtraDB Cluster 等工具进行同步。 4. 配置负载均衡 当有多个 MySQL 节点时,可以使用负载均衡器进行流量分发,以提高集群的性能和可靠性。常用的负载均衡器有 HAProxy、Nginx 等。 5. 测试集群 在集群搭建完成后,需要进行测试以确保集群的正常运行。可以通过在不同节点上进行数据操作、故障模拟等方式进行测试。 以上是 MySQL 分布式集群的大致步骤,具体操作还需要根据实际情况进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值