MySQL 服务器上一共有六种日志:错误日志,查询日志,慢查询日志,二进制日志,事务日志,中继日志。

原文:https://segmentfault.com/a/1190000003072237

一 错误日志

错误日志不仅仅记录错误信息,它记录的事件有:
- 服务器启动和关闭过程中的信息
- 服务器运行过程中的错误信息
- 事件调度器运行一个事件时产生的信息
- (如果被配置为从服务器)启动从服务器进程时产生的信息

查看错误日志文件的路径

在mysql数据库中,错误日志功能是默认开启的。

mysql> SHOW VARIABLES LIKE 'log_error%';
+---------------+-----------------------------------------------+
| Variable_name | Value |
+---------------+-----------------------------------------------+
| log_error | /opt/lampstack-5.4.22-0/mysql/data/mysqld.log |
+---------------+-----------------------------------------------+

配置错误日志

编辑 my.cnf(一般在mysql目录下),修改 log-error 参数,如果没有就新增:
错误日志文件配置

# Error Logging.
log-error="filename.log"
  • 相关配置变量说明
    log_error={1 | 0 | /PATH/TO/ERROR_LOG_FILENAME}
    定义错误日志文件。作用范围为全局或会话级别,可用于配置文件,属非动态变量。
    log_warnings = {1|0}
    决定是否将警告信息记录入错误日志。

二 查询日志

其中查询日志记录查询操作,默认情况下查询日志是关闭的。开启查询日志会增加很多磁盘 I/O, 所以如非出于调试目的,不建议开启查询日志

查看查询日志是否启用及查询日志的路径

mysql> SHOW VARIABLES LIKE 'general_log%';
+------------------+--------------------------------------------------+
| Variable_name | Value |
+------------------+--------------------------------------------------+
| general_log | OFF |
| general_log_file | /opt/lampstack-5.4.22-0/mysql/data/localhost.log |
+------------------+--------------------------------------------------+

配置查询日志

编辑 my.cnf,修改 general-log 参数为 1,同时设定 log-output 参数(日志输出类型)和 general_log_file 参数(查询日志路径):

# General logging.:
log-output=FILE
general-log=1
general_log_file="filename.log"

保存 my.cnf 更改,重启 MySQL 服务。

三 慢查询日志

慢查询是指执行时长(包括等待CPU/IO的时间)超过 long_query_time 这个变量定义的时长的查询。慢查询日志开销比较小,可以用于定位性能问题,建议开启。

查看慢查询日志是否启用及慢查询日志的路径

mysql> SHOW VARIABLES LIKE 'slow_query_log%';
+---------------------+--------------------------------------------------+
| Variable_name | Value |
+---------------------+--------------------------------------------------+
| slow_query_log | OFF |
| slow_query_log_file | /usr/local/var/mysql/upstreamdeMac-mini-slow.log |
+---------------------+--------------------------------------------------+

配置慢查询日志

编辑 my.cnf ,设置 log_slow_queries 参数为 1,同时设定 log-output 参数(日志输出类型)、slow-query-log_file 参数(慢查询日志路径)和 long_query_time 参数:

# Slow logging.
log-output=FILE
log_slow_queries=1 //MySQL 5.6将此参数修改为了slow_query_log
slow_query_log_file="filename.log"
long_query_time=10 //慢查的时长单位为秒,可以精确到小数点后6位(微秒)

保存 my.cnf 更改,重启 MySQL 服务。

关闭慢查询日志

设置 log_slow_queries 参数为 0:

# Slow logging.
log-output=NONE
log_slow_queries=0 //MySQL 5.6将此参数修改为了slow_query_log
slow_query_log_file="filename.log"
long_query_time=10

保存 my.cnf 更改,重启 MySQL 服务。

四 二进制日志

二进制日志记录 MySQL 数据库中所有与更新相关的操作,即二进制日志记录了所有的 DDL(数据定义语言)语句和 DML(数据操纵语言)语句,但是不包括数据查询语句。常用于恢复数据库和主从复制。

查看 log_bin 状态

mysql> SHOW VARIABLES LIKE 'log_bin%';
+---------------------------------+-------+
| Variable_name | Value |
+---------------------------------+-------+
| log_bin | OFF |
| log_bin_basename | |
| log_bin_index | |
| log_bin_trust_function_creators | OFF |
| log_bin_use_v1_row_events | OFF |
+---------------------------------+-------+

