返回

大型面试现场,趣学MySQL的10种文件

发布时间:2023-10-31 21:07:04 134

导读

下本文是MySQL专题的第 24 篇。

今天我要跟你分享的MySQL话题是:“自导自演的数据库面试现场--谈谈MySQL的10种文件”

换一种写作风格,自导自演面试现场!感觉这样还是比较有趣的,欢迎大家订阅我的MySQL专题,公众号首发!持续更新中~


1

好!我们开始吧! 






                              


大型面试现场,趣学MySQL的10种文件_配置文件


要不咱聊聊数据库?大型面试现场,趣学MySQL的10种文件_配置文件_02


嗯,好啊!


大型面试现场,趣学MySQL的10种文件_配置文件_03


大型面试现场,趣学MySQL的10种文件_配置文件


随便说几个大型面试现场,趣学MySQL的10种文件_mysql_05,顺便说说它们各自有什么用?大型面试现场,趣学MySQL的10种文件_mysql_05


好啊(内心:这泥马大型面试现场,趣学MySQL的10种文件_配置文件_07


大型面试现场,趣学MySQL的10种文件_配置文件_03


日常工作中我有了解10个MySQL相关文件。大型面试现场,趣学MySQL的10种文件_配置文件_09 分别是:1、参数配置文件 2、错误日志文件 3、慢查询文件  4、查询日志文件 5、binlog文件 6、socket文件  7、pid文件 8、表结构定义文件 9、表空间文件 10、redolog文件大型面试现场,趣学MySQL的10种文件_sql_10


大型面试现场,趣学MySQL的10种文件_配置文件_03


大型面试现场,趣学MySQL的10种文件_配置文件


你知道的还挺多大型面试现场,趣学MySQL的10种文件_sql_13,那你说说MySQL的参数配置文件叫什么?大型面试现场,趣学MySQL的10种文件_sql_10


MySQL的参数配置文件叫:my.cnf    MySQL在启动的时候

会去读取加载这个配置文件中的参数。并使用这个参数启动。

而且这个my.cnf 并不是必须的,因为在大部分参数在编译时都有

自己的默认值。


大型面试现场,趣学MySQL的10种文件_配置文件_03


大型面试现场,趣学MySQL的10种文件_配置文件


我怎么找到MySQL的配置文件呢?大型面试现场,趣学MySQL的10种文件_配置文件_02


你可以使用命令:mysql--help | grep my.cnf找到这个配置文件。

大型面试现场,趣学MySQL的10种文件_配置文件_18


大型面试现场,趣学MySQL的10种文件_配置文件_03


大型面试现场,趣学MySQL的10种文件_配置文件


嗯,你说的没错!大型面试现场,趣学MySQL的10种文件_配置文件_02你刚才还说了MySQL有:错误日志文件,

那你接着说一下你对MySQL错误日志文件的了解吧!大型面试现场,趣学MySQL的10种文件_配置文件_22


错误日志文件中会记录MySQL的 启动、运行、关闭的信息。一般

当我们发现MySQL启动不了时,第一时间都会去查看这个日志中

都记录了哪些错误信息。

一般情况下,我们都会在my.cnf中加入配置:

大型面试现场,趣学MySQL的10种文件_mysql_23

这样当数据库启动异常时,我们就去 /home/mysql/mysql/log/目录下找对应当错误日志,排错。


大型面试现场,趣学MySQL的10种文件_配置文件_03


大型面试现场,趣学MySQL的10种文件_配置文件


嗯,可以的! 大型面试现场,趣学MySQL的10种文件_sql_13

你刚才说你还了解MySQL的慢查询日志,说说看!大型面试现场,趣学MySQL的10种文件_sql_27


慢查询其实就是在说,SQL执行的速度很慢。具体多慢算是慢查询呢?这个我们可以通过配置文件人为的控制。

比如我可以在 my.cnf 这样配置:

大型面试现场,趣学MySQL的10种文件_配置文件_28

另外,默认情况下 MySQL不会帮我们记录慢查询日志,而是需要我们主动通过配置开启。 

开启慢查询日志后,默认情况下,MySQL会认为执行时间超过10s的SQL才是慢SQL,才会记录到慢查日志中。


大型面试现场,趣学MySQL的10种文件_配置文件_03


白日梦补充:更多关于慢查相关的知识点,可以参考前面的文章:“​​聊聊什么是慢查、如何监控?如何排查?​​”


大型面试现场,趣学MySQL的10种文件_配置文件


嗯,慢查说的还可以。你继续说下其它的日志吧!大型面试现场,趣学MySQL的10种文件_mysql_31


再说一下MySQL的查询日志吧。

见名知意,查询日志中会记录:所有对MySQL请求的信息,无论SQL有没有被正确的执行,都会被记录进这个查询日志中。

同样的我可以在 my.cnf 中这样配置,来控制查询日志的记录位置

大型面试现场,趣学MySQL的10种文件_mysql_32


大型面试现场,趣学MySQL的10种文件_配置文件_03


大型面试现场,趣学MySQL的10种文件_配置文件


嗯,了解!了解MySQL的binlog吗?谈谈看!大型面试现场,趣学MySQL的10种文件_mysql_31


binlog就是传说中的MySQL的二进制日志,和查询日志不同的是:所有对数据库产生修改的操作才会被记录到binlog中。

所以像select 、show xxx这种不会对数据库产生修改的类型的SQL只能在slow log中才能找到。像update delete 这样的SQL才会被记录进binlog中。


大型面试现场,趣学MySQL的10种文件_配置文件_03


大型面试现场,趣学MySQL的10种文件_配置文件


嗯,你接着说说binlog一般有什么用吧!大型面试现场,趣学MySQL的10种文件_sql_38


binlog常见的作用有如下几点:

1、主从复制(replication)我们线上使用的数据库都是一主两从或者是一主多从的数据库集群。目的是为了做读写分离嘛。也就是让从库承担主库的读流量。

2、数据恢复:比如线上的数据被不小心误删除了,可以借助binlog将数据恢复如初。

3、审计:可以通过审计binlog来分析,是否存在SQL注入的请况。


大型面试现场,趣学MySQL的10种文件_配置文件_03


白日梦补充:更多关于binlog的笔记。

​​MySQL的 bin log有啥用?在哪里?谁写的?怎么配置?​​

​​了解bin log的写入机制吗?说说你们线上如何调整参数的!​​

​​bin log有哪些格式?有啥区别?优缺点?线上用哪种格式?​​


大型面试现场,趣学MySQL的10种文件_配置文件


小伙子可以!方才你还说了什么 socket文件、pid文件。

你再跟我说说这两个文件分别是MySQL的什么文件吧!大型面试现场,趣学MySQL的10种文件_mysql_05


先说下这个socket文件吧,它一般是在/tmp目录下。在Unix操作系统中本地登陆MySQL时其实就是借助于这个socket文件实现的。


大型面试现场,趣学MySQL的10种文件_配置文件_03


大型面试现场,趣学MySQL的10种文件_配置文件


啧啧啧,什么叫本地登陆?大型面试现场,趣学MySQL的10种文件_mysql_05


哦!直观的看,本地登陆就是你先登陆上操作系统,进入bash中,然后再通过 mysql -uroot -p的方式登陆MySQL。

远程登陆就比如你在你的笔记本上通过网络远程登陆百度云上的MySQL。


大型面试现场,趣学MySQL的10种文件_配置文件_03


大型面试现场,趣学MySQL的10种文件_配置文件


嗯,你接着说。


再说下pid文件吧。在Linux操作系统中,所有的程序都是有自己的进程ID的,MySQL也不例外。MySQL实例启动之后会把自己的进程ID写入到一个文件中,这个文件就叫做PID文件。

默认这个PID文件会在数据库目录下,文件名为:主机名.pid


大型面试现场,趣学MySQL的10种文件_配置文件_03


大型面试现场,趣学MySQL的10种文件_配置文件


嗯,了解大型面试现场,趣学MySQL的10种文件_mysql_05,你还知道哪些MySQL的文件?接着说大型面试现场,趣学MySQL的10种文件_mysql_31


嗯,我还了解MySQL有:表结构定义文件 和 表空间文件。

先说下这个表结构定义文件吧!

在MySQL中数据是以数据表的形式组织起来的,不管你使用的哪种存储引擎,每个数据表都会有一个对应的表结构定义文件。它里面记录了表结构定义信息。

一般这个表结构定义文件的后缀都是 .frm

比如就像下面这样:

大型面试现场,趣学MySQL的10种文件_mysql_51


再有就是表空间文件。


大型面试现场,趣学MySQL的10种文件_配置文件_03


大型面试现场,趣学MySQL的10种文件_配置文件


嗯,那你说说啥是表空间文件大型面试现场,趣学MySQL的10种文件_mysql_31


表空间文件是数据库真正存储数据的文件。一般表空间文件的后缀名是 .ibd , 如下图:

大型面试现场,趣学MySQL的10种文件_mysql_51

一提到表空间大家都会说什么:共享表空间、独立表空间等等。本质上它们没啥差别,都是MySQL用来存储业务数据的文件。


大型面试现场,趣学MySQL的10种文件_配置文件_03


白日梦补充:

​​大家常说的表空间到底是什么?究竟什么又是数据表呢?​​


大型面试现场,趣学MySQL的10种文件_配置文件


可以啊小伙子大型面试现场,趣学MySQL的10种文件_mysql_31,这些文件都被你给说了个遍啊!大型面试现场,趣学MySQL的10种文件_配置文件_02


没,我还了解一点MySQL的redo日志文件......


大型面试现场,趣学MySQL的10种文件_配置文件_03


大型面试现场,趣学MySQL的10种文件_配置文件


那你说说看!大型面试现场,趣学MySQL的10种文件_配置文件_02


redo log,见名知意他是MySQL的重做日志文件。这个redo log还是挺厉害的。它让MySQL拥有了崩溃恢复的能力。

所谓崩溃恢复是指,服务器宕机、或者MySQL意外Crash后,MySQL重启启动可以将崩溃前内存中的数据恢复如初的能力。


大型面试现场,趣学MySQL的10种文件_配置文件_03


白日梦补充:

​​传说中的MySQL的redo log是什么?谈谈看!​​

​​全网最牛X的!MySQL两阶段提交串讲!没有之一!​​


大型面试现场,趣学MySQL的10种文件_配置文件


嗯!最后再问一下问题吧!  大型面试现场,趣学MySQL的10种文件_配置文件_02

上面你说了那么多日志,那写日志难道不会拖累MySQL

的性能吗?


嗯,首先来说,写日志肯定会拖累MySQL的整体的性能。  大型面试现场,趣学MySQL的10种文件_配置文件_22

比如说:默认情况下,像binlog、慢查询日志,MySQL都不会帮我们主动记录,而是需要我们通过配置去主动开启!

这其实是在一定程度上暗示使用者,如果你不需要写该日志给你带来的种种好处,那么你可以选择不让MySQL记录那种日志从而换来性能上的提升。


大型面试现场,趣学MySQL的10种文件_配置文件_03

但是MySQL记录日志的形式是:顺序的磁盘IO,只是追加写,并不是随机磁盘IO,所有其实写日志总体性能也没有那么的差!大型面试现场,趣学MySQL的10种文件_sql_27

而且记录日志自然有记录日志的好处,就比如MySQL记录binlog,可能会降低1%的性能,但是MySQL就拥有了 搭建集群、数据备份、审计的能力啊。难道它不香吗?大型面试现场,趣学MySQL的10种文件_sql_38

写redolog后,MySQL就拥有了崩溃恢复的能力,这不香吗?大型面试现场,趣学MySQL的10种文件_sql_10


大型面试现场,趣学MySQL的10种文件_配置文件_03

大型面试现场,趣学MySQL的10种文件_配置文件


嗯!自圆其说的可以大型面试现场,趣学MySQL的10种文件_配置文件_02,我没有问题了,你还有什么想问我的吗?


嗯嗯,面试官大佬,您看我行吗?大型面试现场,趣学MySQL的10种文件_sql_10


大型面试现场,趣学MySQL的10种文件_配置文件_03

大型面试现场,趣学MySQL的10种文件_配置文件


整体感觉还可以,应该会进入下一面。好好准备,

期待你下一面优秀的表现大型面试现场,趣学MySQL的10种文件_sql_38


白日梦的公号哦~

换一种写作风格,自导自演面试现场!感觉这样还是比较有趣的,欢迎大家订阅我的MySQL专题,公众号首发!持续更新中


特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线
下一篇
RocketMQ的主要组件及其功能 2023-10-31 18:13:45