![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MySQL
MySQL简介及使用
四月丶丶
越努力越幸运
展开
-
使用 BulkProcessor 批量导入mysql数据到Elasticsearch
1. pom文件<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.o原创 2020-11-24 18:59:37 · 801 阅读 · 1 评论 -
Sharding-JDBC实现分库分表+读写分离
1. 环境涉及的各个软件及版本centos-7.6mysql-5.7.31shardingsphere-4.1.02. 各个机器对应角色&作用&ip地址角色作用ipmaster1mysql集群主节点1,负责写数据192.168.8.160master2mysql集群主节点2,负责写数据192.168.8.161Slave1mysql集群从节点,对应master1,负责读数据192.168.8.162Slave2mysql集群原创 2020-09-26 23:16:44 · 786 阅读 · 4 评论 -
Sharding-JDBC配置详解-Yaml格式
1 数据分片dataSources: # 数据源配置 ds0: !!org.apache.commons.dbcp.BasicDataSource driverClassName: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/ds0 username: root password: ds1: !!org.apache.commons.dbcp.BasicDataSource driverCl原创 2020-09-25 22:52:50 · 2617 阅读 · 0 评论 -
分布式事务详解
1. 分布式事务理论1.1 CAP(强一致性)CAP 定理,又被叫作布鲁尔定理,理论含义是,一个分布式系统不可能同时满足一致性(C:Consistency),可用性(A: Availability)和分区容错 性(P:Partition tolerance)这三个基本需求,最多只能同时满足其中的2个。选项描述C 一致性分布式系统当中的一致性指的是所有节点的数据一致,或者说是所有副本的数据一致A 可用性Reads and writes always succeed. 也就是原创 2020-09-25 13:08:10 · 125 阅读 · 0 评论 -
搭建MySQL高可用架构集群环境(4台主机,1主、2从、1 MHA)
1. 集群架构要求1主,2从,1MHA首先实现一主两从的同步复制功能(采用半同步复制机制及并行复制)先查询主从库数据主库添加数据后,再次查询主从库数据查看log,是否显示半同步然后采用MHA实现主机出故障,从库能自动切换功能关闭主服务器,查看MHA服务器是否正常切换在切换后的主节点机器上查看状态展示效果在切换后的主节点机器数据库添加数据,分别查询主从库数据一致2. 环境软件版本及机器介绍centos-7.6mysql-5.7.31角色作用ip原创 2020-09-18 16:18:32 · 1270 阅读 · 1 评论 -
MySQL分库分表设计
1. 场景互联网系统需要处理大量用户的请求。比如微信日活用户破10亿,海量的用户每天产生海量的数量;美团外卖,每天都是几千万的订单,那这些系统的用户表、订单表、交易流水表等是如何处理呢?数据量只增不减,历史数据又必须要留存,非常容易成为性能的瓶颈,而要解决这样的数据库瓶颈问 题,“读写分离”和缓存往往都不合适,目前比较普遍的方案就是使用NoSQL/NewSQL或者采用分库分 表。使用分库分表时,主要有垂直拆分和水平拆分两种拆分模式,都属于物理空间的拆分。分库分表方案:只分库、只分表、分库又分表。垂原创 2020-09-18 14:56:23 · 420 阅读 · 0 评论 -
MySQL双主模式设计
1. 适用场景很多企业刚开始都是使用MySQL主从模式,一主多从、读写分离等。但是单主如果发生单点故障,从库 切换成主库还需要作改动。因此,如果是双主或者多主,就会增加MySQL入口,提升了主库的可用性。 因此随着业务的发展,数据库架构可以由主从模式演变为双主模式。双主模式是指两台服务器互为主 从,任何一台服务器数据变更,都会通过复制应用到另外一方的数据库中。建议使用双主单写,因为双主双写存在以下问题:ID冲突在A主库写入,当A数据未同步到B主库时,对B主库写入,如果采用自动递增容易发生ID主键原创 2020-09-18 14:00:17 · 576 阅读 · 0 评论 -
MySQL主从模式设计
1. 适用场景MySQL主从模式是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点。MySQL 默 认采用异步复制方式,这样从节点不用一直访问主服务器来更新自己的数据,从节点可以复制主数据库 中的所有数据库,或者特定的数据库,或者特定的表。mysql主从复制用途:实时灾备,用于故障切换(高可用)读写分离,提供查询服务(读扩展)数据备份,避免影响业务(高可用)主从部署必要条件:从库服务器能连通主库主库开启binlog日志(设置log-bin参数)主从server-i原创 2020-09-18 13:49:52 · 758 阅读 · 0 评论 -
MySQL锁机制详解
1. 锁分类从操作的粒度可分为表级锁、行级锁和页级锁。表级锁:每次操作锁住整张表。锁定粒度大,发生锁冲突的概率最高,并发度最低。应用在 MyISAM、InnoDB、BDB 等存储引擎中。行级锁:每次操作锁住一行数据。锁定粒度最小,发生锁冲突的概率最低,并发度最高。应 用在InnoDB 存储引擎中。页级锁:每次锁定相邻的一组记录,锁定粒度界于表锁和行锁之间,开销和加锁时间界于表 锁和行锁之间,并发度一般。应用在BDB 存储引擎中。从操作的类型可分为读锁和写锁。读锁(S锁):共享锁,原创 2020-09-13 18:17:36 · 108 阅读 · 0 评论 -
MySQL之MVCC
1. 简介多版本控制MVCC,也就是Copy on Write的思想。MVCC除了支持读和读并行,还支持读和写、写和读 的并行,但为了保证一致性,写和写是无法并行的。在事务1开始写操作的时候会copy一个记录的副本,其他事务读操作会读取这个记录副本,因此不会影 响其他事务对此记录的读取,实现写和读并行。2. MVCC概念MVCC(Multi Version Concurrency Control)被称为多版本控制,是指在数据库中为了实现高并发的 数据访问,对数据进行多版本处理,并通过事务的可见性来原创 2020-09-13 17:31:19 · 81 阅读 · 0 评论 -
MySQL索引优化
1. 回表查询InnoDB索引有聚簇索引和辅助索引。聚簇索引的叶子节点存储行记录,InnoDB必须要有,且只有一个。辅助索引的叶子节点存储的是主键值和索引字段值,通过辅助索引无法直接定位行记 录,通常情况下,需要扫码两遍索引树。先通过辅助索引定位主键值,然后再通过聚簇索引定位行记 录,这就叫做回表查询,它的性能比扫一遍索引树低。2. 覆盖索引只需要在一棵索引树上就能获取SQL所需的所 有列数据,无需回表,速度更快,这就叫做索引覆盖。实现索引覆盖最常见的方法就是:将被查询的字段,建立到组合索引。3.原创 2020-09-13 14:46:38 · 119 阅读 · 0 评论 -
MySQL索引分析 EXPLAIN 参数详解
1. 索引分析 EXPLAINMySQL提供了一个EXPLAIN 命令,它可以对 SELECT 语句进行分析,并输出 SELECT 执行的详细信 息,供开发人员有针对性的优化。EXPLAIN 命令的输出内容大致如下:以下是示例表结构,下面都参照这张表进行说明2. select_type表示查询的类型。常用的值如下:SIMPLE : 表示查询语句不包含子查询或unionPRIMARY:表示此查询是最外层的查询UNION:表示此查询是UNION的第二个或后续的查询UNIO原创 2020-09-13 12:27:39 · 423 阅读 · 0 评论 -
MySQL索引结构
MySQL官方对索引定义:是存储引擎用于快速查找记录的一种数据结构。需要额外开辟空间和数据维护工作。索引是物理数据页存储,在数据文件中(InnoDB,ibd文件),利用数据页(page)存储。索引可以加快检索速度,但是同时也会降低增删改操作速度,索引维护需要代价。1. Hash结构Hash底层实现是由Hash表来实现的,是根据键值 <key,value> 存储数据的结构。非常适合根据key查找value值,也就是单个key查询,或者说等值查询。其结构如下所示:从上面结构可以看出,原创 2020-09-13 11:30:26 · 58 阅读 · 1 评论 -
MySQL索引类型
索引可以提升查询速度,会影响where查询,以及order by排序。MySQL索引类型如下:从索引存储结构划分:B Tree索引、Hash索引、FULLTEXT全文索引、R Tree索引从应用层次划分:普通索引、唯一索引、主键索引、复合索引从索引键值类型划分:主键索引、辅助索引(二级索引)从数据存储和索引键值逻辑关系划分:聚集索引(聚簇索引)、非聚集索引(非聚簇索引)1. 普通索引这是最基本的索引类型,基于普通字段建立的索引,没有任何限制。 创建普通索引的方法如下:CREATE INDE原创 2020-09-13 11:14:47 · 60 阅读 · 0 评论 -
MySQL日志-Undo Log、Redo Log
1. Undo Log介绍Undo:意为撤销或取消,以撤销操作为目的,返回指定某个状态的操作。Undo Log:数据库事务开始之前,会将要修改的记录存放到 Undo 日志里,当事务回滚时或者数 据库崩溃时,可以利用 Undo 日志,撤销未提交事务对数据库产生的影响。Undo Log产生和销毁:Undo Log在事务开始前产生;事务在提交时,并不会立刻删除undo log,innodb会将该事务对应的undo log放入到删除列表中,后面会通过后台线程purge thread进 行回收处理。Undo原创 2020-09-13 10:59:00 · 221 阅读 · 0 评论 -
MySQL日志-Binlog
1. Binlog记录模式Redo Log 是属于InnoDB引擎所特有的日志,而MySQL Server也有自己的日志,即 Binary log(二进制日志),简称Binlog。Binlog是记录所有数据库表结构变更以及表数据修改的二进制 日志,不会记录SELECT和SHOW这类操作。Binlog日志是以事件形式记录,还包含语句所执行的 消耗时间。开启Binlog日志有以下两个最重要的使用场景。主从复制:在主库中开启Binlog功能,这样主库就可以把Binlog传递给从库,从库拿到 Binlog后实原创 2020-09-13 10:39:48 · 348 阅读 · 0 评论 -
InnoDB线程模型
1. IO Thread在InnoDB中使用了大量的AIO(Async IO)来做读写处理,这样可以极大提高数据库的性能。在 InnoDB1.0版本之前共有4个IO Thread,分别是write,read,insert buffer和log thread,后来 版本将read thread和write thread分别增大到了4个,一共有10个了。read thread : 负责读取操作,将数据从磁盘加载到缓存page页。4个write thread:负责写操作,将缓存脏页刷新到磁盘。4个lo.原创 2020-09-13 09:58:54 · 221 阅读 · 0 评论 -
InnoDB存储结构
1. 结构图从MySQL 5.5版本开始默认使用InnoDB作为引擎,它擅长处理事务,具有自动崩溃恢复的特性,在日常开发中使用非常广泛。下面是官方的InnoDB引擎架构图,主要分为内存结构和磁盘结构两大部分。2. InnoDB内存结构内存结构主要包括Buffer Pool、Change Buffer、Adaptive Hash Index和Log Buffer四大组件。2.1 Buffer Pool缓冲池,简称BP。BP以Page页为单位,默认大小16K,BP的底层采用链表数 据结构管理Page原创 2020-09-13 00:04:28 · 201 阅读 · 0 评论 -
MySQL存储引擎比较
1. 简介存储引擎在MySQL的体系架构中位于第三层,负责MySQL中的数据的存储和提取,是与文件打交道的 子系统,它是根据MySQL提供的文件访问层抽象接口定制的一种文件访问机制,这种机制就叫作存储引擎。使用show engines命令,就可以查看当前数据库支持的引擎信息。在5.5版本之前默认采用MyISAM存储引擎,从5.5开始采用InnoDB存储引擎。InnoDB:支持事务,具有提交,回滚和崩溃恢复能力,事务安全MyISAM:不支持事务和外键,访问速度快Memory:利用内存创建表,访原创 2020-09-12 23:39:45 · 78 阅读 · 0 评论 -
MySQL运行机制
运行机制流程图1. 建立连接(Connectors&Connection Pool),通过客户端/服务器通信协议与MySQL建立连 接。MySQL 客户端与服务端的通信方式是 “ 半双工 ”。对于每一个 MySQL 的连接,时刻都有一个 线程状态来标识这个连接正在做什么。通讯机制:全双工:能同时发送和接收数据,例如平时打电话。半双工:指的某一时刻,要么发送数据,要么接收数据,不能同时。例如早期对讲机单工:只能发送数据或只能接收数据。例如单行道线程状态:show pro.原创 2020-09-12 23:31:56 · 189 阅读 · 0 评论 -
MySQL体系架构
体系架构图MySQL Server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层。简略可以表示为下图一、网络连接层客户端连接器(Client Connectors):提供与MySQL服务器建立的支持。目前几乎支持所有主流 的服务端编程技术,例如常见的 Java、C、Python、.NET等,它们通过各自API技术与MySQL建立连接。二、服务层(MySQL Server)服务层是MySQL Server的核心,主要包含系统管理和控制工具、连接池、SQL接口、解析器、查询优.原创 2020-09-12 23:15:31 · 112 阅读 · 0 评论 -
CentOS 下安装 mysql-5.7.31
1. 下载tar.gz 格式的安装文件官网下载地址:https://dev.mysql.com/downloads/2. 上传安装文件到linux安装目录# cd /usr/local# tar -zxvf mysql-5.7.31-linux-glibc2.5-x86_64.tar.gz3. 更改解压后的文件夹名称# mv /usr/local/mysql-5.7.31-linux-glibc2.5-x86_64 /usr/local/mysql 4. 创建数据文件目录# cd /原创 2020-09-11 19:44:00 · 605 阅读 · 0 评论