`

MySQL 日志

    博客分类:
  • db
 
阅读更多

来源于 http://www.livingelsewhere.net/2011/03/24/mysql-log

 

查看 MySQL 慢日誌

 

在 MySQL 中有 4 种不同的日志, 分别为错误日志, 查询日志和慢查询日志, 二进制日志. 默认情况下, 为尽量减少 IO 损耗, 系统只打开错误日志. 若需要复制, 就必须要打开二进制日志.

 

错误日志

错误日志在 MySQL 数据库中很重要, 它记录着 MySQL 启动和停止, 以及服务器在运行过程中发生的任何错误的相关信息.

 

配置

如果配置文件 my.cnf 没有指定 log_eror, 则错问日志默认文件名为 hostname.err, 存放于 datadir 目录中.

mysql> SHOW VARIABLES LIKE 'log_error';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_error     |       |
+---------------+-------+
1 row in set (0.00 sec)

 将 log-error 配置到 my.cnf 文件中

[mysqld]
log_error=/usr/local/mysql/var/mysql-error.err

 查询日志

查询日志记录了所有操作的语句. 由于它记录数据库所有操作, 对于访问频繁的系统, 此种日志会造成性能影响, 所以一般不会将其打开.

配置

如果配置文件 my.cnf 有打开log选项, 但未指定具体文件名和路径, 则其默认文件名为 hostname.log, 存放于 datadir 目录中.

默认时查询日志变量值

mysql> SHOW VARIABLES LIKE 'log';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log           | OFF   |
+---------------+-------+
1 row in set (0.00 sec)

 如果有需要使用到查询日志, 将 log 配置到 my.cnf 文件中

[mysqld]
log=/usr/local/mysql/var/mysql_query.log

 查询日志是纯文本格式, 可使用文本读取工具直接打开查看.

慢查询日志

慢查询日志是记录执行时间超过参数 slow_launch_time(unit: s, v5.1 默认 2s v5.0.* 是 long_query_time)所设定值的 SQL 语句日志. 它有助于发现性能有问题的 SQL.

打开慢日志对系统性能的整体影响没有 binlog 那么大, 但系统需要计算每一条查询的执行时间, 所有, 在 CPU 方面还是有损耗的. 如果 CPU 资源不够, 可在大部分时候关闭这个, 只需间断性的打开来定位可能存在的慢查询.

配置

如果配置文件 my.cnf 有打开log_slow_queries选项, 但未指定具体文件名和路径, 则其默认文件名为 hostname-slow.log, 存放于 datadir 目录中.

默认情况下慢日志查询变量(v5.1):

 

mysql> SHOW VARIABLES LIKE '%slow%';
+---------------------+----------------------------------+
| Variable_name       | Value                            |
+---------------------+----------------------------------+
| log_slow_queries    | OFF                              |
| slow_launch_time    | 2                                |
| slow_query_log      | OFF                              |
| slow_query_log_file | /usr/local/mysql/var/db-slow.log |
+---------------------+----------------------------------+
4 rows in set (0.00 sec)

 如果有需要使用到慢查询日志, 将 log_slow_queries 配置到 my.cnf 文件中

[mysqld]
log_slow_queries=/usr/local/mysql/var/mysql_slow_query.log

 也可以在启动 MySQL 服务时, 加上 --log_slow_queries=filename.log

若需要进一步缩短慢查询时间限制, 可使用 Percona 提供的 microslow-patch(msl Patch). 它不仅能将时间减小到毫秒级别, 还能通过一些特定的规则来过滤记录的SQL, 如只记录某个表的慢查询.

 

查看慢日志

 

二进制日志

二进制日志记录了所有的 DDL 和 DML 的语句, 但不包括查询语句, 语句以事件方式保存, 此日志对发生灾难时数据恢复极为重要. MySQL 复制时, 必须将其打开.

启用配置

[mysqld]
log-bin=/usr/local/mysql/var/mysql-bin

 mysql-bin 为日志文件名,MySQL 在文件名后添加数字索引,所以该文件最后的形式类似于 mysql-bin.000001.如果在指定文件名时类似于 myql-bin.log, .log 会自动忽略. 该日志没有指定相对路径时,默认存放于 datadir 目录中.

如下情况时,二进制日志会更换到新的文件:

 

  • 服务器重启
  • 服务器被更新
  • 日志达到最大日志长度 max_binlog_size
  • 在 MySQL 命令终端 FLUSH LOGS

打开配置时各变量值(v5.1)

mysql> SHOW VARIABLES LIKE '%bin%';
+-----------------------------------------+----------------------+
| Variable_name                           | Value                |
+-----------------------------------------+----------------------+
| binlog_cache_size                       | 32768                |
| binlog_direct_non_transactional_updates | OFF                  |
| binlog_format                           | STATEMENT            |
| binlog_stmt_cache_size                  | 32768                |
| innodb_locks_unsafe_for_binlog          | OFF                  |
| log_bin                                 | ON                   |
| log_bin_trust_function_creators         | OFF                  |
| max_binlog_cache_size                   | 18446744073709547520 |
| max_binlog_size                         | 1073741824           |
| max_binlog_stmt_cache_size              | 18446744073709547520 |
| sql_log_bin                             | ON                   |
| sync_binlog                             | 0                    |
+-----------------------------------------+----------------------+
12 rows in set (0.00 sec)

 部分变量值说明

  • binlog_cache_size 事务过程中容纳二进制日志 SQL 语句的缓存大小. 二进制日志缓存是服务器支持事务存储引擎, 且服务器启用了二进制日志(log_bin)的前提下为每个客户端分配的内存, 注意是给每个客户端可以分配设置大小的 binlog cache 空间. 如果系统中会出现多语句的事务, 增加该值的大小, 以得到更好的性能.
  • max_binlog_cache_size 和binlog_cache_size对应, 它代表的是 binlog 能使用的最大 cache 值大小. 当不够大时, 系统可能会报“Multi_statement transaction required more than ‘max_binlog_cache_size’ bytes of storage”.
  • max_binlog_size binlog 最大值, 一般设置为 512KB 或 1GB, 但不能超过 1GB.
  • sync_binlog影响到 binlog 对 MySQL 所带来的性能消耗, 还影响到数据的完整性, 参数说明如下:
  • sync_binlog=0 事务提交后, 仅仅是将 binlog_cache 中的数据写入到 binlog 文件中, 但不执行 fsync 之类的磁盘操作指令通知文件系统将缓存刷新到磁盘, 而让文件系统自行决定什么时候来同步. sync_binlog=N 进行 N 次事务提交后, 系统将执行一次 fsync 之类的磁盘同步指令, 通知文件系统将 binlog 文件的缓存刷新到磁盘. 默认是 sync_binlog=0, 性能是最好, 但是风险是最大, 因为一旦系统 crash, 文件系统缓存中的 binlog 将都会丢失.设置为 1 时, 最安全但性能损耗最大, 当系统 crash 时, 最多只会丢失 binlog_cache 中未完成的一个事务, 对实际数据没有任何的影响.sync_binlog=0 性能 有可能是 sync_binlog=1 时的5倍.

记录内容配置

binlog_do_db=example1,example2	设定那些 db 需要记录binlog
binlog_ignore_db=test1,test2	设定那些 db不要记录 binlog

 
注:
如果在操作数据库之前,不使用use $dbname , 那么所有的SQL都不会记录, 如果使用了use $dbname,那么判断规则取决于这里的$dbname,而不是 SQL 中操作的库.

如果配置文件中没有配置这两个选项,则该主机上所有库的 DML 和 DLL 语句都会被记录。

 

删除查看二进制日志




 

分享到:
评论

相关推荐

    MySQL日志分析(包括工具)

    ### MySQL日志分析详解 #### 一、引言 MySQL作为一种广泛使用的开源关系型数据库管理系统,在维护数据库稳定性与性能方面发挥着至关重要的作用。为了更好地监控数据库的状态并及时解决潜在问题,MySQL提供了多种...

    linux运维学习笔记:Mysql日志.pdf

    MySQL日志是MySQL数据库中非常重要的一个组成部分,它们记录了数据库的各种活动,对于数据库的维护、故障排查以及性能优化都有着不可忽视的作用。在运维管理中,熟悉MySQL日志的配置和使用是非常关键的技能。本文将...

    使用Kettle获取MySQL日志文件名称

    使用Kettle获取MySQL日志文件名称

    MySQL日志管理详细讲解

    MySQL日志管理详细讲解 MySQL日志管理是数据库管理员的必备技能之一。日志文件记录了数据库的各种操作和错误信息,对于数据库的维护和错误排查起着至关重要的作用。本文将详细讲解 MySQL 日志管理的概念、种类、...

    阿里开发的,基于mysql日志消费客户端.zip

    基于 MySQL 日志消费客户端是一种用于处理 MySQL 数据库的日志文件的软件。它可以帮助用户实时监控数据库的状态,自动捕获和处理数据库的异常情况,从而提高数据库的可靠性和稳定性。 MySQL 日志消费客户端的主要...

    MYSQL日志与备份还原问题详解

    MySQL日志与备份还原是数据库管理中的重要环节,它们对于数据的安全性和可恢复性起着至关重要的作用。本文主要探讨了MySQL的错误日志、二进制日志(BINLOG)、数据备份和数据恢复这四个关键知识点。 首先,错误日志...

    mysql日志文件的使用.pdf

    MySQL日志文件是数据库管理的重要组成部分,它们记录了MySQL服务器的各种操作,有助于故障排查、数据恢复和性能优化。本文将详细介绍MySQL的日志类型、配置方法以及如何查看和使用这些日志。 1. MySQL日志类型: -...

    mysql日志.txt

    mysql log 学习

    MySQL日志的具体介绍

    MySQL 日志的具体介绍 MySQL 日志是 MySQL 中最重要的日志之一,它记录了当 mysqld 启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息。当数据库出现任何故障导致无法正常使用时,建议首先查看此...

    mysql日志清理手册

    MySQL日志清理手册 在MySQL数据库管理中,日志文件起着至关重要的作用,它们记录了数据库的各种操作,包括但不限于错误信息、查询历史以及数据变更等。这些日志对于故障排查、数据恢复和主从复制至关重要。然而,...

    第15章 MySQL日志PPT

    **MySQL日志系统详解** MySQL日志是数据库管理系统中至关重要的一部分,它记录了数据库的各种操作,包括查询、更新、插入和删除等。日志的存在确保了数据的安全性、可恢复性和性能优化。在本章中,我们将深入探讨...

    mysql 日志备份恢复2

    MySQL日志系统是数据库管理的重要组成部分,它对于数据安全、故障恢复和性能优化起到关键作用。本文将详细介绍MySQL中的几种日志类型,以及如何利用这些日志进行备份和恢复。 首先,MySQL的日志系统包括错误日志、...

    MySQL日志系统,一条SQL跟新语句是如何执行的,高清

    MySQL日志系统是数据库管理中非常关键的一部分,它记录了数据库中发生的所有事件。一条SQL更新语句的执行流程不仅仅是简单地修改数据而已,其背后有一整套复杂机制确保数据的安全、准确和恢复能力。本知识点将详细...

    mysql日志文件的使用.docx

    MySQL日志文件在数据库管理中扮演着至关重要的角色,它们记录了数据库的各种操作,帮助管理员监控、诊断问题以及实现数据恢复。以下是对MySQL日志类型的详细解释和使用方法: 1. **错误日志(The error log)**:这...

    MySQL数据库日志管理.ppt

    MySQL日志主要分为四类:错误日志、查询日志、二进制日志和慢查询日志。错误日志记录MySQL服务的启动、运行或停止MySQL服务时出现的问题。查询日志记录建立的客户端连接和执行的语句。二进制日志记录所有更改数据的...

    MySQL 日志详解(超详细)

    MySQL日志系统是数据库管理的重要组成部分,它记录了数据库的各种操作和事件,为故障排查、性能优化、数据恢复等提供了重要参考。以下是对MySQL日志的详细解析: 1. 错误日志(Error Log) MySQL的错误日志记录了...

    07.26MySQL日志 备份与恢复1

    MySQL 日志备份与恢复 MySQL 是一种常用的关系数据库管理系统,它提供了多种日志机制来记录数据库的各种操作和错误信息。这些日志文件对于数据库的备份和恢复至关重要。本文将详细介绍 MySQL 的日志机制、备份类型...

Global site tag (gtag.js) - Google Analytics