首页 > 数据库 >面试题知识点笔记-MySQL日志

面试题知识点笔记-MySQL日志

时间:2024-03-28 23:31:54浏览次数:35  
标签:知识点 面试题 log binlog 写入 MySQL 磁盘 日志

目录

MysqI会产生几种日志?

binlog作用是什么?

redolog作用是什么?

undolog作用是什么?

Mysql日志是否实时写入磁盘?

bin log刷盘机制是如何实现的?

redo log刷盘机制是如何实现的?

undo log刷盘机制是如何实现的?

MySQL的binlog有有几种录入格式?分别有什么区别?

Mysq!集群同步时为什么使用binlog?优缺点是什么?


  • MysqI会产生几种日志?

  • 错误日志(error log)

error log主要记录MySQL在启动、关闭或者运行过程中的错误信息,在MySQL的配置文件my.cnf中,可以通过l0gerror=/var/log/mysqld.10g 执行mysql错误日志的位置。

  • 慢查询日志(slow query log)
  1. Ø MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。
  2. Ø long_query_time的默认值为10,意思是运行10秒以上的语句。
  3. Ø由他来查看哪些SQL超出了我们的最大忍耐时间值,比如一条sql执行超过5秒钟,我们就算慢SQL,希望能收集超过5秒的sql,结合之前explain进行全面分析。
  4. Ø 默认情况下,MySQL数据库没有开启慢查询日志,需要我们手动来设置这个参数。Ø当然,如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响。慢查询日志支持将日志记录写入文件。
  5. 在生产环境中,如果要手工分析日志,查找、分析SQL,显然是个体力活,MSQL提供了日志分析工具mysqldumpslow。
  • 一般查询日志(general log)

        general log 记录了客户端连接信息以及执行的SQL语句信息,通过MySQL的命令

  • 重写日志(redo log)
  • 回滚日志(undo log)
  • 二进制日志(bin log)
  • binlog作用是什么?

  1. 在redolog之后执行,记录所有的一条条的sql(不包括查询sql),主要用于灾备恢复和主从同步
  2. 但时间操作和其他一些系统变量等数据可能难以恢复
  • redolog作用是什么?

记录数据修改之后的值,在undo log执行之后执行,是记录在磁盘上的数据结构,用于宕机时内存更新但是没有来得及写入磁盘那部分的数据恢复

  • undolog作用是什么?

主要是回滚,记录数据修改之前的值,mvcc并发控制可能会利用undo log返回之前的版本

  • Mysql日志是否实时写入磁盘?

  • bin log刷盘机制是如何实现的?

参数:sync_binlog
binlog 写入策略:

  1. sync binog=0 的时候,表示每次提交事务binlog不会马上写入到磁盘,而是先写到page cache,相对于磁盘写入来说写page cache要快得多,不过在Mysq!崩溃的时候会有丢失日志的风险。
  2. sync binlog=1 的时候,表示每次提交事务都会执行 fsync 写入到磁盘;3、sync binlog的值大于1 的时候,表示每次提交事务都 先写到page cach,只有等到积累了N个事务之后才fsync 写入到磁盘,同样在此设置下Mysq!崩溃的时候会有丢失N个事务日志的风险。
  3. 很显然三种模式下,sync binlog=1 是强一致的选择,选择0或者N的情况下在极端情况下就会有丢失日志的风险,具体选择什么模式还是得看系统对于一致性的要求。
  • redo log&undo log刷盘机制是如何实现的?

change buffer存储脏页,存储之前要用到undo log和redo log

innodb_flush _log_at_trx_commit
取直0:每秒触发一次缓存日志回写磁盘操作,并调用操作系统fsync刷新IO缓存。
取值1:每次提交事务都立即调用操作系统fsync刷新IO缓存。
取值2:每次都把redo 1og写到系统的page cache中,由系统接管什么时候写入磁盘

一个事务的刷盘步骤(重要!!):

 

  • MySQL的binlog有有几种录入格式?分别有什么区别?

logbin格式:

  • binlog_format=STATEMENT(默认):数据操作的时间,同步时不一致每一条会修改数据的sql语句会记录到binlog中。优点是并不需要记录每- 条sql语句和每一行的 数据变化,减少了bin0g日志量,节约10,提高性能。缺点是在某些情况下会导致 master-slave中的数据不一致( 如sleep()函数,last_insert_id(),以及user-defined functions(udf)等会出 现 问题)
  • binlog format=ROW:批量数据操作时,效率低 不记录每条sql语句的上下文信息,仅需记录哪条数据被修改了,修改成什么样了。而且不会出 现某些特定情况下的存储过程、或function、或trigger的调用和触发无法被正确复制的 问题。缺 点是会产生大量的日志,尤其是alter table的时候会让日志暴涨。
  • binlog_format=MIXED:是以上两种level的混合使用,有函数用ROW,没函数用STATEMENT,但是无法识别系统变量
  • Mysq!集群同步时为什么使用binlog?优缺点是什么?

