导读

Hi,大家好!我是白日梦!本文是MySQL专题的第 24 篇。

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

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

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

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

1
好!我们开始吧! 


























                              





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



嗯,好啊!









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



好啊(内心:这泥马






日常工作中我有了解10个MySQL相关文件。 分别是:1、参数配置文件 2、错误日志文件 3、慢查询文件  4、查询日志文件 5、binlog文件 6、socket文件  7、pid文件 8、表结构定义文件 9、表空间文件 10、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常见的作用有如下几点:

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

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

3、审计:可以通过审计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种文件(已发布)

自导自演的面试现场,趣学MySQL的10种文件的更多相关文章

  1. 自导自演的面试现场之--你竟然不了解MySQL的组提交?

    Hi,大家好!我是白日梦!本文是MySQL专题的第 26 篇. 下文还是白日梦以自导自演的方式,围绕"组提交"展开本话题.看看你能抗到第几问吧 换一种写作风格,自导自演面试现场!感 ...

  2. 大型面试现场:一条update sql执行都经历什么?

    导读 Hi,大家好!我是白日梦!本文是MySQL专题的第 24 篇. 今天我要跟你分享的MySQL话题是:"从一条update sql执行都经历什么开始,发散开一系列的问题,看看你能抗到第几 ...

  3. 面试现场:说说char 和 varchar的区别你了解多少?

    Hi,大家好!我是白日梦!本文是MySQL专题的第 26 篇. 下文还是白日梦以自导自演的方式,围绕"说说char 和 varchar的区别你了解多少?"展开本话题.看看你能抗到第 ...

  4. [2017.02.21] 《Haskell趣学指南 —— Learning You a Haskell for Great Good!》

    {- 2017.02.21 <Haskell趣学指南 -- Learning You a Haskell for Great Good!> [官网](http://learnyouahas ...

  5. 《趣学Python编程》

    <趣学Python编程> 基本信息 作者: (美)Jason Briggs 译者: 尹哲 出版社:人民邮电出版社 ISBN:9787115335951 上架时间:2014-2-21 出版日 ...

  6. 《Haskell趣学指南》

    <Haskell趣学指南> 基本信息 原书名:Learn You a Haskell for Great Good!: A Beginner's Guide 原出版社: No Starch ...

  7. 【路由和交换之H3C自导自演】

    H3C配置自导自演 显示和维护及恢复 1:display display history-command    :查看历史命令记录 display diagnostic-information :查看 ...

  8. 天天坐在电脑面前,小心抑郁!来自一个人的旅行<自导自演>

    画图画累了?写代码写累了?何不放松一下呢. 一望无际.亲近自然.忘乎所以.放空自我! 一个人的旅行, GoPro拍摄,后期采用FCPX.记录梦想, 自导自演.一个人去了很多地方, 认识和很多当地人,交 ...

  9. 趣学算法 PDF pdf 下载 陈小玉版

    趣学算法pdf高清无水印版下载 最近在网上找趣学算法pdf,最后还是买了完整版,今天将本书分享出来,分享给那些和我一样在网上苦苦寻找的小可爱们,有条件的话请支持正版! 链接:https://pan.b ...

随机推荐

  1. [leetcode]66Plus One

    /** * Given a non-negative integer represented as a non-empty array of digits, plus one to the integ ...

  2. Spring项目出现--Error:java: Compilation failed: internal java compiler error

    错误现象 使用Idea导入新项目或升级idea或新建项目时会出现以下异常信息: Error:java: Compilation failed: internal java compiler error ...

  3. Java通过jni调用动态链接库

    (1)JNI简介 JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++).从Java1.1开始,JNI标准成为java ...

  4. 整合.NET WebAPI和 Vuejs——在.NET单体应用中使用 Vuejs 和 ElementUI

    .NET简介 .NET 是一种用于构建多种应用的免费开源开发平台,例如: Web 应用.Web API 和微服务 云中的无服务器函数 云原生应用 移动应用 桌面应用 1). Windows WPF 2 ...

  5. 将WCF迁移到gRPC

    使用protobuf-net.Grpc将WCF服务迁移到gRPC非常简单.在这篇博文中,我们将看看它到底有多简单.微软关于将WCF服务迁移到gRPC的官方指南只提到了Gooogle.Protobuf方 ...

  6. Apache伪静态(Rewrite).htaccess文件详解

    Htaccess(超文本访问)是一个简单的配置文件,它允许设计师,开发者和程序员通过它来改变Apache Web服务器的配置.这些功能包括用户重定向.URL重写(url rewrite,国内很多称为伪 ...

  7. (开源项目)abattoir unity游戏

    (开源项目)abattoir unity游戏 欢迎各位的改进和提议! 名称: abattoir(角斗场) 版本: v1.0 作者: N-n-N(笔者) 简介: 添加娱乐(冲撞)模式和普通(一般)模式 ...

  8. python Logger模块单例模式

    前言 提前祝大家过个好年 最近忙于项目,今天抽出点时间写写Blog谈谈昨天遇到的问题 项目最近要收尾了,想把Logger规整一下,因为很多地方都有用到 Python的Logger模块是Python自带 ...

  9. VRay for SketchUp渲染图黑原因及解决方案

    很多人都遇到用Vray for SketchUp云渲染的时候,渲染出来的图片是全黑或者是局部是黑色, 这是什么原因呢? 1.有一种情况是,SketchUp的文件储存机制和其他的软件有些不同,它是把模型 ...

  10. LeetCode844 比较含退格的字符串

    题目描述: 给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果. # 代表退格字符. 示例 1: 输入:S = "ab#c", T = ...