启用二进制日志功能

编辑 my.cnf ,在 [mysqld] 下添加

# Binary Logging.
log-bin="filename-bin"

保存 my.cnf 更改,重启 MySQL 服务。

其他相关配置:

max_binlog_size={4096 .. 1073741824} ;
设定二进制日志文件上限,单位为字节,最小值为4K,最大值为1G,默认为1G。某事务所产生的日志信息只能写入一个二进制日志文件,因此,实际上的二进制日志文件可能大于这个指定的上限。作用范围为全局级别,可用于配置文件,属动态变量。

查看日志文件

在data目录下有一个mysql-bin.index便是索引文件,以mysql-bin开头并以数字结尾的文件为二进制日志文件。
查看所有的二进制文件:

mysql> show binary logs;
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000001 | 276665 |
+------------------+-----------+
1 row in set (0.03 sec)

查看当前正在使用的二进制文件:

mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 | 107 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

二进制日志滚动

当 MySQL 服务进程启动、当前二进制日志文件的大小已经超过上限时、执行 FLUSH LOG 时,MySQL 会创建一个新的二进制日志文件。新的编号大1的日志用于记录最新的日志,而原日志名字不会被改变。

手动滚动命令:flush logs;

查看日志详细

查看binlog日志有几种方式:
1. 使用show binlog events方式可以获取当前以及指定binlog的日志,
2. 使用mysqlbinlog命令行。

1. show binlog events方式

  • 只查看第一个binlog文件的内容(show binlog events)
mysql> show binlog events; #默认会返回mysql-bin.000001的日志
#太多,我就不截屏了
  • 查看指定binlog文件的内容(show binlog events in 'binname.xxxxx')
mysql> show binlog events in 'mysql-bin.000002';

  • 获取指定位置binlog的内容(show binlog events from xxx)
mysql> show binlog events in 'mysql-bin.000002'  from 107;

2. mysqlbinlog命令行

mysqlbinlog在mysql/bin目录

I 查看binlog日志

  • 查看指定的binlog日志
[root@localhost bin]# ./mysqlbinlog ../data/mysql-bin.000003
  • 按时间查看二进制日志
    mysqlbinlog ../data/mysql-bin.000003 --start-datetime="2015-3-11 17:00:00"
    mysqlbinlog ../data/mysql-bin.000003 --stop-datetime="2015-3-12 17:30:00"
    mysqlbinlog ../data/mysql-bin.000003 --start-datetime="2015-3-11 17:00:00" --stop-datetime="2015-3-12 17:30:00"

  • 按字节数查看二进制日志
    mysqlbinlog ../data/mysql-bin.000003 --start-position=20
    mysqlbinlog ../data/mysql-bin.000003 --stop-position=200
    mysqlbinlog ../data/mysql-bin.000003 --start-position=20 --stop-position=200

  • 过滤insert、update操作
    mysqlbinlog ../data/mysql-bin.000003 | grep insert

II 查看binlog日志并输出

下面参考:使用mysqlbinlog提取二进制日志

c、提取指定position位置的binlog日志并输出到压缩文件
# mysqlbinlog --start-position="120" --stop-position="332" /opt/data/APP01bin.000001 |gzip >extra_01.sql.gz d、提取指定position位置的binlog日志导入数据库
# mysqlbinlog --start-position="120" --stop-position="332" /opt/data/APP01bin.000001 | mysql -uroot -p e、提取指定开始时间的binlog并输出到日志文件
# mysqlbinlog --start-datetime="2014-12-15 20:15:23" /opt/data/APP01bin.000002 --result-file=extra02.sql

 

