(转)MySQL日志管理

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

 

时间: 2024-11-05 02:48:03

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

Linux命令:MySQL系列之十一--MySQL日志管理

MySQL日志管理 SHOW GLOBAL VARIABLES LIKE '%log%':查看关于log的全局变量 一.日志分类 1.错误日志   2.一般查询日志   3.慢查询日志 4.二进制日志  5.中继日志   6.事务日志   7.滚动日志 二.日志详解 1.错误日志 说明:在对应的数据目录中,以主机名+.err命名的文件,错误日志记录的信息类型: 记录了服务器运行中产生的错误信息 记录了服务在启动和停止是所产生的信息 在从服务器上如果启动了复制进程的时候,复制进程的信息也会被记录

MySql Study之--MySql日志管理

MySql Study之--MySql日志管理 一.日志文件类型 MySQL有几个不同的日志文件,可以帮助你找出mysqld内部发生的事情: 日志文件 日志文件信息内容 错误日志 记录启动.运行或停止mysqld时出现的问题.(log_err) 查询日志 记录建立的客户端连接和执行的语句. 更新日志 记录更改数据的语句,不赞成使用该日志. 二进制日志 记录所有更改数据的语句.还用于复制.(bin_log) 慢日志 记录所有执行时间超过long_query_time秒的所有查询或不使用索引的查询.

MySQL 日志管理(一)

一.MySQL的日志查看: QL的初期,需要熟练掌握sql语句的运用,最简单的方式就是多练习多运用,但是好需要有一定的目的性,什么意思呢? 就是每个人的习惯不一样,可能容易犯的错误也不同,所以需要总结自己的常犯错误,有针对性的弥补,这样就会对MySQL的学习和掌握起到事半功倍的效果.今天就说几种记录MySQL操作的几种日志: #错误日志     log-error #查询日志     log #二进制日志  log-bin #慢日志  log-slow-queries #更新日志 log-upd

数据库 | MySQL日志管理

MySQL日志管理4 一.错误日志 作用: 记录mysql数据库的一般状态信息及报错信息,是我们对于数据库常规报错处理的常用日志. 默认位置: $MYSQL_HOME/data/ 开启方式:(MySQL安装完后默认开启) #编辑配置文件[[email protected] ~]# vim /etc/my.cnf[mysqld]log_error=/application/mysql/data/$hostname.err#查看方式mysql> show variables like 'log_er

第八章· MySQL日志管理

一.MySQL日志简介 ? 二.错误日志 1.作用: 记录mysql数据库的一般状态信息及报错信息,是我们对于数据库常规报错处理的常用日志. 2.默认位置: $MYSQL_HOME/data/ 3.开启方式:(MySQL安装完后默认开启) #编辑配置文件 [[email protected] ~]# vim /etc/my.cnf [mysqld] log_error=/application/mysql/data/$hostname.err #查看方式 mysql> show variable

mysql日志管理

                            学习MYsql日志(一)       错误日志:       服务器启动和关闭过程中的信息 服务器运行过程中产生的错误信息 事件调度器运行一个事件时产生的(event)信息 在从服务器上启动或关闭从服务器进程时产生的信息 警告日志也会产生在错误日志(log_warnings) 一般查询日志: general_log general_log_file log log_output FILE 意思是指定文件中,还有两个值(log_output=

MySQL 日志管理

一.MySQL 日志 日志是mysql数据库的重要组成部分.日志文件中记录着mysql数据库运行期间发生的变化:也就是说用来记录mysql数据库的客户端连接状况.SQL语句的执行情况和错误信息等.当数据库遭到意外的损坏时,可以通过日志查看文件出错的原因,并且可以通过日志文件进行数据恢复. MySQL 日志类型: 主要包含:错误日志.查询日志.慢查询日志.事务日志.二进制日志: 错误日志 一般查询日志: DML, SELECT, 对于非常繁忙的数据库,会产生大量的日志 慢查询日志:执行时间很慢的查

mysql日志管理笔记

1.错误日志: log_error  #错误日志 log_warnings  #警告信息也要记录到错误日志中:0:表示不记录:1表示记录 log_error=/PATH/TO/ERROR_LOG_FILENAME 定义错误日志文件.作用范围为全局或会话级别,可用于配置文件,属非动态变量. log_warnings=# 设定是否将警告信息记录进错误日志.默认设定为1,表示启用:可以将其设置为0以禁用:而其值为大于1的数值时表示将新发起连接时产生的"失败的连接"和"拒绝访问&qu

Mysql 日志管理详解

日志对于服务器维护来说是非常重要的,它记录了服务器运行的信息,许多操作都会写入到日志文件,通过日志文件可以了解服务器的运行状态.服务器性能等:对维护人员进行排错,故障处理,优化等提供详细的依据.MySQL中有六种不同类型的日志 一.日志种类 1.错误日志:记录mysql启动,运行或停止时出现的问题信息,一般也会记录警告信息 2.一般查询日志:记录与建立的客户端连接和执行的语句 3.慢查询日志:记录所有执行时间超高long_query_time 的所有查询或不使用索引的查询,可以帮助我们定位服务器

linux下mysql日志管理及mysql备份还原

1.SHOW GLOBAL VARIABLES LIKE '%log%';  显示所有日志相关的选项 2.错误日志:log_error和log_warnings 3.一般查询日志:general_log general_log_file log log_output 4.慢查询日志:long_query_time log_slow_queries={YES|NO} slow_query_log low_query_log_file 5.二进制日志:任何引起或可能引起数据库变化的操作:复制和即时点