Mysql通用日志总结

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

1、通用日志概念及作用

通用日志会记录mysql的所有操作,包含查询操作,方便开发人员与数据库人员跟踪数据执行过程。

Mysql相关的参数:

log_output=[none|file|table|file,table]      #通用查询日志输出格式

general_log=[on|off]                     #是否启用通用查询日志

general_log_file[=filename]                #通用查询日志位置及名字

注:filetable的区别,file会记录在文件中,而table是记录在mysql.general_log表中。

2、如何开启(使用file输出格式)

2.1、通用日志默认是不开启,查看方法

1
2
mysql>  select  version();+ ------------+| version()  |+------------+| 5.7.16-log |+------------+1 row in set (0.00 sec) 
mysql> show variables  like  "%general%" ;+ ------------------+---------------------------+| Variable_name    | Value                     |+------------------+---------------------------+| general_log      | OFF                       || general_log_file | /var/lib/mysql/aboss5.log |+------------------+---------------------------+2 rows in set (0.00 sec)

2.2、临时设置(不需要重启)

1
2
3
mysql>  set  global  log_output=file;Query OK, 0  rows  affected (0.00 sec) 
mysql>  set  global  general_log_file= '/var/lib/mysql/mysql_general.log' ;Query OK, 0  rows  affected (0.00 sec) 
mysql>  set  global  general_log= on ;Query OK, 0  rows  affected (0.01 sec)

使用完记得关闭,要不然会影响mysql性能

1
mysql>  set  global  general_log= off ;Query OK, 0  rows  affected (0.00 sec)

2.3、永久设置(需要重启机器)

1
2
3
4
vim /etc/my.cnf 
    log_output=file
    general_log= on
    general_log_file=/var/lib/mysql/mysql-general.log

 

3、如何开启(使用table或同时开启tablefile两者输出格式)

3.1、临时改成table输出格式

注:永久操作,就是在Mysqlmy.cnf配置就可以了,这里就不操作。

1
2
3
4
mysql>  set  global  general_log= on ;Query OK, 0  rows  affected (0.00 sec) 
mysql> show variables  like  'log_output' ;+ ---------------+-------+| Variable_name | Value |+---------------+-------+| log_output    | FILE  |+---------------+-------+1 row in set (0.00 sec) 
mysql>  set  global  log_output= 'TABLE' ;Query OK, 0  rows  affected (0.00 sec) 
mysql>  select  from  mysql.slow_log;Empty  set  (0.00 sec)

查看结果

1
mysql>  select  thread_id,command_type,argument,event_time  from  mysql.general_log;+ -----------+--------------+--------------------------------------------------------------------------+----------------------------+| thread_id | command_type | argument                                                                 | event_time                 |+-----------+--------------+--------------------------------------------------------------------------+----------------------------+|       136 | Query        | select * from mysql.slow_log                                             | 2016-11-25 17:17:44.237846 ||       136 | Query        | desc mysql.general_log                                                   | 2016-11-25 17:19:05.909411 ||       136 | Query        | select thread_id,command_type,argument,event_time from mysql.general_log | 2016-11-25 17:19:50.188954 |+-----------+--------------+--------------------------------------------------------------------------+----------------------------+3 rows in set (0.00 sec)

3.2、同时开启FILE,TABLE 两者输出格式

