11 - PXC集群|MySQL存储引擎

PXC集群|MySQL存储引擎

  • 数据库系列文章
  • PXC集群
    • 配置集群
    • 测试集群
  • MySQL存储引擎
    • 存储引擎介绍
      • mysql服务体系结构
      • mysql服务的工作过程
        • 处理查询访问的工作过程
        • 处理存储insert访问的工作过程
      • 什么是搜索引擎
    • 存储引擎管理
      • 查看存储引擎
      • 修改存储引擎
    • 存储引擎特点
      • myisam存储引擎特点
      • innodb存储引擎特点
    • 事务
      • 事务的特性(ACID 表的存储引擎必须是innodb 才有事务)
    • 事务回滚

数据库系列文章

1 - 数据库服务概述 | 构建MySQL服务 | 数据库基本管理 | MySQL基本类型
2 - 表结构 | MySQL键值
3 - 字段约束|MySQL索引|MySQL用户管理
4 - 基础查询进阶|连接查询
5 - 视图|存储过程
6 - 数据备份与恢复|innobackupex
7 - MySQL主从同步|主从同步模式
8 - MySQL数据读写分离|MySQL多实例
9 - 数据分片概述|部署MyCat服务
10 - MHA集群概述|部署MHA集群
11 - PXC集群|MySQL存储引擎

PXC集群

用来实现mysql服务高可用集群的软件 (MHA配置比较复杂 必须要有vip地址)
是基于Galera的mysql高可用集群解决方案

在这里插入图片描述
在这里插入图片描述
SST全量同步 完全备份文件

在这里插入图片描述

配置集群

在这里插入图片描述
在这里插入图片描述

  • 修改配置文件
# 指定集群中的server-id
vim /etc/percona-xtradb-cluster.conf.d/mysqld.cnf

编号不能一样
在这里插入图片描述

  • 指定集群信息 三台机器都要修改
    在这里插入图片描述
# 修改71主机的wsrep.cnf 文件
vim /etc/percona-xtradb-cluster.conf.d/wsrep.cnf
# 修改72主机的wsrep.cnf 文件
# 修改73主机的wsrep.cnf 文件

在这里插入图片描述
任意一台服务器上执行初始化集群操作(仅需要执行一遍)统一在71主机操作
在这里插入图片描述

  • 在其他2台服务器上执行
    启动数据库服务
    会自动同步71主机的授权用户及管理员root密码
systemctl start mysql # 启动数据库服务

服务端口

netstart -utnlp |grep :3306
netstart -utnlp | grep :4567

测试集群

第一步 连接集群中的任意主机存取数据

第二步 集群中只要有一台数据库服务器是正常工作的就能提供存取功能
停止任意2台数据库服务,都可以访问剩下的一台数据库服务器存取数据

systemctl stop  mysql@bootstrap.service

在这里插入图片描述
在这里插入图片描述

第三步 宕机的服务器启动后会自动加入集群并同步宕机期间的数据
在这里插入图片描述
在这里插入图片描述

MySQL存储引擎

存储引擎介绍

mysql服务体系结构

在这里插入图片描述

共有8个功能模块
1.连接池 验证客户端连接时使用的用户名和密码是否正确 同时验证数据库服务器是否有mysqld进程相应的连接
2.SQL接口 把用户执行的sql命令传递给本地的mysqld进程
3.分析器 检查sql命令的语句及对数据的访问权限
4.优化器 对要执行的sql命令做优化(是内存自动功能程序)
5.查询缓存(默认没有开启)使用操作系统的内存空间查询查找过的数据 划分出一定的物理内存空间给Mysql服务存储查找过的数据
6.存储引擎 软件自带的功能程序 没种存储引擎都有各自的功能和数据存储方式 当客户端访问的数据在数据库服务器的硬盘的时候,存储引擎就会对数据做处理 说白就是 数据库服务 给用户提供的功能分类(比如 在表创建外建就必须使用innodb存储引擎)对表里的数据做查询(select)或写(insert/update/delete)会调用存储引擎对表中的数据做处理,至于如何处理取决于表使用的存储引擎的功能
7.文件系统 指定就是存储设置(通常就是服务器的硬盘)
8.管理工具 安装软件后 提供的管理命令

mysql服务的工作过程

处理查询访问的工作过程

第一步:客户端向服务器发起连接请求
第二步:服务器接收到客户端连接请求并响应
第三步:如果客户端执行的select访问,先在查询缓存里提取数据回复给客户端,如果数据库服务器在查询缓存里没有找到用户访问的数据,这时就要到数据库服务器的表里查找数据,对数据库目录下的表做访问就会调用表使用的存储引擎对表做处理 然后把查找的数据先存放到查询缓存,在回复给客户端
第四步:断开连接


在数据库查看与缓存相关的配置项 默认就没有启用查询缓存
在这里插入图片描述


处理存储insert访问的工作过程

第一步:客户端向服务器发起连接请求
第二步:服务器接收到客户端连接请求响应
第三步:根据表使用的存储引擎,对表中的数据做对应的处理
第四步:断开连接

什么是搜索引擎

