本文介绍: 在MySQL实现集群Cluster架构中,存储节点使用存储引擎为NDB引擎。NDB引擎是一种分布式基于内存引擎,因此作为MySQL集群Cluster架构中的存储节点内存一定要足够大。

1.引言

1.1目的

部署MysqlCluster集群环境

1.2 MySQL集群Cluster原理

1. 数据分片

MySQL集群Cluster数据分成多个片段每个片段存储不同服务器上。这样可以数据负载分散到多个服务器上,提高系统性能可扩展性

2. 数据同步

MySQL集群Cluster使用多个服务器存储数据,因此需要确保数据在不同服务之间同步。MySQL集群Cluster使用多种同步机制,如异步复制、半同步复制和全同步复制等,来确保数据的一致性可靠性

3. 负载均衡

MySQL集群Cluster使用负载均衡算法分配客户端请求不同服务器上。这样可以避免单个服务器过载,提高系统性能可用性

4. 自动故障转移

MySQL集群Cluster可以自动检测服务器的故障,并将故障服务器上的数据转移到其他服务器上。这样可以确保系统高可用性可靠性

1.3 NDB引擎介绍

在MySQL实现集群Cluster架构中,存储节点使用存储引擎为NDB引擎。NDB引擎是一种分布式基于内存引擎,因此作为MySQL集群Cluster架构中的存储节点内存一定要足够大。

使用NDB引擎有以下优点:

1、基于内存存储,没有磁盘I/O瓶颈,速度快。
2、扩展性好,增加节点即可实现数据库集群Cluster的扩展
3、冗余性好,单个节点故障,集群还可以提供服务。

同时,NDB引擎也有以下缺点:

1、由于存储基于内存,因此在设备断电后数据即丢失
2、存储空间大小内存大小限制
3、多个节点分布式架构整体速度受会网络速度影响

1.4 InnoDB存储引擎

InnoDB是一种支持事务和行级锁的崇尚ACID特性的储存引擎。它是MySQL5.5版本后的默认引擎。InnoDB非常适合那些需要频繁进行更新操作应用比如在线事务处理系统(OLTP)。

使用InnoDB引擎有以下优点:

1、支持事务:InnoDB储存引擎具有事务处理能力能够保证数据的完整性和一致性
2、行级锁:InnoDB通过行级锁来控制并发读写操作提高多用户环境下的并发性能
3、外键约束:InnoDB支持外键约束,保证数据的完整性。
4、适合OLTP:InnoDB引擎特别适合处理大量的并发读写操作,如OLTP系统
5、Crash Recovery:InnoDB具备崩溃恢复功能能够异常退出后将数据恢复到一致的状态

同时,InnoDB引擎也有以下缺点:

1、 读写效率较差。
2、 占用的数据空间相对较大。

1.5 MyISAM存储引擎

MyISAM是MySQL早期的默认储存引擎,它采用表级锁,适合处理大量的读操作。然而,它不支持事务外键约束。

使用MyISAM引擎有以下优点:

1、表级锁:MyISAM采用表级锁,对于大量更新操作的并发性能较差。
2、不支持事务:MyISAM不支持事务处理,因此可能存在数据不一致的风险
3、全文索引:MyISAM支持全文索引,适合处理搜索引擎和全文搜索应用
4、插入性能:MyISAM在插入性能方面较好,对于大量的插入操作,性能较高。

同时,MyISAM引擎也有以下缺点:

1、不支持事务完整性和并发性。

1.6 引擎对比选择

InnoDB适用于大量的并发读写操作、需要事务处理外键约束的应用;MyISAM适用于大量的读操作、不需要事务处理外键约束的应用;NDB适用于并发实时性要求高的应用

2. 部署程序

2.1 部署环境

服务器作用 服务器名 服务器IP 系统版本
管理节点 master 192.168.5.137 Centos7
数据节点 slave1 192.168.5.150 Centos7
SQL节点 slave2 192.168.5.144 Centos7
SQL节点 slave3 192.168.5.152 Centos7

2.2 服务器环境准备

