11 - PXC集群|MySQL存储引擎

数据库系列文章

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是回滚所有操作
想把数据回滚到指定位置,必须定义保存点
在这里插入图片描述
在这里插入图片描述

隔离级别

脏读:看到了对方没有提交的数据 缺点:用户查到的数据 最终不一定会存储在数据库里 因为没有提交的事务 是可以回滚的。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 20
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值