MysqlCluster集群部署

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系统版本
管理节点master192.168.5.137Centos7
数据节点slave1192.168.5.150Centos7
SQL节点slave2192.168.5.144Centos7
SQL节点slave3192.168.5.152Centos7

2.2 服务器环境准备

2.2.1 修改四台主机名
192.168.5.137上操作
hostnamectl set-hostname master192.168.5.150上操作
hostnamectl set-hostname slave1192.168.5.144上操作
hostnamectl set-hostname slave2192.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.152192.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.152192.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.152192.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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/196970.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

layui+ssm实现数据表格双击编辑更新数据

layui实现数据表格双击编辑数据更新 在使用layui加载后端数据请求时,对数据选项框进行双击即可实现数据的输入编辑更改 代码块 var form layui.form, table layui.table,layer parent.layer undefined ? layui.layer : parent.layer,laypage layui.laypag…

ElasticSearch学习笔记(一)

计算机软件的学习,最重要的是举一反三,只要大胆尝试,认真验证自己的想法就能收到事办功倍的效果。在开始之前可以看看别人的教程做个快速的入门,然后去官方网站看看官方的教程,有中文教程固然是好,没有中文…

备忘录不小心删了怎么办?如何找回我的备忘录?

如果你的记性不太好,或者每天需要记住、完成的事情很多,那么养成随手记事的好习惯是非常有必要的。因为手机是每个成年人都会随身携带的电子设备,所以直接在手机上记录事情比较简单、便捷。而手机备忘录、便签、笔记等工具类软件,…

简单的界面与数据分离的架构

草图绘制于2021年2月19日 当时用到了:qt的子项目、delegate、view和widget的关系,有感而写的小备忘,2022年底考的软件设计师里面的设计模式虽然可能早已包含,但自己也得有自己啊,要把自己哪怕不成熟的东西也记录下来&…

HDFS客户端及API操作实验

实验二 HDFS客户端及API操作 实验目的: 1.掌握HDFS的客户端操作,包括上传文件、下载文件、重命名、查看目录等; 2.掌握HDFS的Java API使用,能够利用Java API实现上传、下载等常用操作; 实验内容: HDF…

fastadmin权限树。树形下拉框

fastadmin 笔记 权限树 在构造方法中编写相应的代码 值得一提的是,你的表必须有 id 字段以及 pid 字段。 // 必须将结果集转换为数组$ruleList \think\Db::name("state_list")->field(createtime,updatetime, true)->order(id ASC)->select();…

FTP服务文件上传失败,错误码553的排故过程

本文主要记录文件上传失败,错误码553的排故过程。 1 背景 树莓派通过FTP给嵌入式板卡传输文件,好几套设备,发现有的能传输成功,有的传输不成功。树莓派和嵌入式板卡都一样的,出现问题时感觉很懵。 2 逐项对比 2.1 自…

AF自动登录应用--实现无源码系统单点登录

在企业信息化的进程中,许多组织拥有一系列的老应用系统,这些系统在多年的运行中积累了大量的业务数据和流程。然而,这些老应用系统往往没有设计或实现单点登录(SSO)功能,用户需要在不同系统之间频繁输入账号…

C语言--每日选择题--Day35

第一题 1. 有如下定义:(x y) % 2 (int) a / (int) b 的值是() int x 3; int y 2;float a 2.5; float b 3.5; A:0 B:2 C:1.5 D:1 答案及解析 D 本题是考查强制类型转换和操作符优先级 操作…

Figma安装指南:新手入门必看!

如果您想下载Figma客户端,可以直接在Figma官网Products>Downloads页面下载。 如果你不能访问Figma的官方网站,即使下载到客户端,你的网络环境也不能正常使用。 因为Figma的服务器在国外,在国内访问时经常会遇到网络不稳定的情…

SAP 生产订单状态控制

对于生产订单状态,我们经常会对状态进行控制,比如说已领料报工的生产订单就不允许做重读主数据 或者是部分入库不允许做TECO等等 可以通过一个标准的事物代码进行对生产订单状态的一个控制 Tcode:BS22 选择你需要你控制的订单的状态编号双击…

西南科技大学模拟电子技术实验六(BJT电压串联负反馈放大电路)预习报告

一、计算/设计过程 BJT电压串联负反馈放大电路图1-1-1-1为BJT电压串联负反馈放大实验电路,若需稳定输出电压,减小从信号源所取电流,可引入电压串联负反馈闭合开关。 图1-1-1-1 理论算法公式(1)闭环电压放大倍数 (2)反馈系数 (3)输入电阻 (4)输出电阻 计算过程。开环…

51综合程序03-DS1302时钟

文章目录 DS1302时钟芯片一、DS1302时钟芯片的工作原理1. 芯片特点2. 引脚说明3. 寄存器地址4. 读数据的时序图5. 写数据的时序图 二、综合实例LCD1602显示 DS1302时钟芯片 一、DS1302时钟芯片的工作原理 1. 芯片特点 实时计算年、月、日、时、分、秒、星期,直到2…

FacetWP Hierarchy Select网站内容层次结构选择插件

点击阅读FacetWP Hierarchy Select网站内容层次结构选择插件原文 FacetWP Hierarchy Select网站内容层次结构选择插件可让您基于分层分类法创建引导下拉菜单。 FacetWP Hierarchy Select网站内容层次结构选择插件功能 通过引导式下拉菜单过滤结果,一次一个深度级…

【从零开始学习Redis | 第六篇】爆改Setnx实现分布式锁

前言: 在Java后端业务中, 如果我们开启了均衡负载模式,也就是多台服务器处理前端的请求,就会产生一个问题:多台服务器就会有多个JVM,多个JVM就会导致服务器集群下的并发问题。我们在这里提出的解决思路是把…

卷积神经网络(CNN):艺术作品识别

文章目录 一、前言一、设置GPU二、导入数据1. 导入数据2. 检查数据3. 配置数据集4. 数据可视化 三、构建模型四、编译五、训练模型六、评估模型1. Accuracy与Loss图2. 混淆矩阵3. 各项指标评估 一、前言 我的环境: 语言环境:Python3.6.5编译器&#xf…

HarmonyOS开发员,月薪过万不是梦

最近爆出消息,安卓与鸿蒙将不再兼容!这意味着华为已经搭建了完整的鸿蒙生态,不再需要依赖于安卓生态。据统计,鸿蒙生态设备已经达到了7亿台,开发者人数也达到了220万人 此外,华为对鸿蒙系统的性能和体验有…

语音识别从入门到精通——1-基本原理解释

文章目录 语音识别算法1. 语音识别简介1.1 **语音识别**1.1.1 自动语音识别1.1.2 应用 1.2 语音识别流程1.2.1 预处理1.2.2 语音检测和断句1.2.3 音频场景分析1.2.4 识别引擎(**语音识别的模型**)1. 传统语音识别模型2. 端到端的语音识别模型基于Transformer的ASR模型基于CNN的…

unity学习笔记18

模型文件属性简介 1.动画类型:一共有四种:无 表示没有动画,旧版 就表示这个模型文件里面的动画片段可以用animation组件来播放的,最后两个 ”泛型“和“人形”都是animator组件来播放的。区别是泛型支持所有类型的动画播放&#x…

浅析Hotspot的经典7种垃圾收集器原理特点与组合搭配

# 浅析Hotspot的经典7种垃圾收集器原理特点与组合搭配 HotSpot共有7种垃圾收集器,3个新生代垃圾收集器,3个老年代垃圾收集器,以及G1,一共构成7种可供选择的垃圾收集器组合。 新生代与老年代垃圾收集器之间形成6种组合&#xff0c…