2.2.1 修改四台主机名
192.168.5.137上操作
hostnamectl set-hostname master

192.168.5.150上操作
hostnamectl set-hostname slave1

192.168.5.144上操作
hostnamectl set-hostname slave2

192.168.5.152上操作
hostnamectl set-hostname slave3
2.2.2 添加host文件
四台服务器同时添加内容

vim /etc/hosts
192.168.5.137 master
192.168.5.150 slave1
192.168.5.144 slave2
192.168.5.152 slave3
2.2.3 配置四台服务器免密登陆
192.168.5.137上操作

ssh-keygen -t rsa
ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.5.150
ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.5.144
ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.5.152

192.168.5.150上操作

ssh-keygen -t rsa
ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.5.137
ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.5.144
ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.5.152


192.168.5.144上操作

ssh-keygen -t rsa
ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.5.137
ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.5.150
ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.5.152

192.168.5.152上操作

ssh-keygen -t rsa
ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.5.137
ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.5.150
ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.5.144

至此四台服务器完成免密登陆准备工作完成

2.3 管理节点部署

2.3.1 管理节点原理

顾名思义,管理节点用来对其它节点进行管理。实际操作中,是通过一个叫做config.ini配置文件进行维护而起到管理的作用。该文件可以用来配置多少需要维护副本、需要在每个数据节点上为数据和索引分配多少内存、数据节点的位置、在每个数据节点上保存数据的磁盘位置、SQL节点的位置信息。管理节点只能有一个,配置要求不高。

2.3.2 创建工作目录
mkdir -p /usr/local/mysql
2.3.3 上传解压文件
cd /usr/local/mysql
rz -y
tar -zxvf mysql-cluster-8.0.25-linux-glibc2.12-x86_64.tar.gz
mv mysql-cluster-8.0.25-linux-glibc2.12-x86_64 mysql-cluster
2.3.4 创建管理目录
mkdir -p /var/log/mysql-cluster
mkdir -p /etc/mysql-cluster
2.3.5 配置目录
vim /etc/mysql-cluster/config.ini
[ndbd default]
#数据写入数量。1表示一份,1个数据节点
NoOfReplicas=1

[ndb_mgmd]
nodeid=1
#管理结点日志
datadir=/var/log/mysql-cluster
#管理结点的IP地址本机IP
HostName=192.168.5.137

###### data node options:           #存储结点
[ndbd]
HostName=192.168.5.150
DataDir=/data/mysql
#mysql数据存储路径
nodeid=2

# SQL node options:                 #关于SQL结点
[mysqld]
HostName=192.168.5.144
nodeid=3

[mysqld]
HostName=192.168.5.152
nodeid=4
2.3.6 初始化管理节点
/usr/local/mysql/mysql-cluster/bin/ndb_mgmd -f /etc/mysql-cluster/config.ini

在这里插入图片描述

2.3.7 查看集群状态
/usr/local/mysql/mysql-cluster/bin/ndb_mgm
ndb_mgm> show
 
发现管理节点已经启动,当数据节点以及SQL节点未启动显示的是not connected。

在这里插入图片描述

2.4 数据节点部署

2.4.1 数据节点原理

用来存放Cluster里面的数据,可以有多个数据节点。每个数据节点可以有多个镜像节点。任何一个数据节点发生故障,只要它的镜像节点正常,Cluster就可以正常运行
这3种逻辑不同的节点物理上可以存放不同的服务器上,也可以在同一台 服务器上。通过架构中各个节点的介绍,可以总结一下MySQL Cluter的访问过程前台应用利用一定的负载均衡法将数据库访问分散到不同的SQL节点上,然后SQL节点对数据节点进行数访问并从数据节点返回结果最后SQL节点将收到结果返给前台应用。而管理节点并不参与访问过长,它只用来对SQL节点和数据节点进行配置管理

