MySQL—MySQL架构

MySQL逻辑架构图如下:

  • Connectors连接器:负责跟客户端建立连接;
  • Management Serveices & Utilities系统管理和控制工具
  • Connection Pool连接池:管理用户连接,监听并接收连接的请求,转发所有连接的请求到线程管理模块;
  • SQL Interface SQL接口:接受用户的SQL命令,并且返回SQL执行结果;
  • Parser解析器:SQL传递到解析器的时候会被解析器验证和解析;
  • Optimizer查询优化器:SQL语句在查询之前会使用查询优化器对查询进行优化,explain语句查看的SQL语句执行计划,就是由此优化器生成;
  • Cache和Buffer查询缓存:在MySQL5.7中包含缓存组件,在MySQL8中移除了;
  • Pluggable Storage Engines存储引擎:存储引擎就是存取数据、建立与更新索引、查询数据等技术的实现方法。

MySQL日志文件

MySQL是通过文件系统对数据索引后进行存储的,MySQL从物理结构上可以分为日志文件和数据及索引文件。MySQL在Linux中的数据索引文件和日志文件通常放在/var/lib/mysql目录下。MySQL通过日志记录了数据库操作信息和错误信息。

常用日志文件如下:

  1. 错误日志:/var/log/mysql-error.log
  2. 二进制日志:/var/lib/mysql/mysql-bin
  3. 查询日志: general_query.log
  4. 慢查询日志: slow_query_log.log
  5. 事务重做日志: redo log
  6. 中继日志: relay log
  7. undo log
  8. ....

可以通过以下命令,来查看日志使用信息:

show variables like 'log_%';

错误日志:error log

  • 默认开启,记录运行过程中所有严重的错误信息,及每次启动和关闭的详细信息;
  • 通过log_error和log_warnings配置
    • log_error:指定存储位置;
    • log_warnings:配置警告信息级别
      • log_warnings= 0:不记录告警日志
      • log_warnings= 1:告警信息写入错误日志
      • log_warnings 大于 1:表示各类告警信息,例如:有关网络故障的信息和重新连接信息写入错误日志。

配置

vim /etc/my.cnf

添加如下内容:

# 错误日志
log_error=/var/log/mysql-error.log
log_warnings=2

重启MySQL

systemctl restart mysqld

二进制日志bin log

二进制日志bin log默认是关闭的,需要通过配置来开启,可以记录数据库所有的DDL语句和DML语句,不包括DQL语句。

binlog主要用于实现mysql主从复制、数据备份、数据恢复。

配置中mysql-bin是binlog日志文件的basename,binlog日志文件的完整名称: mysql-bin.000001。

server_id=1
log-bin=mysql-bin

通用查询日志general query log

默认关闭,由于通用查询日志会记录用户的所有操作,其中还包含增删查改等信息,在并发操作大的环境下会产生大量的信息从而导致不必要的磁盘IO,会影响MySQL的性能。如果不是为了调试数据库,不建议开启查询日志。

#启动开关
general_log={ON|OFF}
#日志文件变量,而general_log_file如果没有指定,默认名是host_name.log
general_log_file=/var/lib/mysql/机器host_name.log

慢查询日志slow query log

默认关闭,通过以下设置开启。记录执行时间超过long_query_time秒的所有查询,便于收集查询时间比较长的SQL语句。

开启配置:

#开启慢查询日志
slow_query_log=ON
# 慢查询的阈值,单位秒
long_query_time=10
#日志记录文件
#如果没有给出fi1e_name值,默认为主机名,后缀为-s1ow.log。
#如果给出了文件名,但不是绝对路径名,文件则写入数据目录。
s1ow_query_log_file=slow_query_log.1og

查看阈值:

show global status 1ike '%s1ow_queries%';
show variables like '%slow_query%' ;
show variab1es like 'long_query_time%';

MySQL数据文件

查看MySQL数据文件

show variables like  '%datadir%';

我之前建立了一个sjdwz_test库,库中有表tab_test使用的是是InnoDB存储引擎,有表myisam_tab使用的是MyISAM存储引擎。

进入到刚才输出的数据文件目录:可以看到有一个sjdwz_test(库名)为名字的文件夹:

进入后,查看文件:

说明

ibdata文件:使用系统表空间存储表数据和索引信息,所有表共同使用一个或者多个ibdata文件。

  • InnonDB存储引擎的数据文件

    • 表名.frm文件:主要存放与表相关的元数据信息,包括:表结构的定义信息
    • 表名.ibd文件:一张表一个ibd文件,存储表数据和索引信息;
  • MyISAM存储引擎的数据文件
    • 表名.frm文件:主要存放与表相关的元数据信息,包括:表结构的定义信息
    • 表名.myd文件:主要存放数据;
    • 表名.myi文件:主要存放索引。