(转)MySQL日志管理的更多相关文章

  1. MySQL日志管理

    MySQL日志管理 2013年09月26日 ⁄ MySQL ⁄ 共 14266字 ⁄ 评论数 ⁄ 被围观 , views+ 一.日志类型: MySQL有几个不同的日志文件,可以帮助你找出mysqld内 ...

  2. MySQL 日志管理详解

    大纲 一.日志分类 二.日志详解 注:MySQL版本,Mysql-5.5.32(不同版本的mysql变量有所不同) 一.日志分类 错误日志 查询日志 慢查询日志 二进制日志 中继日志 事务日志 滚动日 ...

  3. MySQL日志管理、备份、恢复

    目录: 一.MySQL 日志管理 二.数据库备份的重要性与分类 三.常见的备份方法 四.MySQL完全备份 五.数据库完全备份分类 六.MySQL增量备份 七.MySQL数据库增量恢复 八.MySQL ...

  4. MySQL 日志管理及备份与恢复

    MySQL 日志管理及备份与恢复 1.日志管理 2.备份与恢复 1.日志管理: MySQL的默认日志保存位置为/usr/local/mysql/data 日志开启方式有两种:通过配置文件或者是通过命令 ...

  5. MySQL日志管理、备份与恢复

    MySQL日志管理.备份与恢复 目录 MySQL日志管理.备份与恢复 一.MySQL日志管理 1. MySQL日志路径 2. 设置.修改日志路径 3. 查询日志功能是否开启 二.MySQL备份与恢复 ...

  6. 第八章· MySQL日志管理

    一.MySQL日志简介  二.错误日志 1.作用: 记录mysql数据库的一般状态信息及报错信息,是我们对于数据库常规报错处理的常用日志. 2.默认位置: $MYSQL_HOME/data/ 3.开 ...

  7. Centos7.6部署rsyslog+loganalyzer+mysql日志管理服务器

    参考来自: the_script :https://yq.aliyun.com/articles/675198 名山.深处:https://www.cnblogs.com/skychenjiajun/ ...

  8. MySQL——日志管理

    一.MySQL日志类型 1.错误:--log--error ---------------------*** host_name.err 2.常规: --general_log host_name.l ...

  9. mysql日志管理#慢日志详解

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

  10. MySQL - 日志管理

    在 MySQL 中,有 4 种不同的日志,分别是错误日志.二进制日志.查询日志和慢查询日志. 错误日志 错误日志记录了 MySQL 启动和停止时以及服务器在运行过程中发生严重错误时的相关信息. 查看错 ...

随机推荐

  1. 着重基础之—Java 8 Comparator: How to Sort a List (List排序)

    着重基础之—Java 8 Comparator: How to Sort a List (List排序) 首先申明,这篇博客的内容不是我自己的知识,我是从国外网站搬来的,原因有二:1是因为大天朝对网络 ...

  2. gj9 迭代器和生成器

    9.1 python的迭代协议 list内部实现了__iter__()协议(魔法函数),是可迭代对象,但还不是迭代器(迭代器需要实现__next__协议) 生成器实现了__iter__(),__nex ...

  3. Codeforces801A Vicious Keyboard 2017-04-19 00:16 241人阅读 评论(0) 收藏

    A. Vicious Keyboard time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  4. HDU 3455 Leap Frog 2016-09-12 16:34 43人阅读 评论(0) 收藏

    Leap Frog Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  5. Hbase和Hive的异同

    共同点:1.hbase与hive都是架构在hadoop之上的.都是用hadoop作为底层存储 区别:2.Hive是建立在Hadoop之上为了减少MapReduce jobs编写工作的批处理系统,HBa ...

  6. 基于jTopo的拓扑图设计工具库ujtopo

    绘制拓扑图有很多开源的工具,知乎上也有人回答了这个问题: https://www.zhihu.com/question/41026400/answer/118726253 ujtopo是基于jTopo ...

  7. 数据库如何从SQL server转换到SQLite

    我之前用的是SQL server数据库,但是客户那里觉得安装这个大的数据库比较卡,说是导致蓝屏了,硬往SQL server上赖,没有办法客户是上帝么,给他换个小点的数据库吧!考虑Access,不行这个 ...

  8. sql server生成自动增长的字母数字字符串

    在开发的过程中,我们经常会遇到要生成一些固定格式字符串,例如“BX201903150001”,结构为:BX+日期+N位序号,类似这种的字符串我们很难生成,在这里我们借助一个存储过程来实现这个功能. 1 ...

  9. CentOS IPv6设置

    1)/etc/sysconfig/network  打开/关闭网络配置 添加: NETWORKING_IPV6=yes  打开IPv6 IPV6_AUTOCONF=no        如果不喜欢自动获 ...

  10. 三个分段的.tar.gz文件,合并并解压

    1.合并使用spilt分割的文件 # cat sxrt5.0.dvd1.tar.gzaa sxrt5.0.dvd1.tar.gzab sxrt5.0.dvd1.tar.gzac >>sxr ...