1
2
3
4
mysql>  set  global  log_output= 'file,table' ;Query OK, 0  rows  affected (0.00 sec) 
mysql>  select  @@ global .log_output;+ ---------------------+| @@global.log_output |+---------------------+| FILE,TABLE          |+---------------------+1 row in set (0.00 sec) 
mysql>  select  thread_id,command_type,argument,event_time  from  mysql.general_log;+ -----------+--------------+--------------------------------------------------------------------------+----------------------------+| thread_id | command_type | argument                                                                 | event_time                 |+-----------+--------------+--------------------------------------------------------------------------+----------------------------+|       136 | Query        | select * from mysql.slow_log                                             | 2016-11-25 17:17:44.237846 ||       136 | Query        | desc mysql.general_log                                                   | 2016-11-25 17:19:05.909411 ||       136 | Query        | select thread_id,command_type,argument,event_time from mysql.general_log | 2016-11-25 17:19:50.188954 ||       136 | Query        | show variables like 'log_output'                                         | 2016-11-25 17:23:21.393370 ||       136 | Query        | set global log_output='file,table'                                       | 2016-11-25 17:23:41.443710 ||       136 | Query        | select @@global.log_output                                               | 2016-11-25 17:23:54.132140 ||       136 | Query        | select thread_id,command_type,argument,event_time from mysql.general_log | 2016-11-25 17:24:08.725540 |+-----------+--------------+--------------------------------------------------------------------------+----------------------------+7 rows in set (0.00 sec) 
mysql>  commit ;Query OK, 0  rows  affected (0.00 sec)

日志文件查看

1
2
mysql> system tail /var/lib/mysql/mysql_general.log
  /usr/sbin/mysqld, Version: 5.7.16-log (MySQL Community Server (GPL)). started  with :Tcp port: 3306  Unix socket: /var/lib/mysql/mysql.sockTime                 Id Command    Argument2016-11-25T09:17:12.234377Z     136 Query  show variables  like  'log_output' 2016-11-25T09:17:32.614030Z     136 Query   set  global  log_output= 'TABLE' 2016-11-25T09:23:54.132140Z     136 Query   select  @@ global .log_output2016-11-25T09:24:08.725540Z     136 Query   select  thread_id,command_type,argument,event_time  from  mysql.general_log2016-11-25T09:24:15.510491Z     136 Query   commit

查看mysql.general_log

1
mysql>  select  thread_id,command_type,argument,event_time  from  mysql.general_log;+ -----------+--------------+--------------------------------------------------------------------------+----------------------------+| thread_id | command_type | argument                                                                 | event_time                 |+-----------+--------------+--------------------------------------------------------------------------+----------------------------+|       136 | Query        | select * from mysql.slow_log                                             | 2016-11-25 17:17:44.237846 ||       136 | Query        | desc mysql.general_log                                                   | 2016-11-25 17:19:05.909411 ||       136 | Query        | select thread_id,command_type,argument,event_time from mysql.general_log | 2016-11-25 17:19:50.188954 ||       136 | Query        | show variables like 'log_output'                                         | 2016-11-25 17:23:21.393370 ||       136 | Query        | set global log_output='file,table'                                       | 2016-11-25 17:23:41.443710 ||       136 | Query        | select @@global.log_output                                               | 2016-11-25 17:23:54.132140 ||       136 | Query        | select thread_id,command_type,argument,event_time from mysql.general_log | 2016-11-25 17:24:08.725540 ||       136 | Query        | commit                                                                   | 2016-11-25 17:24:15.510491 ||       136 | Query        | select thread_id,command_type,argument,event_time from mysql.general_log | 2016-11-25 17:25:11.699651 |+-----------+--------------+--------------------------------------------------------------------------+----------------------------+9       rows in set (0.00 sec)

 

4、关于设置一些小结论

1)当log_output设置为 TABLEFILE或两者都设置,而general_log=off时,sql操作不会记录记录在通用日志中。

2)当log_output设置为NONEgeneral_log=on时,sql操作也不会被记录在通用日志中。



