mysql 5.5 有以下几种日志:

错误日志(error log): log-err
查询日志(general  query log): log
慢查询日志: -log-slow-queries       
二进制日志 (binary log): log-bin

中继日志( relay log)

innodb 在线redo 日志
默认情况下,没有启动任何log,可以通过log 选项来启动相关的log
mysql> show variables like 'log_%';
+---------------------------------+--------------------------+
| Variable_name                   | Value                    |
+---------------------------------+--------------------------+
| log_bin                         | ON                       |
| log_bin_trust_function_creators | OFF                      |
| log_error                       | /var/lib/mysql/mysql.log |
| log_output                      | FILE                     |
| log_queries_not_using_indexes   | OFF                      |
| log_slave_updates               | ON                       |
| log_slow_queries                | OFF                      |
| log_warnings                    | 1                        |
+---------------------------------+--------------------------+
8 rows in set (0.00 sec)

认情况下,所有日志创建于mysqld数据目录中。通过刷新日志,你可以强制
mysqld来关闭和重新打开日志文件(或者在某些情况下切换到一个新的日志)。当你执行一个FLUSH LOGS语句或执行mysqladmin
flush-logs或mysqladmin refresh时,出现日志刷新
1. 错误日志
错误日志记录着mysqld启动和停止,以及服务器在运行过程中发生的错误的相关信息。在默认情况下,系统记录错误日志的功能是关闭的,错误信息被输出到标准错误输出。需要在启动的时候开启 log-error选项
如果没有指定文件名 默认hostname.err,默认路径为datadir目录
指定日志路径两种方法
编辑my.cnf     写入 log-error=[path]
mysqld_safe --user=mysql --log-error=[path] &
 ;
+--------------------+--------------------------+
| Variable_name      | Value                    |
+--------------------+--------------------------+
| error_count        | 0                        |
| log_error          | /var/log/mysql/mysql.log |
| max_connect_errors | 10                       |
| max_error_count    | 64                       |
| slave_skip_errors  | OFF                      |
mv  mysql.log  mysql_old.log 
 mysqladmin  -uroot -pmysql flush-logs
On Windows, use rather
than.

查询日志 general  query log

general
 query log写入日志是在客户端执行命令,并且释放锁之前,写入日志
数据库访问量很大,想要从SQL方面进行优化,因为为了性能考虑,一般general log不会开启。slow log可以定位一些有性能问题的sql,而general log会记录所有的SQL。l
general query log和slow query log开始支持写到文件或者数据库表两种方式,并且日志的开启,输出方式的修改,都可以在Global级别动态修改。
 查看日志的存放方式 show variables like 'log_output';
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'  的话,则日志结果会记录到名为gengera_log的表中,这表的默认引擎都是CSV
如果设置表数据到文件  set global log_output=file;
设置general log的日志文件路径:set global general_log_file='/tmp/general.log';
开启general log: set global general_log=on;    ---不需要服务器的重启
关闭general log: set global general_log=off;
general  query log 的清理
mv general.log  general_old.log 
 mysqladmin  -uroot -pmysql flush-logs
On Windows, use rather
than.

 set  global sql_log_off=on; 可以让 当前session不记录 执行的sql 语句
 慢查询日志采用的是简单的文本格式,可以通过文本编辑器查看其中的内容,其中记录了语句的执行时刻,执行消耗的时间,执行用户,连接主机等相关信息。mysql还提供了专门分析日志的工具, mysqlslowdump用来解决可能存在的性能问题。
慢查询只有在大于 

long_query_time 指定时间的sql statement , min_examined_row_limit最小检查行数限制
才会被检查,语句被写入slow log 是在语句被执行后,并且释放锁之前,默认情况下,慢查询日志是被关闭的

 

long_query_time 的值被设置为0-10之间,默认值是10.

 
:系统管理语句
就在慢查询日志中. 系统管理语句包括 ALTER TABLE, ANALYZE
TABLE, CHECK TABLE, CREATE
INDEX, DROP INDEX, OPTIMIZE
TABLE, and REPAIR TABLE.
log-short-format   记录少量的日志 
5.6.5版本开始新增了一个参数log_throttle_queries_not_using_indexes,用来表示每分钟允许记录到slow log的且未使用索引的SQL语句次数。 该值默认为0,表示没有限制。在生产环境下,若没有使用索引,此类SQL语句会频繁地被记录到slow
log,从而导致slow log文件的大小不断增加,故DBA可通过此参数进行配置。

a
replication slave does not write replicated queries to the slow query log. To change this, use thelog_slow_slave_statements system
variable.

---指定初始化参数,开启慢查询
slow_query_log = 1   0是关闭慢查询,1是打开
 show variables like 'log_output';              ---日志存放的方式,是表还是文件
 5.1.12
之前开启慢查询
打开慢查询,运行如下sql:
set global log_slow_queries = ON;
mysql> set long_query_time=0.01; #设置大于0.1s的sql语句记录下来
 ; 
+---------------------+-----------------------------------+
| Variable_name       | Value                             |
+---------------------+-----------------------------------+
| log_slow_queries    | OFF                               |
| slow_launch_time    | 2                                 |
| slow_query_log      | OFF                               |
+-----------------+----------+
| Variable_name   | Value    |
使用MySQL自带命令mysqldumpslow查看

