热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

MySQL主要日志的基本操作与简单解析

MySQL主要有以下几种日志:错误日志通用查询日志慢查询日志二进制日志DDL日志日志是mysql数据库很重要的一部分,用来记录数据库运行期间发生的变化,比如mysql数据库的客户端

MySQL主要有以下几种日志:

  1. 错误日志
  2. 通用查询日志
  3. 慢查询日志
  4. 二进制日志
  5. DDL日志

日志是mysql数据库很重要的一部分,用来记录数据库运行期间发生的变化,比如mysql数据库的客户端连接状况、SQL语句的执行情况和错误信息等你都可以在日志文件中查看到,当数据库莫名其妙崩了,或是出现错误的时候,都可以通过日志来排查问题。
默认情况下,所有日志创建于mysqld数据目录中。

MySQL数据库官方文档:https://dev.mysql.com/doc/refman/5.7/en/server-logs.html
官方文档为英文版本,英文好的小伙伴可自行翻阅~

1. 错误日志 (error log)

默认情况下,错误日志是默认开启的。除错误日志外其他日志默认都是关闭状态。
错误日志的内容比较多,我会单独写一篇文章。此处先留空~

2. 通用查询日志 (general query log )

通用查询日志是记录所有MySQL数据库请求信息的,客户端连接或断开连接的信息都会写入此日志,并记录从客户端接收到的每条SQL语句。也就是说不管你对数据库做了啥,有没有得到正确的反馈,都会被记录下来

show variables like '%general_log%';(查看开启状态)

《MySQL主要日志的基本操作与简单解析》

set global general_log = on;(开启查询日志)

(开启有风险,操作需谨慎~ 会影响一定的性能 生产环境下不建议开启)
一般有两种形式,一种是输出到文件中,一种是写入数据表格中。

show variables like 'log_output';(查看状态)

《MySQL主要日志的基本操作与简单解析》

如果想更换为写入数据表,命令如下:

set global log_output='table';

注意:如果设置log_output=table的话,则日志结果会记录到名为gengera_log.csv的表中

每条操作都记录是很消耗性能的,那么我们来关闭它。

set global general_log=off;(关闭查询日志)

3. 慢速查询日志 (slow query log)

简单来讲,慢查询日志就是用来记录执行时间超过指定时间的查询语句,long_query_time的最小值和默认值分别 为0和10(秒)。
当然默认情况下,慢查询日志是禁用的。
我们可以手动开启,然后通过慢查询日志,查找出哪些查询语句的执行效率低,进行优化。
慢查询日志支持将记录写入文件,也支持将记录写入数据库表。

默认情况下slow_query_log为OFF
开启方法:设置slow_query_log的值为1来开启

sqlset global slow_query_log=1;

Query OK之后就可以看到如下图,表格第二行为日志文件保存的路径

sqlshow variables like '%slow_query_log%';

《MySQL主要日志的基本操作与简单解析》

但是!这种方法只是临时生效!!!如果你不小心重启了服务器,那么不好意思,请重新配置一遍吧,如果你想的起来的话….
那么,如何让它永久生效呢?
修改配置文件my.cnf文件,增加或修改参数slow_query_log 和slow_query_log_file,然后重启MySQL服务

slow_query_log =1long_query_time=3(慢查询设置的时间阈值,表示运行超过3秒的sql语句都会被记录下来)
slow_query_log_file=/www/server/data/mysql-slow.log(此处为你想指定的存放路径)
log-queries-not-using-indexes(表示记录下没有使用索引的查询)

重启mysql服务:

service mysql restart

查看设置的时间阈值为多少

show global variables like 'long_query_time';

《MySQL主要日志的基本操作与简单解析》

设置时间阈值:

set global long_query_time=10;

使用more查看日志内容

more /www/server/data/mysql-slow.log

此处不再做过多的赘述,详细了解请翻阅文档。

4. 二进制日志(binary log)

MySQL的二进制日志记录了对mysql数据库执行更改的所有操作,并且记录了更新数据语句发生时间、执行时长、等额外信息,但是不记录查询等不修改数据的SQL语句。顾名思义,它是一个二进制文件,主要用于数据库恢复和主从复制,以及审计操作。

show variables like 'log_bin';(查看开启状态)

《MySQL主要日志的基本操作与简单解析》
《MySQL主要日志的基本操作与简单解析》 20180525015439.png

图中mysql-bin.index的文件是存储所有二进制日志文件的清单,又称为二进制文件的索引。

开启方法:直接修改配置文件my.cnf文件中mysqld下面添加log-bin =DIR \ filename

DIR为目录 filename为文件名

eg:log_bin=/mysql/bin_log/mysql_binlog(设置日志文件路径)