MySQL—MySQL架构的更多相关文章

  1. MySQL高级知识- MySQL的架构介绍

    [TOC] 1.MySQL 简介 概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而 ...

  2. MySQL 体系架构

    MySQL 体系架构 本篇文章是对mysql体系结构进行了详细的分析介绍,需要的朋友参考下 上面一图是mysql的概览图,我们从上往下看, 我们把上面一图一分为二,我们可以吧它分为两个部分, 1,是c ...

  3. MySQL 主从架构配置详解

    无论是哪一种数据库,数据的安全都是至关重要的,因此熟练掌握数据库的安全备份功能,是作为开发人员,特别是后端开发人员的一项必备技能.MySQL 数据库内建的复制功能,可以帮助我们对数据进行异地备份,读写 ...

  4. 高性能mysql主存架构

    原文:高性能mysql主存架构 MySQL Replication(Master与Slave基本原理及配置) 主从mysql工作原理: 1:过程: (1)Mysql的复制(replication)是一 ...

  5. CENTOS6.6下mysql MMM架构搭建

    本文来自我的github pages博客http://galengao.github.io/ 即www.gaohuirong.cn MMM(Master-Master replication mana ...

  6. Mysql基准测试详细解说(根据慕课网:《打造扛得住Mysql数据库架构》视频课程实时笔录)

    什么是基准测试 基准测试是一种测量和评估软件性能指标的活动用于建立某个时刻的性能基准,以便当系统发生软硬件变化时重新进行基准测试以及评估变化对性能的影响. 我们可以这样认为:基准测试是针对系统设置的一 ...

  7. MySQL逻辑架构概述

    1.MySQL逻辑架构 MySQL逻辑架构图 MySQL逻辑架构分四层 1.连接层:主要完成一些类似连接处理,授权认证及相关的安全方案. 2.服务层:在 MySQL据库系统处理底层数据之前的所有工作都 ...

  8. mysql MHA架构搭建过程

    [环境介绍] 系统环境:Red Hat Enterprise Linux 7 + 5.7.18 + MHA version 0.57 系统 IP 主机名 备注 版本 xx系统 192.168.142. ...

  9. CentOS6.8下MySQL MHA架构搭建笔记

    转载请注明出处,本文地址:http://www.cnblogs.com/ajiangg/p/6552855.html 以下是CentOS6.8下MySQL MHA架构搭建笔记 IP资源规划: 192. ...

  10. (8) MySQL主从复制架构使用方法

    一. 单个数据库服务器的缺点 数据库服务器存在单点问题 数据库服务器资源无法满足增长的读写请求 高峰时数据库连接数经常超过上限 二. 如何解决单点问题 增加额外的数据库服务器,组建数据库集群 同一集群 ...

随机推荐

  1. liunx 安装 python 虚拟环境, 各种方法,

    liunx 安装 python 虚拟环境,主要是要解决工作中需要用到python3.6,但是系统的2.7又不能动,安装系统组件时避免造成冲突.低版本的python安装django  uwsgi 等都用 ...

  2. Python面向对象之派生和组合

    [一]什么是派生 派生是指,子类继承父类,派生出自己的属性与方法,并且重用父类的属性与方法 [二]派生的方法 子类可以派生出自己新的属性,在进行属性查找时,子类中的属性名会优先于父类被查找 例如每个老 ...

  3. Obsidian 0.15.9 知识笔记 使用说明

    我感觉这个软件是一个非常好用的软件,经过初步体验. 全局搜索快捷键 Ctrl + Shift + F 打开快速切换快捷键 Ctrl + O 添加标签 #测试标签 反向链接 Obsidian支持反向链接 ...

  4. Nginx的负载均衡策略(4+2)

    Nginx的负载均衡策略主要包括以下几种: 轮询(Round Robin):每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除.这是Nginx的默认策略,适合服务器配置 ...

  5. 基于DSP的光纤麦克风声音采集系统硬件设计方案总结

    前记  光纤声传感器是一种利用光纤作为传光介质或探测单元的一类声传感器,相比传统电声传感器其具有灵敏度高.频带响应宽.抗电磁干扰等优越特性,可广泛应用于国防安全.工业无损检测.医疗诊断及消费电子等领域 ...

  6. 基于Apollo3 Blue MCU芯片的可穿戴产品解决方案开发之健康手环源码解析

    一 前记 健康手环是Apollo3 Blue的一个主打业务,也是该芯片最适合做的产品,在健康穿戴设备领域,该芯片有着对场景的透彻理解和技术的深厚积累. 二 源码分析 协议栈初始化: exactle_s ...

  7. linux使用hostapd+dnsmasq管理多张网卡,搭建dns服务器,并发射wifi热点(支持360wifi等等)

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明   本文发布于 2015-03-03 18:37:39 ...

  8. 【Unity渲染】一文看懂!Unity通用渲染管线URP介绍

    一.Unity通用渲染管线(URP) Unity 的渲染管线包含内置渲染管线.SRP.URP和HDRP.自从Unity2019.3开始,Unity将轻量级渲染管线修改为了通用渲染管线,这是一种快速.可 ...

  9. Excalidraw:绘制图形的新利器

    摘要: Excalidraw是一款简洁设计.直观易用的绘图应用,用户可以通过它创建流程图.示意图.架构图等各种图形.除了提供手绘效果外,Excalidraw还支持多人实时协作编辑,并提供端到端加密以确 ...

  10. Python实现简易版TCP代理

    什么是TCP代理 TCP代理是一种网络代理技术,它允许客户端和服务器之间通过一个位于中间的第三方TCP代理服务器进行通信.TCP代理的工作方式是客户端向代理服务器发送TCP连接请求,代理服务器将此请求 ...