eg:
mysqldumpslow -s c -t 20 host-slow.log
mysqldumpslow -t 10 -s t -g “left join” host-slow.log这个是按照时间返回前10条里面含有左连接的sql语句。

4 二进制日志: -log-bin
二进制日志不会记录select ,show 等不修改数据的语句。打开二进制日志会消耗一些系统系能,但是对于复制和系统恢复,所带来的好处大于减少的性能,

二进制日志即binlog日志 记录数据定义语言(DDL)和数据控制语言(DML) 但不包括数据查询语言。
二进制日志的功能
1、恢复(recovery)
2、复制(replication)

binlog  还有其他的一下附加参数
binlog-do-db=db_name 
显示指定,mysql会忽略正对其他书库执行query,而仅仅记录正对指定数据库执行的query
binlog-ignore-db=db_name

binlog-do-db=db_name  指定保存更新到 binlog 的数据库
binlog-ignore-db=db_name  指定不保存更新到 binlog 的数据库
 binlog-do-db 和binlog-ignore-db
参数 有一个共同的概念,参数db_name 不是指query
语句更新的数据所在的数据库,而是执行query的时候,当前所处的数据库。不论更新那个数据库的数据,mysql仅仅比较当前连接所处的数据库与参数设置的数据库名。而不会分析query语句所更新的数据库所在数据库。
 ; 
| Variable_name     | Value |
当使用事务的存储引擎InnoDB时,所有未提交的事务会记录到一个缓存中,等待事务提交时,直接将缓冲中的二进制日志写入二进制日志文件,而该缓冲的大小由binlog_cache_size决定,默认大小为32KB,此外,binlog_cache_size是基于回话的,也就是,当一个线程开始一个事务时,mysql会自动分配一个大小为binlog_cache_size的缓存,因此该值得设置需要相当小心,可以通过show global status 查看binlog_cache_use、binlog_cache_disk_use的状态,可以判断当前binlog_cache_size的设置是否合适。

sync_binlog:

mysql> show variables like 'sync_binlog';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| sync_binlog   | 0     |
参数sync_binlog=[N]表示每写缓存多少次就同步到磁盘,如果将N设置为1,则表示采用同步写磁盘的方式来写二进制日志,该参数很重要,这个以后还会提到。值得注意的是,在将该参数设置为1时,也应该将innodb_support_xa设为1来解决,这可以确保二进制日志和InnoDB存储引擎数据文件的同步

 set  global sql_log_off=on; 可以让 当前session不记录 执行的sql 语句

Log-slave-update该参数在搭建master=>slave=>slave的架构时,需要配置。

如果没有指定文件名 默认mysql-bin,默认路径为datadir目录

log-bin             = /var/log/mysql/mysql-bin.log    --指定二进制日志的名称

log_bin_index       = /var/log/mysql/mysql-bin.log.index     --二进制日志索引的名称
relay_log           = /var/log/mysql/mysql-bin.relay    ---中继日志的名称
relay_log_index     = /var/log/mysql/mysql-bin.relay.index    ---中级日志索引的名称
如果你执行FLUSH LOGS,log-bin 会使用新的二进制日志编号

由于binlog以是binary方式存取,不能直接查看,需要用mysql提供的mysqlbinlog工具查看

show binlog events \G只能查看第一个日志的events
show binlog events in 'mysql-bin.000003';可以查看具体位置日志的events

2. mysql> purge master logs to 'mysq-bin.******' 命令可以删除指定编号前的所有日志
4. 在my.cnf 中指定日志过期 expire_logs-days=n

可以使用purgebinary logs语句来清除binary logs。

Binlog_format参数也特别重要。从mysql5.1版本开始引入这个参数,该参数可以设置的值有STATEMENT\、ROW、MIXED;

(1)STATEMENT格式和之前的mysql版本一样,二进制日志文件记录的是日志的逻辑失SQL语句。

(2)在ROW格式下,二进制日志记录的不再是简单的SQL语句了,而是记录表的行更改情况,此时可以将InnoDB的事务隔离基本设为READ COMMITTED,以获得更好的并发性。

(3)MIXED格式下,mysql默认采用的STATEMENT格式进行二进制日志文件的记录,但是在一些情况下会使用ROW格式,可能的情况包括:

1)表的存储引擎为NDB,这时对于表的DML操作都会以ROW格式记录

2)使用了UUID()、USER()、CURRENT_USER()、FOUND_ROWS()、ROW_COUNT()等不确定函数

3)使用了INSERT DELAY语句

4)使用了用户定义函数

5)使用了临时表

mysql> show variables like "%binlog_format%"

    -> ;
+---------------+-----------+
| Variable_name | Value     |
+---------------+-----------+
| binlog_format | STATEMENT |
+---------------+-----------+
1 row in set (0.00 sec)


 relay log)

中继日志也是二进制日志,用来给slave 库恢复

6 innodb 在线redo 日志  innodb redo log

