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. Harbor 2.1.2 安装部署

    环境 首先需要准备好 Docker + Docker-Compose 环境,Docker 在 CentOS 7.x 的安装教程请参考 这篇文章,后续文章假设你已经安装好了上述环境. 安装 标准安装 首 ...

  2. vite ts 安装 js-cookie 库,vscode找不到类型说明(有波浪线),解决方案

    vite ts 安装 js-cookie 库,vscode找不到类型说明(有波浪线),解决方案 先安装库 https://www.npmjs.com/package/js-cookie 再安装类型 h ...

  3. vue table 里面 slot 的模板复用 slot-scope template v-for

    vue table 里面 slot 的模板复用 slot-scope template v-for 需求 经常在table里面要有自定义列,但是会有相同的自定义列,这个时候又不想写很多一样的templ ...

  4. vscode 点击 import 的对象 from 带有 @ 不能自动跳转 - 要配置 jsconfig.json

    问题 vscode 点击 import 的对象 from 带有 @ 不能自动跳转 - 要配置 jsconfig.json 答案 根目录 创建 jsconfig.json 20220808 更新 inc ...

  5. Python 的结构体函数 struct pack, unpack 用法详解

    一 python 结构体 * python struct 模块可以用来在存储二进制文件,广泛用在文件系统,网络连接领域. *  它可以用在c语言和python语言之间的数据的格式转换. 二  Pyth ...

  6. C语言中的强制转换

    许久没有遇到的问题   C语言真是博大精深,越使用它,就越发感觉到它的威力和恐怖,最近在做算法的时候,遇到了一个强转的错误,把人折腾的够受,这次要好好梳理一下了,希望下次不能再犯此类的问题. 强制转换 ...

  7. Oracle注入—报错注入

    Oracle注入-报错注入 1.Oracle报错注入知识扫盲 一.Oracle报错注入知识扫盲 报错注入 报错注入就是,输入的一些能让数据库出错的语句,数据库会把这个错误回显给我们 OK,,什么语句能 ...

  8. Linux快速入门(五)Linux系统管理

    top top命令相当于任务管理器.在top命令中,可以使用M,将进程列表按内存使用排序,使用P将进程列表按照CPU的使用情况排序,输入q退出. (1)第一行是任务队列信息,显示系统时间.运行时间.当 ...

  9. 说说你对vue的mixin的理解,有什么应用场景?

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 一.mixin是什么 Mixin是面向对象程序设计语言中的类,提供了方法的实现.其他类可以访问mixin类的方法而不必成为其子类 Mixi ...

  10. 记录--vue3优雅的使用element-plus的dialog

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 如何优雅的基于 element-plus,封装一个梦中情 dialog 优点 摆脱繁琐的 visible 的命名,以及反复的重复 dom. ...