直接同步磁盘表的二进制数据也可以,但是容易出问题,如果有修改或者更复杂的操作,同步中断后就很难继续同步了

binlog是mysql提供的日志,所有存储引擎都可用,

  • 如上所述,支持增量同步
  • binlog还可以供其他中间件读取,比如同步到hdfs中
  • 如果复制表数据:
  1. 不支持某个阶段回放
  2. 直接复制数据过程中一旦中断复制(比如断网)很难确定复制的offset

标签:知识点,面试题,log,binlog,写入,MySQL,磁盘,日志
From: https://blog.csdn.net/qq_51586702/article/details/137061542

相关文章

  • 国外的Java面试题和国内的相比谁更卷
    前言有很多朋友很好奇国外的Java面试题长啥样,今天我们就去找5道国外的面试来和国内的对比一下看看谁难一些!面试题分享1.IsJavaPlatformIndependentifthenhow?(Java平台是独立的吗?)Yes,JavaisaPlatformIndependentlanguage.Unlikemanyprogramminglang......
  • [SpringMVC]知识点
    【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)https://www.cnblogs.com/cnb-yuchen/p/18032069出自【进步*于辰的博客】目录1、什么是SpringMVC?1.1概述1.2示例6、restful风格6.1概述6.2使用细节7、自定义异常处理器8、自定义类型转换器最后1、什么是Spring......
  • 安装MySQL8.0.x并修改密码
    安装MySQL8.0.x并修改密码https://mysql.net.cn/doc/refman/8.0/en/docker-mysql-getting-started.html拉取镜像debian@debian:~$sudodockerpullmysql:8.0.25[sudo]passwordfordebian:8.0.25:Pullingfromlibrary/mysqlb4d181a07f80:Pullcompletea462b60610f5:......
  • 2024年150道高频Java面试题(一)
    1.JDK和JRE有什么区别?JDK(JavaDevelopmentKit)和JRE(JavaRuntimeEnvironment)是Java技术的两个核心组成部分,它们之间的主要区别如下:功能定位:JDK:它是提供给Java开发者的软件开发工具包,包含了Java程序开发所需的各种工具,比如编译器(javac)、调试器(jdb)和其他工具(如java......
  • 面试题:为什么hadoop不适合存储小文件(1、从NN角度去 分析 2、DN角度分析 3、从MR角度分
    NN角度:小文件一旦很多,那么小文件的权限信息,文件大小信息,归属信息等信息就会跟着增加,每一个小文件都会产生这些信息,这些信息一旦多起来,那么NameNode的元数据就会变大,会导致元数据的大小超过小文件大小的总和,会增加NameNode的压力,有可能导致主节点崩溃,用户就无法通信了DN角度:小文件......
  • Mysql(数据库)知识详解【4】~{索引,主键优化}
    记住满元素中间元素向上裂变就行了因为如果是5个节点,比第一个节点小的算一个指针,逼最后一个节点大的算一个指针,里面是4个指针所有元素都会出现在叶子节点并且诸多叶子节点通过指针构造一张单项链表看我:除了最下面节点,上面的节点(叶子空间最大16k)全部放满内存......
  • [附源码]计算机毕业设计保险客户管理系统(JSP+java+springmvc+mysql+MyBatis)
    本项目包含程序+源码+数据库+LW+调试部署环境,文末可获取一份本项目的java源码和数据库参考。项目文件图项目介绍在现代保险行业中,客户管理系统对于提升客户服务水平、增强客户满意度和构建长期客户关系至关重要。随着大数据和人工智能技术的发展,保险公司迫切需要一个先进的......
  • [附源码]计算机毕业设计技术文档管理系统(JSP+java+springmvc+mysql+MyBatis)
    本项目包含程序+源码+数据库+LW+调试部署环境,文末可获取一份本项目的java源码和数据库参考。项目文件图项目介绍技术文档管理系统是企业信息化建设的重要组成部分,它关系到知识的积累、共享和管理效率。随着企业规模的扩大和业务的多样化,传统的文件管理方式已无法满足快速检......
  • docker 创建mysql:8
    最后修改时间2024-03-28docker查找mysql:8.0.20sudodockersearchmysql:8.0.20docker拉mysql:8.0.20sudodockerpullmysql:8.0.20创建mysql:8.0.20相关文件夹和文件mkdir/home/ubuntu/mysqlmkdir/home/ubuntu/mysql/logmkdir/home/ubuntu/mysql/datamkdir/home/ub......
  • java计算机毕业设计(附源码)学生日常行为评分系统(ssm+mysql+maven+LW文档)
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:在教育过程中,学生的行为举止不仅反映了个人素养,也是学校文化和教育质量的直接体现。传统的德育评价体系多依赖于教师的主观观察和判断,这种方式往往存在一......