当前位置: 首页 > news >正文

深入理解 MySQL 中的日志类型及其应用场景

目录标题

  • MySQL 中的日志类型这么多,它们都有哪些作用?
  • 1.错误日志(Error Log)
  • 2.事务日志
    • 2.1 InnoDB Redo Log(重做日志)
    • 2.2 InnoDB Undo Log (撤消日志)
  • 3.查询日志(General Query Log)
  • 4.慢查询日志 (Slow Query Log)
  • 5.二进制日志(Binary Log)
  • 6.中继日志 (Relay Log)
  • 总结一下

MySQL 中的日志类型这么多,它们都有哪些作用?

我经常在面试别人的时候,特别喜欢问一些生产性的问题。例如:如果数据库偶发性地变慢,你该如何排查?再例如,数据库主从复制突然延时增加,你又怎么排查呢?

问这种问题最主要的原因是想考验一下面试者在工作中处理问题的能力,这种能力只能够是在足够了解一个事物原理的基础上才能拥有。并且在日常的工作当中或者在面试大厂的时候,也经常会遇到类似的问题。

那么遇到类似的问题该怎么解决呢?今天我们就来聊一聊这个话题。

通常,遇到一些未知的问题(类似于上述的两个问题)时,我们的第一反应是查看日志。那么这个时候问题又来了:该看什么日志呢?

在 MySQL 数据库当中,有很多种日志,每一种日志的作用都不尽相同。

1.错误日志(Error Log)

首先,我们介绍一下 MySQL 数据库中的错误日志,顾名思义主要是用来记录 MySQL 数据库中出现的错误或者警告的,下面我们来看一下它的位置。

mysql> show variables like '%log_error%';
+---------------------+---------------------+
| Variable_name       | Value               |
+---------------------+---------------------+
| log_error           | /var/log/mysqld.log |
+---------------------+---------------------+
3 rows in set (0.13 sec)

其中,/var/log/mysqld.log 就是 MySQL 数据库错误日志的路径。

如果,要想将错误信息写入到错误日志中,还受 MySQL 数据库中 log_warnings 参数的影响,该参数有三个参数,分别是 0、1 和大于 1 三个参数。下面我们将来证明这三个参数的作用,分别如下。

  • log_warnings 的结果为 0 时,不记录警告日志。

— 设置为0

mysql> set GLOBAL log_warnings=0; 
Query OK, 0 rows affected, 1 warning (0.00 sec)

— 查看设置结果

mysql> show variables like ‘%log_warnings%;+———————-+———-+ | Variable_name | Value |+———————-+———-+ | log_warnings  | 0     |+———————-+———-+ 1 row in set (0.00 sec)

— 使用明文密码,制造一个警告日志

 [root@dxd ~]# mysql -uroot -pTest123! -h172.17.16.2

— 查看错误日志

 [root@dxd ~]# cat /var/log/mysqld.log [root@dxd ~]#

我们可以看到,没有记录警告日志。

  • log_warnings 的结果为 1 时,记录错误日志,并且将警告日志也记录到错误日志之中。

— 设置为 1

[root@dxd ~]# vim /etc/my.cnf log_warnings=1

— 查看设置结果

mysql> show variables like ‘%log_warnings%; 
+———————-+———-+ | Variable_name | Value | 
+———————-+———-+ | log_warnings  | 1     |
+———————

http://www.mrgr.cn/news/63845.html

相关文章:

  • Java 多线程(八)—— 锁策略,synchronized 的优化,JVM 与编译器的锁优化,ReentrantLock,CAS
  • 《双指针篇》---双指针算法原理
  • TikTok直播专线:提升直播效果和体验
  • 计算机网络的数据链路层
  • vulhub之Spring篇
  • Redis高级篇之bigKey理论介绍以及优化
  • SQLI LABS | Less-24 POST-Second Oder Injections Real Treat-Stored Injections
  • Python中什么是迭代器,如何创建迭代器?
  • DICOM标准:解析DICOM属性中的病人模块
  • 大数据治理
  • C语言 | Leetcode C语言题解之第525题连续数组
  • Ubuntu下载ISO镜像的方法
  • 【挑战全网最清晰!】IBM Rational Rose如何导出高清图片 | 如何导出成形状 | 如何导出到PPT
  • mybatis-plus
  • Golang | Leetcode Golang题解之第526题优美的排列
  • QEMU学习之路(4)— Xilinx开源项目systemctlm-cosim-demo安装与使用
  • [运维] 服务器本地网络可用性检查脚本
  • 信息学奥赛一本通 1393:联络员(liaison)
  • OpenEmbedded、yocto和poky是什么关系?
  • 计算机后台服务-更新下载,重启————未来之窗行业应用跨平台架构
  • Object类中的方法
  • *指针引用
  • 双指针习题篇(下)
  • 使用Django Channels实现WebSocket实时通信
  • 数据库作业5
  • yocto是如何收集recipes,如何加入现有的bb文件