MySQL—MySQL架构

admin3周前笔记30

MySQL逻辑架构图如下:

image.png

  • 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_%';

image.png

错误日志:error log

  • 默认开启,记录运行过程中所有严重的错误信息,及每次启动和关闭的详细信息;

  • 通过log_error和log_warnings配置

    • log_warnings= 0:不记录告警日志

    • log_warnings= 1:告警信息写入错误日志

    • log_warnings 大于 1:表示各类告警信息,例如:有关网络故障的信息和重新连接信息写入错误日志。

    • log_error:指定存储位置;

    • log_warnings:配置警告信息级别

配置

vim /etc/my.cnf

添加如下内容:

image.png

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

重启MySQL

systemctl restart mysqld

image.png

二进制日志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的性能。如果不是为了调试数据库,不建议开启查询日志。

image.png

#启动开关general_log={ON|OFF}#日志文件变量,而general_log_file如果没有指定,默认名是host_name.loggeneral_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%';

image.png

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

image.png

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

image.png

进入后,查看文件:

image.png

说明

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

image.png

  • InnonDB存储引擎的数据文件

    • 表名.frm文件:主要存放与表相关的元数据信息,包括:表结构的定义信息

    • 表名.ibd文件:一张表一个ibd文件,存储表数据和索引信息;

  • MyISAM存储引擎的数据文件

    • 表名.frm文件:主要存放与表相关的元数据信息,包括:表结构的定义信息

    • 表名.myd文件:主要存放数据;

    • 表名.myi文件:主要存放索引。


相关文章

 如何解决MySQL主从复制太慢的问题

如何解决MySQL主从复制太慢的问题

mysql主从同步延迟原因导致备库延迟的原因主要有如下几种:通常备库所在机器的性能要比主库所在的机器性能差,执行备份自然会更慢。备库的读压力大。在备库过多的执行繁重的查询任务。大事务。因为主库上必须等...

Windows Copilot 国内用户安装手册

Windows Copilot 国内用户安装手册

作为国内用户,要如何安装使用 Windows Copilot。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/office/50057.htmlWindows...

自定义 sudo 在你输入错误的密码时嘲讽信息

自定义 sudo 在你输入错误的密码时嘲讽信息

你可以在上面的文件中定义 sudoers 嘲讽或其他选项。它在 defaults 部分下设置。在本文中,我们将解释一个 sudoers 配置参数,以允许个人或系...

Windows 11 的代理设置:启用和禁用

Windows 11 的代理设置:启用和禁用

在 Windows 11 上设置代理服务器将帮助您隐藏 IP 地址、绕过各种阻止并轻松安全地上网。代理还可以保护您的设备免受不必要的广告、恶意软件和黑客攻击。罗拉 ROLA-IP 是一家来自纽约的代理...

通过 SSH 实现 TCP / IP 隧道(端口转发)

通过 SSH 实现 TCP / IP 隧道(端口转发)

对于 Secure Shell (SSH)[1] 这样的网络协议来说,其主要职责就是在终端模式下访问一个远程系统。因为 SSH 协议对传输数据进行了加密,所以通过它在远端系统执行命...

虚拟主机解决电信网通间互联互通

电信和网通两大基础网络,人为地割裂了整个中国的网络。无论是选择把网站托管在电信、还是网通,都等于是在拒绝处于另外一个网络中的客户,因为实在太慢了。  那么有什么办法可以解决这个问题呢?目前主流的解决方...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。