二进制日志有两个重要目的:

  1. 对于复制,主复制服务器上的二进制日志提供了要发送给从服务器的数据更改记录。主服务器将其二进制日志中包含的事件发送给其从服务器,从服务器执行这些事件,以对主服务器进行相同的数据更改。
  2. 某些数据恢复操作需要使用二进制日志。备份恢复后,重新执行备份后记录的二进制日志中的事件。这些事件从备份的角度使数据库保持最新状态。

purge binary logs before '2018-05-20 00:00:00';(清除某个时间点以前的二进制日志文件)
reset master;(清除所有的二进制日志文件)
show binary logs;

详细请参见mysql官方文档

5. DDL日志 (DDL log )

DDL日志或元数据日志记录由数据定义语句(如DROP TABLE或者 ALTER TABLE) 生成的元数据操作。MySQL用此日志来恢复元数据操作中发生的崩溃。
元数据操作的记录会写入到MySQL数据目录中的ddl_log.log(二进制文件)中。
目前,ddl_log.log最多可容纳1048573个条目,大小相当于4 GB。
超过此限制后,必须重新命名或删除文件,才能执行其他DDL语句。

如有错误,欢迎指正

原文已发布在个人博客 更多原创文章请移步个人主站~~
原文链接:https://ixiyu.me/archives/mysql-log.html


推荐阅读
  • 本文详细介绍了如何在两台运行 Windows Server 2003 的计算机上配置两个 MySQL 实例以实现主从复制。每台计算机分别命名为 Master 和 Slave,确保系统分区及 MySQL 安装路径的正确配置。 ... [详细]
  • Docker入门与实践指南
    本文介绍了Docker的基础知识,包括其作为开源应用容器引擎的特点,以及如何利用Docker将应用程序及其依赖项打包成轻量级的容器镜像。同时,还详细讲解了Docker的核心概念、安装过程及基本命令操作。 ... [详细]
  • 探讨GET与POST请求数据传输的最大容量
    在Web开发领域,GET和POST是最常见的两种数据传输方法。本文将深入探讨这两种请求方式在不同环境下的数据传输能力及其限制。 ... [详细]
  • 本文介绍了MySQL数据库的安全权限管理思想及其制度流程,涵盖从项目开发、数据库更新到日常运维等多个方面的详细流程控制,旨在通过严格的流程管理和权限控制,有效预防数据安全隐患。 ... [详细]
  • 本文介绍了Kettle资源库的基本概念、类型及其管理方法,同时探讨了Kettle的不同运行方式,包括图形界面、命令行以及API调用,并详细说明了日志记录的相关配置。 ... [详细]
  • ServletContext接口在Java Web开发中扮演着重要角色,它提供了一种方式来获取关于整个Web应用程序的信息。通过ServletContext,开发者可以访问初始化参数、共享数据以及应用资源。 ... [详细]
  • 在DELL Inspiron 14R上部署CentOS X64 6.4的详细步骤
    本文详细记录了在DELL Inspiron 14R笔记本电脑上安装CentOS X64 6.4操作系统的过程,包括遇到的问题及解决方法。 ... [详细]
  • Spring Boot 入门指南
    本文介绍了Spring Boot的基本概念及其在现代Java应用程序开发中的作用。Spring Boot旨在简化Spring应用的初始设置和开发过程,通过自动配置和约定优于配置的原则,帮助开发者快速构建基于Spring框架的应用。 ... [详细]
  • Git支持通过自定义钩子来扩展其功能,这些钩子根据触发条件的不同,可以分为客户端和服务器端两种类型。客户端钩子通常与本地操作相关联,如提交代码或合并分支;而服务器端钩子则与远程仓库的交互有关。 ... [详细]
  • addcslashes—以C语言风格使用反斜线转义字符串中的字符addslashes—使用反斜线引用字符串bin2hex—函数把包含数据的二进制字符串转换为十六进制值chop—rt ... [详细]
  • 尽管PHP是一种强大且灵活的Web开发语言,但开发者在使用过程中常会陷入一些典型的陷阱。本文旨在列出PHP开发中最为常见的10种错误,并提供相应的预防建议。 ... [详细]
  • 本文精选了几所优秀的PHP实训和培训学校,为希望深入学习PHP编程的学员提供参考。 ... [详细]
  • 本文提供了2023年最新的解决方案,帮助用户了解如何在移动设备上顺利访问和浏览PHP网页,涵盖从基础设置到高级技巧的全方位指导。 ... [详细]
  • 本文深入探讨了在MySQL数据库中利用innobackupex工具进行备份,并结合binlog日志实现数据库的完整恢复过程。适合对数据库管理和维护有一定需求的技术人员阅读。 ... [详细]
  • 本文深入探讨了Redis中的两种主要持久化方式——RDB(Redis Database)和AOF(Append Only File),并详细解析了两者的实现机制、优缺点以及在实际应用中的选择策略。 ... [详细]
author-avatar
手机用户2502878261
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有