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

导读

Hi,你们好!我是白日梦!本文是MySQL专题的第 24 篇。mysql

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

换一种写做风格,自导自演面试现场!感受这样仍是比较有趣的,欢迎你们订阅个人MySQL专题,公众号首发!持续更新中~
面试

点击阅读原文,格式会好看一点哦~sql

点击阅读原文,格式会好看一点哦~数据库

点击阅读原文,格式会好看一点哦~缓存

欢迎关注白日梦,公众号首发!持续连载中

bash

1
好!咱们开始吧! 













                              


你好,看你简历中有写熟悉MySQL数据库啊。要不咱聊聊数据库? 服务器


嗯,好啊! 网络




平常工做中你有没有留意MySQL有哪些文件?随便说几个,顺便说说它们各自有什么用? app


好啊(心里:这泥马



平常工做中我有了解10个MySQL相关文件。 分别是:一、参数配置文件 二、错误日志文件 三、慢查询文件  四、查询日志文件 五、binlog文件 六、socket文件  七、pid文件 八、表结构定义文件 九、表空间文件 十、redolog文件




你知道的还挺多,那你说说MySQL的参数配置文件叫什么?


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

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


并且这个my.cnf 并非必须的,由于在大部分参数在编译时都有

本身的默认值。




我怎么找到MySQL的配置文件呢?


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





嗯,你说的没错!你刚才还说了MySQL有:错误日志文件,

那你接着说一下你对MySQL错误日志文件的了解吧!


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

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

都记录了哪些错误信息。


通常状况下,咱们都会在my.cnf中加入配置:


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




嗯,能够的! 

你刚才说你还了解MySQL的慢查询日志,说说看!


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


好比我能够在 my.cnf 这样配置:


另外,默认状况下 MySQL不会帮咱们记录慢查询日志,而是须要咱们主动经过配置开启。 


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



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


嗯,慢查说的还能够。你继续说下其它的日志吧!


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


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


一样的我能够在 my.cnf 中这样配置,来控制查询日志的记录位置





嗯,了解!了解MySQL的binlog吗?谈谈看!


binlog就是传说中的MySQL的二进制日志,和查询日志不一样的是:全部对数据库产生修改的操做才会被记录到binlog中。


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




嗯,你接着说说binlog通常有什么用吧!


binlog常见的做用有以下几点:


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


二、数据恢复:好比线上的数据被不当心误删除了,能够借助binlog将数据恢复如初。


三、审计:能够经过审计binlog来分析,是否存在SQL注入的请况。



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

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

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

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



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

你再跟我说说这两个文件分别是MySQL的什么文件吧!


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




啧啧啧,什么叫本地登录?


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


远程登录就好比你在你的笔记本上经过网络远程登录百度云上的MySQL。




嗯,你接着说。


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


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




嗯,了解,你还知道哪些MySQL的文件?接着说


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


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


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


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


好比就像下面这样:


再有就是表空间文件。




嗯,那你说说啥是表空间文件


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



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



白日梦补充:
你们常说的表空间究竟是什么?究竟什么又是数据表呢?


能够啊小伙子,这些文件都被你给说了个遍啊!


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




那你说说看!


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


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



白日梦补充:
传说中的MySQL的redo log是什么?谈谈看!
全网最牛X的!MySQL两阶段提交串讲!没有之一!


嗯!最后再问一下问题吧!  

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

的性能吗?


嗯,首先来讲,写日志确定会拖累MySQL的总体的性能。  


好比说:默认状况下,像binlog、慢查询日志,MySQL都不会帮咱们主动记录,而是须要咱们经过配置去主动开启!


这实际上是在必定程度上暗示使用者,若是你不须要写该日志给你带来的种种好处,那么你能够选择不让MySQL记录那种日志从而换来性能上的提高。




可是MySQL记录日志的形式是:顺序的磁盘IO,只是追加写,并非随机磁盘IO,全部其实写日志整体性能也没有那么的差!


并且记录日志天然有记录日志的好处,就好比MySQL记录binlog,可能会下降1%的性能,可是MySQL就拥有了 搭建集群、数据备份、审计的能力啊。难道它不香吗?


写redolog后,MySQL就拥有了崩溃恢复的能力,这不香吗?




嗯!自圆其说的能够,我没有问题了,你还有什么想问个人吗?


嗯嗯,面试官大佬,您看我行吗?




总体感受还能够,应该会进入下一面。好好准备,

期待你下一面优秀的表现



推荐阅读

  1. MySQL的修仙之路,图文谈谈如何学MySQL、如何进阶!(已发布)
  2. 面前突击!33道数据库高频面试题,你值得拥有!(已发布)
  3. 你们常说的基数是什么?(已发布)
  4. 讲讲什么是慢查!如何监控?如何排查?(已发布)
  5. 对NotNull字段插入Null值有啥现象?(已发布)
  6. 能谈谈 date、datetime、time、timestamp、year的区别吗?(已发布)
  7. 了解数据库的查询缓存和BufferPool吗?谈谈看!(已发布)
  8. 你知道数据库缓冲池中的LRU-List吗?(已发布)
  9. 谈谈数据库缓冲池中的Free-List?(已发布)
  10. 谈谈数据库缓冲池中的Flush-List?(已发布)
  11. 了解脏页刷回磁盘的时机吗?(已发布)
  12. 用十一张图讲清楚,当你CRUD时BufferPool中发生了什么!以及BufferPool的优化!(已发布)
  13. 据说过表空间没?什么是表空间?什么是数据表?(已发布)
  14. 谈谈MySQL的:数据区、数据段、数据页、数据页究竟长什么样?了解数据页分裂吗?谈谈看!(已发布)
  15. 谈谈MySQL的行记录是什么?长啥样?(已发布)
  16. 了解MySQL的行溢出机制吗?(已发布)
  17. 说说fsync这个系统调用吧! (已发布)
  18. 简述undo log、truncate、以及undo log如何帮你回滚事物! (已发布)
  19. 我劝!这位年轻人不讲MVCC,耗子尾汁! (已发布)
  20. MySQL的崩溃恢复究竟是怎么回事? (已发布)
  21. MySQL的binlog有啥用?谁写的?在哪里?怎么配置 (已发布)
  22. MySQL的bin log的写入机制 (已发布)
  23. 删库后!除了跑路还能干什么?(已发布)
  24. 自导自演的面试现场,趣学数据库的10种文件(已发布)
相关文章
相关标签/搜索