热门标签 | 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


推荐阅读
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 本文介绍了将mysql从5.6.15升级到5.7.15的详细步骤,包括关闭访问、备份旧库、备份权限、配置文件备份、关闭旧数据库、安装二进制、替换配置文件以及启动新数据库等操作。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
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社区 版权所有