2.4.2 创建工作目录
mkdir -p /usr/local/mysql
2.4.3 上传并解压文件
cd /usr/local/mysql
rz -y
tar -zxvf mysql-cluster-8.0.25-linux-glibc2.12-x86_64.tar.gz
mv mysql-cluster-8.0.25-linux-glibc2.12-x86_64 mysql-cluster
2.4.4 创建mysql用户
useradd -M -s /sbin/nologin mysql
2.4.5 创建mysql目录授权
mkdir -p /etc/mysql
mkdir -p /data/mysql
chown -R mysql:mysql /data/mysql/
2.4.6 配置数据节点
vim /etc/my.cnf

[mysqld]
#mysql数据存储路径
datadir=/data/mysql
#启动ndb引擎       
ndbcluster
#管理节点IP地址
ndb-connectstring=192.168.5.137

[mysql_cluster]
#管理节点IP地址
ndb-connectstring=192.168.5.137
2.4.7 启动数据节点
/usr/local/mysql/mysql-cluster/bin/ndbd –initial

在这里插入图片描述

2.4.8 检查数据节点是否启动
/usr/local/mysql/mysql-cluster/bin/ndb_mgm
ndb_mgm> show

在这里插入图片描述

2.5 SQL节点部署

2.5.1 SQL节点原理

SQL节点可以理解为应用和数据节点之间的一个桥梁。应用不能直接访问数据节点,只能先访问SQL节点,然后SQL节点再去访问数据节点来返回数据。Cluster中可以有多个SQL节点,通过每个SQL节点查询到的数据都是一直的,通常来说,SQL节点越多,分配到每个SQL节点的负载就越少,系统整体性能就越好。

2.5.1 创建工作目录
mkdir -p /usr/local/mysql
2.5.2 上传并解压文件
cd /usr/local/mysql
rz -y
tar -zxvf mysql-cluster-8.0.25-linux-glibc2.12-x86_64.tar.gz
mv mysql-cluster-8.0.25-linux-glibc2.12-x86_64 mysql-cluster
2.5.3 创建mysql用户
useradd -M -s /sbin/nologin mysql
2.5.4 创建mysql目录授权
mkdir -p /etc/mysql
mkdir -p /data/mysql
chown -R mysql:mysql /data/mysql/
2.5.5 创建SQL节点配置文件
vim /etc/my.cnf

[mysqld]
user=mysql
#启动ndb引擎
ndbcluster
#管理节点IP地址
ndb-connectstring=192.168.5.137

[mysql_cluster]
#管理节点IP地址
ndb-connectstring=192.168.5.137
2.5.6 配置mysql服务
cp /usr/local/mysql/mysql-cluster/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
2.5.7 编辑mysqld服务
vim /etc/init.d/mysqld

在这里插入图片描述

2.5.8 初始化mysql数据库
cd /usr/local/mysql/mysql-cluster/bin
./mysqld --initialize --user=mysql --basedir=/usr/local/mysql/mysql-cluster --datadir=/data/mysql/

在这里插入图片描述

2.5.9 启动mysql
systemctl daemon-reload
systemctl start mysqld

两台SQL节点操作相同
2.5.10 检查SQL节点是否启动
/usr/local/mysql/mysql-cluster/bin/ndb_mgm
ndb_mgm> show

在这里插入图片描述

3. 验证集群

192.168.5.144上创建ccxe库

在这里插入图片描述

192.168.5.152上验证

在这里插入图片描述

192.168.5.144上创建表

在这里插入图片描述

192.168.5.152上验证

在这里插入图片描述

可以看到数据完成同步。
至此MysqlCluster集群部署完成。

4. 集群命令操作

4.1 管理节点操作

管理节点关闭关闭管理节点后会一起关闭数据节点)

/usr/local/mysql/mysql-cluster/bin/ndb_mgm -e shutdown

如果集群配置有更新

rm /usr/local/mysql/mysql-cluster/ndb_1_config.bin.1

4.2 数据节点操作

数据节点(NDB)关闭

cd /usr/local/mysql/mysql-cluster/bin
./ndbd stop

4.3 SQL节点操作

SQL节点关闭

systemctl stop mysqld

原文地址:https://blog.csdn.net/hanyuce/article/details/134684116

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_41808.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注