本文转自 corasql 51CTO博客,原文链接:http://blog.51cto.com/corasql/1905350,如需转载请自行联系原作者
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
265
分享
相关文章
ELK实现nginx、mysql、http的日志可视化实验
通过本文的步骤,你可以成功配置ELK(Elasticsearch, Logstash, Kibana)来实现nginx、mysql和http日志的可视化。通过Kibana,你可以直观地查看和分析日志数据,从而更好地监控和管理系统。希望这些步骤能帮助你在实际项目中有效地利用ELK来处理日志数据。
168 90
mysql的undo log、redo log、bin log、buffer pool
MySQL的undo log、redo log、bin log和buffer pool是确保数据库高效、安全和可靠运行的关键组件。理解这些组件的工作原理和作用,对于优化数据库性能和保障数据安全具有重要意义。通过适当的配置和优化,可以显著提升MySQL的运行效率和数据可靠性。
32 16
mysql的undo log、redo log、bin log、buffer pool
MySQL的undo log、redo log、bin log和buffer pool是确保数据库高效、安全和可靠运行的关键组件。理解这些组件的工作原理和作用,对于优化数据库性能和保障数据安全具有重要意义。通过适当的配置和优化,可以显著提升MySQL的运行效率和数据可靠性。
18 4
MySQL日志
本文介绍了MySQL中三个重要的日志:binlog、redolog和undolog。binlog记录数据库更改操作,支持数据恢复、复制和审计;redolog保证事务的原子性和持久性,实现crash-safe;undolog用于事务回滚及MVCC的实现。每个日志都有其独特的作用和应用场景,确保数据库的稳定性和数据一致性。
图解MySQL【日志】——磁盘 I/O 次数过高时优化的办法
当 MySQL 磁盘 I/O 次数过高时,可通过调整参数优化。控制刷盘时机以降低频率:组提交参数 `binlog_group_commit_sync_delay` 和 `binlog_group_commit_sync_no_delay_count` 调整等待时间和事务数量;`sync_binlog=N` 设置 write 和 fsync 频率,`innodb_flush_log_at_trx_commit=2` 使提交时只写入 Redo Log 文件,由 OS 择机持久化,但两者在 OS 崩溃时有丢失数据风险。
39 3
简单聊聊MySQL的三大日志(Redo Log、Binlog和Undo Log)各有什么区别
在MySQL数据库管理中,理解Redo Log(重做日志)、Binlog(二进制日志)和Undo Log(回滚日志)至关重要。Redo Log确保数据持久性和崩溃恢复;Binlog用于主从复制和数据恢复,记录逻辑操作;Undo Log支持事务的原子性和隔离性,实现回滚与MVCC。三者协同工作,保障事务ACID特性。文章还详细解析了日志写入流程及可能的异常情况,帮助深入理解数据库日志机制。
图解MySQL【日志】——Redo Log
Redo Log(重做日志)是数据库中用于记录数据页修改的物理日志,确保事务的持久性和一致性。其主要作用包括崩溃恢复、提高性能和保证事务一致性。Redo Log 通过先写日志的方式,在内存中缓存修改操作,并在适当时候刷入磁盘,减少随机写入带来的性能损耗。WAL(Write-Ahead Logging)技术的核心思想是先将修改操作记录到日志文件中,再择机写入磁盘,从而实现高效且安全的数据持久化。Redo Log 的持久化过程涉及 Redo Log Buffer 和不同刷盘时机的控制参数(如 `innodb_flush_log_at_trx_commit`),以平衡性能与数据安全性。
29 5
图解MySQL【日志】——Redo Log
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
1214 31
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
什么是Apache日志?为什么Apache日志分析很重要?
Apache是全球广泛使用的Web服务器软件,支持超过30%的活跃网站。它通过接收和处理HTTP请求,与后端服务器通信,返回响应并记录日志,确保网页请求的快速准确处理。Apache日志分为访问日志和错误日志,对提升用户体验、保障安全及优化性能至关重要。EventLog Analyzer等工具可有效管理和分析这些日志,增强Web服务的安全性和可靠性。
MySQL日志详解——日志分类、二进制日志bin log、回滚日志undo log、重做日志redo log
MySQL日志详解——日志分类、二进制日志bin log、回滚日志undo log、重做日志redo log、原理、写入过程;binlog与redolog区别、update语句的执行流程、两阶段提交、主从复制、三种日志的使用场景;查询日志、慢查询日志、错误日志等其他几类日志
121 35
MySQL日志详解——日志分类、二进制日志bin log、回滚日志undo log、重做日志redo log