学习笔记 : MySQL进阶篇一之架构和日志文件

embedded/2025/1/8 5:56:32/

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

可以通过命令查看当前数据库中的日志使用信息: --登录到mysql

show variables like 'log_%';
错误日志:error log

默认开启,错误日志记录了运行过程中遇到的所有严重的错误信息,以及 MySQL每次启动和关闭的详细信息。错误日志所记录的信息是可以通过log_error和log_warnings配置来定义的。从5.5.7以后不能关闭错误日志。

​ log_error:指定错误日志存储位置
​ log-warnings:是否将警告信息输出到错误日志中。
​ log_warnings 为0, 表示不记录告警信息。
​ log_warnings 为1, 表示告警信息写入错误日志。
​ log_warnings 大于1, 表示各类告警信息,例如:有关网络故障的信息和重新连接信息写入
错误日志。

log_error=/var/log/mysql-error.log
log_warnings=2
二进制日志:bin log

默认关闭,需要通过以下配置进行开启。binlog记录了数据库所有的ddl语句和dml语句,但不包括select语句内容,语句以事件的形式保存,描述了数据的变更顺序,binlog还包括了每个更新语句的执行时间信息。如果是DDL语句,则直接记录到binlog日志,而DML语句,必须通过事务提交才能记录到binlog日志中。

binlog主要用于实现mysql主从复制、数据备份、数据恢复
配置中mysql-bin是binlog日志文件的basename,binlog日志文件的完整名称:mysql-bin.000001。

server_id=42
log-bin=mysql-bin
通用查询日志:general query log

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

# 查询通用查询日志变量信息
show global variables like '%general_log%';#开启方式:
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语句。

#查看当前配置
show global status like '%Slow_queries%';
show variables like '%slow_query%';
show variables like 'long_query_time%';#配置开启
# 开启慢查询日志
slow_query_log=ON
# 慢查询的阈值,单位秒
long_query_time=10
# 日志记录文件
# 如果没有给出file_name值, 默认为主机名,后缀为-slow.log。
# 如果给出了文件名,但不是绝对路径名,文件则写入数据目录。
slow_query_log_file=slow_query_log.log
MySQL数据文件

查看MySQL数据文件:

show variables like '%datadir%';

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

InnoDB存储引擎的数据文件:
.frm文件:主要存放与表相关的数据信息,主要包括表结构的定义信息
.ibd:使用独享表空间存储表数据和索引信息,一张表对应一个ibd文件。
MyISAM存储引擎的数据文件:
.frm文件:主要存放与表相关的数据信息,主要包括表结构的定义信息
.myd文件:主要用来存储表数据信息。
.myi文件:主要用来存储表数据文件中任何索引的数据树。


http://www.ppmy.cn/embedded/151918.html

相关文章

谷粒商城-高级篇-Sentinel-分布式系统的流量防卫兵

1、基本概念 1.1、熔断降级限流 1、什么是熔断 A 服务调用 B 服务的某个功能,由于网络不稳定问题,或者 B 服务卡机,导致功能时间超长。如果这样子的次数太多。我们就可以直接将 B 断路了( A 不再请求 B 接口)&#…

Nginx linux安装步骤(超详细)

官网下载 .tar.gz 压缩包 https://nginx.org/en/download.html 2. 执行 tar -zxvf xxxx.tar.gz 进行解压 3.cd nginx 进入nginx目录 4. ./configure 自动配置 5. make 6.make install 7.whereis nginx (查看nginx地址,并且cd 进入到 /nginx/sbin目录) 8. ./ngi…

网段划分和 IP 地址

1. IP 协议 IP 协议是网络层协议,主要负责在不同网络设备之间,进行数据包的地址分配和路由选择。 地址分配:为每个连接到公网的设备分配一个唯一的 IP 地址,确保数据能被准确地发送到目标设备。 数据分片和组装:当发…

Oracle中的TO_CHAR字符转化

在 Oracle 数据库中,TO_CHAR 函数用于将其他数据类型(如数字、日期等)转换为字符串。根据不同的使用场景,TO_CHAR 的功能可以非常灵活。以下是 TO_CHAR 函数的常见用法: 1. 将日期转换为字符串 TO_CHAR 可以将日期或时…

欧几里得距离在权重矩阵中的物理意义

欧几里得距离在权重矩阵中的物理意义 目录 欧几里得距离在权重矩阵中的物理意义**衡量神经元差异程度**:**反映模型变化程度**:**聚类和分组的依据**:自然语言处理中的模型更新:**神经网络聚类分组**:欧几里得距离在权重矩阵中的物理意义衡量神经元差异程度: 在神经网络中…

三格电子新品上市——IEC103 转 ModbusTCP 网关

型号:SG-TCP-IEC103(Tb可s 三格电子) 第一章 产品概述 IEC103 转 ModbusTCP 网关型号 SG-TCP-IEC103 ,是三格电子推出的工业级网关(以下简 称网关),主要用于 IEC103 数据采集、 DLT645-…

Python毕业设计选题:基于Hadoop 的国产电影数据分析与可视化_django+spider

开发语言:Python框架:djangoPython版本:python3.7.7数据库:mysql 5.7数据库工具:Navicat11开发软件:PyCharm 系统展示 管理员登录 管理员功能界面 用户管理 免费电影管理 在线论坛 留言反馈 看板展示 系统…

Gitee上传项目代码教程(详细)

工具必备:Git Bash 上传步骤 1.在Gitee创建项目仓库 2.进入本地项目目录 右键打开Git Bash here 3.配置用户名和邮箱 如果之前给git配置过用户名和邮箱可跳过 查看Git是否配置成功:git config --list git config --global user.name "xxx"…