当对表里的数据做selectinsert访问时,会根据表使用的存储引擎对数据做处理。
在这里插入图片描述

存储引擎管理

查看存储引擎

  • 查看数据库服务器支持的存储引擎和默认使用的存储引擎
mysql> show engines;

在这里插入图片描述
在这里插入图片描述

  • 查看当前已有表使用的存储引擎

修改存储引擎

  • 修改数据库服务默认使用的存储引擎 建表时不指定存储引擎 用默认的存储引擎
vim /etc/my.cnf

在这里插入图片描述
在这里插入图片描述

  • 建表时指定表使用的存储引擎
mysql> create table db10.b(name char(10)) engine = innodb;
mysql> create table db10.b(name char(10)) engine = memory;

在这里插入图片描述

说明:innodb存储的表 每个表对应2个表文件

  • 修改表使用的存储引擎(在表没有存储数据之前修改
    存储引擎修改了,存储数据的位置也会改变
mysql > alter table db10.c engine=myisam;

在这里插入图片描述

存储引擎特点

myisam存储引擎特点

支持表级锁,不支持事务、事务回滚、外键
每个表对应3个表文件
表名.frm 表头信息 mysql> desc 库.表
表名.MYI 表的索引信息 mysql > show index from 库.表
表名.MYD 存储表里的数据。mysql > select * from 库.表

innodb存储引擎特点

支持行级锁 支持事务、事务回滚、外键
每个表对应2个表文件
表名.frm 存储表头信息
表名.ibd 存储表的索引信息+表的数据信息。mysql > show index from 库.表 + mysql > select * from 库.表

说明:给表加锁,为了解决并发访问的冲突问题
锁粒度 : 给表加锁的范围
行级锁:仅仅对被访问的行分别加锁 没有被访问的行不加锁、
表级锁:不管访问的1行还是更多行 都会把整张表加锁
锁类型: 根据对数据的访问类型加锁。
读锁 :对数据做查询访问 又称为共享锁 加了读锁的表 允许多个访问同时查询一张表
写锁:又称为排它锁 或 互斥锁 对数据做写访问(写访问通常insert update delete) 加了写锁 只允许一个连接做写操作,后续的读和写都得等待 等待当前的写锁的释放后 才允许后续的查和写
在这里插入图片描述

事务

指的是一组不可分割的SQL操作
使用Innodb存储引擎的表才支持事务
事务处理可以用来维护数据的完整性,保证成批的SQL
语句要么全部执行,要么全部不执行
事务用来管理对数据的insert ,update,delete操作

事务的特性(ACID 表的存储引擎必须是innodb 才有事务)

Atomic:原子性 一个事务中的所有操作,要么全部完成,要么全部不完成
Consistency:一致性 在事务开始之前和事务结束以后,数据库的完整性不会被破坏 执行SQL命令时 敲回车前 成为事务开始之前 敲回车后 成为事务结束以后。
Isolation:隔离性 数据库允许多个并发事务同时对其数据进行读写和修改而互不影响 mysql服务是支持多并发的连接,同一时刻可以同时接收多个客户端的访问 如果访问的是innodb存储引擎的表,彼此不知道操作的是同一张表
Durability:持久性 事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失 执行回车后,事务就结束了,数据会永久有效

事务回滚

首先得关闭事务的自动提交
在这里插入图片描述

在这里插入图片描述
回滚数据时 回滚到指定位置,默认rollback是回滚所有操作
想把数据回滚到指定位置,必须定义保存点
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

canvas能压缩图片?

之前写过一篇使用命令行工具压缩图片的博文:使用yx-tiny命令行工具进行图片压缩,大家感兴趣可以去瞅一眼。 这篇简单说一下使用canvas压缩图片 其实思路很简单,我们选择了图片之后,会获取到对应的文件流对象,然后我们…

jvm复习,深入理解java虚拟机一:运行时数据区域

程序计数器(Program Counter Register) 它是程序控制流的指示器,简单来说,为了线程切换后能恢复到正确的执行位置,每条线程都需要有一个独立的程序计数器 Java虚拟机栈(Java Virtual Machine Stack&#xf…

【LeetCode每日一题】2809. 使数组和小于等于 x 的最少时间

2024-1-19 文章目录 [2809. 使数组和小于等于 x 的最少时间](https://leetcode.cn/problems/minimum-time-to-make-array-sum-at-most-x/)思路: 2809. 使数组和小于等于 x 的最少时间 思路: 获取两个列表的长度n,并初始化一个二维数组f&…

一种更快的Kmeans原理与实现

普通的k-means实现大多需要多轮迭代,一轮需要O(n * k)的复杂度,其中n是数据量,k是聚类的数量。观察到大部分地方的标准均值中的大多数距离计算都是冗余的。 所以Elkan-Kmeans通过三角不等式来优化这一过程,减少无效计算。 困难在于三角不等式给出了上界,但我们需要下界以…

我在提交代码的时候突然发现别人刚才提交了一点代码,我没有拉取导致问题,请问怎么解决

问: 回答: 问: 我跟随输入git pull ,然后又以下提示: Merge branch systemPower_dev of https://xxxx.com into xxxx_dev # Please enter a commit message to explain why this merge is necessary, # especially if it merges an updated upstream into a topic branch. …

SELF自动化指令集构建代码实现

SELF-Instruct paper: 2022.12, SELF-INSTRUCT: Aligning Language Model with Self Generated Instructions https://github.com/yizhongw/self-instruct https://github.com/tatsu-lab/stanford_alpaca#data-generation-process 一语道破天机:类似非线性插值&a…

plt.animation绘制动画

目录 一:介绍 二:创建线动画 一:介绍 matplotlib.animation 是 Matplotlib 库中的一个模块,用于创建动画。它提供了多种工具和函数,使您能够轻松地创建各种类型的动画。 二:创建线动画 import numpy as…

【Linux】第三十站:进程间通信

文章目录 一、是什么二、为什么三、怎么办四、管道1.什么是管道2.管道的原理3.接口4.编码实现5.管道的特征6.管道的四种情况 一、是什么 两个或者多个进程实现数据层面的交互 因为进程独立性的存在,导致进程通信的成本比较高 通信是有成本的,体现在要打破…

【禅道】的介绍及安装使用

文章目录 一、禅道入门1.1 概述1.2 特点1.2.1 私有化部署(禅道):1.2.2 SaaS云部署(云禅道): 1.3 安装1.4 启动禅道 二、禅道的使用2.1 编辑公司信息2.2 搭建组织架构2.2.1 创建部门2.2.2 增加员工 2.2 产品…

Solana Mobile开启第二代Saga手机预售,怎么购买Solana Mobile?

PANews 1月17日消息,Solana Mobile官方宣布开启其第二代Saga手机(Chapter 2)的预售,预购押金为450美元,预计将于2025年上半年发货。同时,Chapter 2的发售将会包括推荐(Referrals)和积…

用MATLAB函数在图表中建立模型

本节介绍如何使用Stateflow图表创建模型,该图表调用两个MATLAB函数meanstats和stdevstats。meanstats计算平均值,stdevstats计算vals中值的标准偏差,并将它们分别输出到Stateflow数据平均值和stdev。 请遵循以下步骤: 1.使用以下…

sql570 | 至少有5名下属的经理 | join on | group by | having

讲给一张表,表字段分别为 id 、姓名、部分、经理id,可能存在张三既是下属也是经理 现在找出下属起码有5名员工的经理 CREATE TABLE Employee (id INT,name VARCHAR(255),department VARCHAR(255),managerId INT );INSERT INTO Employee (id, name, depar…

数据库的内连接和外连接

数据库的内连接和外连接 内连接: 两个或两个以上的表进行关联查询时,查询的结果集中 返回所有满足连接条件的行。 外连接: 两个或两个以上的表进行关联查询时,查询的结果集中 除了返回满足连接条件的行以外,还返回左(或右&…

rabbitmq的介绍、使用、案例

1.介绍 rabbitmq简单来说就是个消息中间件,可以让不同的应用程序之间进行异步的通信,通过消息传递来实现解耦和分布式处理。 消息队列:允许将消息发到队列,然后进行取出、处理等操作,使得生产者和消费者之间能够解耦&…

scratch打蝙蝠 2023年12月中国电子学会 图形化编程 scratch编程等级考试二级真题和答案解析

目录 scratch打蝙蝠 一、题目要求 1、准备工作 2、功能实现 二、案例分析

基于SpringBoot Vue博物馆管理系统

大家好✌!我是Dwzun。很高兴你能来阅读我,我会陆续更新Java后端、前端、数据库、项目案例等相关知识点总结,还为大家分享优质的实战项目,本人在Java项目开发领域有多年的经验,陆续会更新更多优质的Java实战项目&#x…

Qt拖拽组件与键盘事件

1.相关说明 1.设置widget或view的拖拽和放置模式函数setDragDropMode参数说明,NoDragDrop(无拖拽和放置)、DragOnly(只允许拖拽)、DropOnly(只允许放置)、DragDrop(允许拖拽和放置)、InternalMove(只移动不复制) 2.设置widget或view的放置动作函数setDefaultDropAct…

MacOS X 安装免费的 LaTex 环境

最近把工作终端一步步迁移到Mac上来了,搭了个 Latex的环境,跟windows上一样好用。 选择了 Mactex 做编译,用 Texmaker 做编辑; 1. 下载与安装 1.1 Mactex 下载安装 MacOS 安装和示例 LaTex 的编译器 与 编辑器 编译器使用免费…

Cocos在VsCode中调试-端口安全问题 net::ERR_UNSAFE_PORT

问题: POST http://127.0.0.1:6000/api/login net::ERR_UNSAFE_PORT 原因: 这个错误表明你在尝试使用一个被认为是不安全的端口进行网络请求。通常情况下,浏览器会限制使用一些特定的端口,因为它们被认为是潜在的安全风险。 在这种情况下&a…

IO、NIO、IO多路复用

IO是什么? IO分为两类,它们之间是有区别的,而且有很大的区别;1. 文件系统的IO 也叫本地io,就是和磁盘或者外围存储设备进行读写操作,外围设备有USB、移动硬盘等等;2. 网络的IO 将数据发送给对方…