innodb 是一个事物安全的存储引擎,其事物安全性主要通过在线的redo日志和记录在表空间的undo信息来保证。redo
日志中记录了innodb所做的所有物理变更和事物信息。innodb的redo日志同样默认存放在数据目录下面。可以通过innodb_log_group_home_dir
来更改日志的存放位置。

通过innodb_log_files_in_group 设置日志的数量。

 更新日志: -log-update

总结:

日志直接性能损耗数据库系统中最为昂贵的IO 资源,在默认情况下,系统仅打开错误日志,关闭了其他所有日志,以达到尽可能减少IO 损耗提高系统性能的目的。

测试环境中,为了定位某些功能具体使用了哪些SQL 语句的时候,才会在短时间段内打开该日志来做相应的分析。所以,在MySQL 系统中,会对性能产生影响的MySQL日志(不包括各存储引擎自己的日志)主要是Binlog 。

mysql 几种日志的更多相关文章

  1. Mysql三种日志(binlog,redolog,undolog)的作用和区别

    Mysql有三种很重要的日志也是面试经常涉及到的考点,分别是 binlog .redo log和undo log, 这里面binlog 是server层实现的日志,而redo log 和undo lo ...

  2. MySQL 4种日志

  3. mysql中的日志

    关键词:mysql日志,mysql四种日志 一.mysql日志的种类 (1)一般来说,日志有四种,分别为: 1.错误日志:log-err (记录启动,运行,停止mysql时出现的信息) 2.二进制日志 ...

  4. mysql中的几种日志了解

    前言 MySQL中有以下日志文件,分别是: 1:重做日志(redo log) 2:回滚日志(undo log) 3:二进制日志(binlog) 4:错误日志(errorlog) 5:慢查询日志(slo ...

  5. mysql中有多少种日志

    Mysql的日志包括如下几种日志: 错误日志 普通查询日志 二进制日志 慢查询日志 Mysql版本 此文档测试mysql的版本为 mysql -V 错误日志 error log Mysql错误日志主要 ...

  6. MySQL不会丢失数据的秘密,就藏在它的 7种日志里

    本文收录在 GitHub 地址 https://github.com/chengxy-nds/Springboot-Notebook 进入正题前先简单看看MySQL的逻辑架构,相信我用的着. MySQ ...

  7. mysql常见的5种日志

    点赞再看,养成习惯,微信搜索「小大白日志」关注这个搬砖人. 文章不定期同步公众号,还有各种一线大厂面试原题.我的学习系列笔记. 错误日志(errorlog) 用来记录mysqlId的错误信息,如数据库 ...

  8. MySQL慢查询日志总结

    慢查询日志概念 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志 ...

  9. 解说mysql之binlog日志以及利用binlog日志恢复数据

    众所周知,binlog日志对于mysql数据库来说是十分重要的.在数据丢失的紧急情况下,我们往往会想到用binlog日志功能进行数据恢复(定时全备份+binlog日志恢复增量数据部分),化险为夷! 废 ...

随机推荐

  1. Linux nmcli 网络管理

    Linux nmcli 网络管理 RHEL 和 CentOS 系统默认使用 NetworkManager 来提供网络服务,这是一种动态管理网络配置的守护进程,能够让网络设备保持连接状态.可以使用 nm ...

  2. 【题解】Luogu P1471 方差

    原题传送门 简单进行推导之后,就能发现很妙的结论 用线段树维护区间和,区间平方和就珂以算出结果 #include <bits/stdc++.h> #define db double #de ...

  3. knative

    office Doc Knative 简介 Install sevice example (knative) There is only one node in the cluster so we u ...

  4. @Override报错的处理

    有时候我们从SVN导的项目,jre和jar包都没问题,但是就会出如下图的错误: xi 点击红叉,显示错误信息如下: 点击工具里面的window-->preferences-->java-- ...

  5. Guitar Por如何演奏刮弦

    每当我们听到吉他现场演出的时候,看到吉他手在激烈的刮弦时,都觉得很酷,非常有感染力.刮弦在我们弹吉他或编曲时,会经常用到,虽然时间很短,但会为你加分不少. 那么我们应该如何演奏刮弦呢,我们先用E5和弦 ...

  6. RocketMq 集群搭建 部署

    原文链接:https://blog.csdn.net/weixin_40533111/article/details/84451219 作者小太阳^_^,转载请注明出处,谢谢 前言本文基于最新版roc ...

  7. L1,L2正则化代码

    # L1正则 import numpy as np from sklearn.linear_model import Lasso from sklearn.linear_model import SG ...

  8. webform运行时弹出JavaScript的alert窗口

    https://stackoverflow.com/questions/9720143/asp-net-web-application-message-box Or create a method l ...

  9. CSS--block inline inline-block

    display:block block元素会独占一行,多个block元素会各自新起一行.默认情况下,block元素宽度自动填满其父元素宽度. block元素可以设置width,height属性.块级元 ...

  10. _spellmod_aura_pct_on_stat

    为玩家添加属性转换光环 `comment` 备注 `aura`光环ID `auraType1` 选择添加('治疗效果','法术强度','近战攻击强度','远程攻击强度','空')  `statType ...