1、日志文件管理概述:

配置文件:/etc/my.cnf

作用:MySQL日志文件是用来记录MySQL数据库客户端连接情况、SQL语句的执行情况以及错误信息告示。

分类:MySQL日志文件分为4种:错误日志、通用查询日志、慢查询日志和二进制日志:

错误日志:记录MySQL服务器的启动、运行、或停止时出现的问题(默认情况,只启用错误日志功能。)

二进制日志:以二进制文件的形式记录了数据库中的操作,但不是记录查询语句。

通用查询日志:记录用户的登录和查询的信息。

慢查询日志:记录所有的执行时间超过指定时间的所有查询或者不使用索引的查询。

  • error log 错误日志 排错 /var/log/mysqld.log【默认开启】
  • bin log 二进制日志 备份 增量备份 DDL DML DCL
  • Relay log 中继日志 复制 接收 replication master
  • slow log 慢查询日志 调优 查询时间超过指定值

【实例1】SHOW VARIABLES 语句查看是否启用了日志:

mysql> show variables like 'log_%';
+----------------------------------------+----------------------------+
| Variable_name | Value |
+----------------------------------------+----------------------------+
| log_bin | ON |
| log_bin_basename | /data/mysql/yltlinux |
| log_bin_index | /data/mysql/yltlinux.index |
| log_bin_trust_function_creators | OFF |
| log_bin_use_v1_row_events | OFF |
| log_error | /data/mysql/host130.err |
| log_output | FILE |
| log_queries_not_using_indexes | OFF |
| log_slave_updates | OFF |
| log_slow_admin_statements | OFF |
| log_slow_slave_statements | OFF |
| log_throttle_queries_not_using_indexes | 0 |
| log_warnings | 1 |

其中Value值是off的表示未开启服务。可以更改my.cnf文件中的配置信息,重启mysql服务即可。

注:启用日志功能会降低MySQL数据的执行速度。

2、错误日志(err log)

 作用:error log 错误日志   排错    /var/log/mysqld.log【默认开启】

 2.1启动和设置错误日志:

  • 日志文件位置:log-error=/var/log/mysqld.log
  • 默认情况下错误日志是开启的,而且无法 被禁止,打开数据安装目录下的my.cnf文件找到log-error选项进行查看:

【实例2】获取log-error变量的值,即获取error log的详细位置:

mysql> show variables like 'log_error';
+---------------+-------------------------+
| Variable_name | Value |
+---------------+-------------------------+
| log_error | /data/mysql/host130.err |
+---------------+-------------------------+
1 row in set (0.00 sec) mysql>

 2.2 查看错误日志

通过【实例2】可知log_error的详细位置,下边部分error log:

[root@host130 ~]# more /data/mysql/host130.err

2018-05-25 19:20:15 5800 [Note] InnoDB: The InnoDB memory heap is
disabled
2018-05-25 19:20:15 5800 [Note] InnoDB: Mutexes and rw_locks use G
CC atomic builtins
2018-05-25 19:20:15 5800 [Note] InnoDB: Memory barrier is not used
2018-05-25 19:20:15 5800 [Note] InnoDB: Compressed tables use zlib
1.2.3
2018-05-25 19:20:15 5800 [Note] InnoDB: Using Linux native AIO
2018-05-25 19:20:15 5800 [Note] InnoDB: Using CPU crc32 instructio

 2.3 删除错误日志

 目的:对于存放很久的错误日志,可以保证MySQL服务器上的硬盘空间。

 方法:MySQL数据库中可以使用两种方法开启新的错误日志:mysqladmin命令和flush logs。

 mysqladmin 命令语法如下:

1、sqladmin -u root -p flush-log

  注:上述命令会创建一个新的错误日志,旧的仍然会 保留,会自动在名称后边添加-old内容。

3、二进制日志

 作用:bin log 二进制日志 备份 增量备份 DDL DML DCL

   3.1 启用二进制日志

  • 默认情况下,二进制日志(bin-log)功能是关闭状态,如果要开启需要在 my.cnf文件中的 bin_log 选项前的 # 去掉。 

 【实例3】在my.cnf文件中指定如下内容:

log_bin=mysql-bin  
server-id=11 #由于bug问题必须设置这个id,数字随便写
datadir=/var/lib/mysql   #默认指定文件存放位置,可修改,但是要注意权限

 关闭my.cnf文件后重新启动MySQl服务器。

[root@localhost ~]#  systemctl restart mysqld

 【实例4】为了确保二进制日志功能已经开启,可执行如下命令:

mysql> show variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin | ON |
+---------------+-------+
1 row in set (0.00 sec) mysql>

  3.2查看二进制日志

  • 二进制日志是以二进制的方式存储,不能直接打开,所以需要使用mysql 自带的 mysqlbinlog 命令工具进行查看

 【实例5】进入当前数据库的数据目录:

  • [root@host130 mysql]# pwd
    /data/mysql
    [root@host130 mysql]# mysqlbinlog yltlinux.000037
    /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
    /*!40019 SET @@session.max_insert_delayed_threads=0*/;
    /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
    DELIMITER /*!*/;
    # at 4
    #180525 19:20:25 server id 128 end_log_pos 120 CRC32 0xb6d0f986 Start: binlog v 4, server v 5.6.36-log created 180525 19:20:25 at startup
    # Warning: this binlog is either in use or was not closed properly.
    ROLLBACK/*!*/;
    BINLOG '
    efEHWw+AAAAAdAAAAHgAAAABAAQANS42LjM2LWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAB58QdbEzgNAAgAEgAEBAQEEgAAXAAEGggAAAAICAgCAAAACgoKGRkAAYb5
    0LY=
    '/*!*/;
    DELIMITER ;
    # End of log file
    ROLLBACK /* added by mysqlbinlog */;
    /*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
    /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
    [root@host130 mysql]#

    【实例6】查看二进制日志的文件目录:

  • mysql> show master logs;
    +-----------------+-----------+
    | Log_name | File_size |
    +-----------------+-----------+
    | yltlinux.000001 | 178523 |
    | yltlinux.000002 | 143 |
    | yltlinux.000003 | 143 |
    | yltlinux.000004 | 143 |
    | yltlinux.000005 | 143 |
    | yltlinux.000006 | 143 |
    | yltlinux.000007 | 120 |
    | yltlinux.000008 | 927 |
    | yltlinux.000009 | 120 |
    | yltlinux.000010 | 120 |
    +-----------------+-----------+
    11 rows in set (0.46 sec) mysql>

 3.3  清理二进制文件

  原因:二进制日志文件会影响MySQL数据库性能,大量的二进制日志文件会占用大量磁盘空间。

  删除二进制文件的方法:

  1. 删除所有二进制文件,新的二进制文件会重新从 000001开始:
reset master;

  2.根据编号进行删除

 【实例7】删除 yltlinux.000005 之前的二进制日志,删除之后通过 SHOW MASTER  LOGS 语句查看文件列表:

mysql> purge master logs to 'yltlinux.000005';
Query OK, 0 rows affected (0.10 sec) mysql> show master logs;
+-----------------+-----------+
| Log_name | File_size |
+-----------------+-----------+
| yltlinux.000005 | 143 |
| yltlinux.000006 | 143 |
| yltlinux.000007 | 120 |
| yltlinux.000008 | 927 |
| yltlinux.000009 | 120 |
| yltlinux.000010 | 120 |
+-----------------+-----------+
33 rows in set (0.00 sec) mysql>

  3.根据创建时间进行删除

  • purge master logs before 语句可以将指定时间之前的所有二进制文件删除;
  • purge master logs before ‘yyyy -mm-dd hh:mm:ss’;
mysql> purge master logs before '2018-02-01 22:46:00';
Query OK, 0 rows affected (0.07 sec) mysql> show master logs;
+-----------------+-----------+
| Log_name | File_size |
+-----------------+-----------+
| yltlinux.000032 | 143 |
| yltlinux.000033 | 6796 |
| yltlinux.000034 | 709 |
| yltlinux.000035 | 455 |
| yltlinux.000036 | 143 |
| yltlinux.000037 | 120 |
+-----------------+-----------+
6 rows in set (0.00 sec) mysql>

   3.4 恢复二进制日志

  原因:二进制日志记录着MySQL数据库的所有事件操作,当发生灾难性错误时,可以通过二进制日志进行恢复。

  【实例9】使用 mysqlbinlog 命令执行还原操作时,必须是编号小的首先被还原。

mysqlbinlog yltlinux.000001 | mysql -u root -p
mysqlbinlog yltlinux.000002 | mysql -u root -p

4.慢查询日志

  作用:用来记录执行时间超过指定时间的查询语句,可以找出哪些查询语句执行效率低,以方便进行优化。

  • 默认情况下,慢查询日志功能是关闭的。

  4.1 启用慢查询日志:

  • 如下语句查看慢查询的配置:
mysql> show variables like'%slow%';
+---------------------------+------------------------------+
| Variable_name | Value |
+---------------------------+------------------------------+
| log_slow_admin_statements | OFF |
| log_slow_slave_statements | OFF |
| slow_launch_time | 2 |
| slow_query_log | OFF |
| slow_query_log_file | /data/mysql/host130-slow.log |
+---------------------------+------------------------------+
5 rows in set (0.00 sec) mysql>
  • 默认情况下,my.cnf文件的相关内容如下:

    slow-query-log=                        //表示是否启用慢查询日志,其中0表示不启用,修改为1表示启用慢查询日志
    slow_query_log_file=''WS-slow.log" //指定慢查询日志生成的文件路径和名称,如果不指定路径名,默认存放在数据库的数据文件下
    long_query_time= //指定时间值,以秒为单位,默认值为10s

  4.2 查看和删除慢查询日志

   4.2.1  查看慢查询日志

   启用慢查询日志时,重新启动 MySQL 数据库,会自动生成一个慢查询日志,日志是以  文本文件  的形式存储,可以直接通过文本文件打开工具查看。

   4.2..2  删除慢查询日志

   删除慢查询日志有两种方法:

  1. 直接手动删除
  2. 通过执行 mysqladmin 命令启用新的慢查询日志,新生成的慢查询日志会直接覆盖旧的查询日志,不需要再手动删除。基本语法如下:
mysqladmin -u root -p flush-logs

  >删除之后重启删除之后需要重启 MySQL 服务,重启之后会生成新的慢查询日志。

  >如果要备份旧日志,可以将旧日志改名,再重启MySQL服务。

【第六章】MySQL日志文件管理的更多相关文章

  1. MySQL基础之第17章 MySQL日志

    17.1.日志简介 二进制日志错误日志通用查询日志慢查询日志 17.2.二进制日志 二进制日志也叫作变更日志(update log),主要用于记录数据库的变化情况.通过二进制日志可以查询MySQL数据 ...

  2. 高性能MySQL之【第十六章MySQL用户工具】学习记录

    接口工具:      Msql Workbench   http://www.mysql.com/products/workbench      SQLyog  http://www.webyog.c ...

  3. 第六章 MySQL 查询

    查询数据表 语法: SELECT {* | <字段列表>} [ FROM <表1>, <表2>.... [ where <表达式> ] [ group ...

  4. JAVA / MySql 编程——第六章 Mysql 创建账户的相关命令

    1.        创建普通用户: 语法: CREATE USER `user`@`host` [IDENTIFIED 'password'];   //user:用户名,host:主机名,passw ...

  5. 第六章· MySQL索引管理及执行计划

    一.索引介绍 1.什么是索引 1)索引就好比一本书的目录,它能让你更快的找到自己想要的内容. 2)让获取的数据更有目的性,从而提高数据库检索数据的性能. 2.索引类型介绍 1)BTREE:B+树索引 ...

  6. 第十五章 MySQL日志(待续)

    ·······

  7. 第六章 MySQL函数(待续)

    ············

  8. 【MySQL函数】MySQL 5.5从零开始学第六章

    说明:本文总结自:<MySQL 5.5从零开始学>第六章 MySQL中的函数包括: 数学函数.字符串函数.日期和时间函数.条件判断函数.系统信息函数和加密函数等. 函数: 表示对输入参数值 ...

  9. 《mysql必知必会》学习_第六章_20180730_欢

    第六章<过滤数据> P35 1. select prod_name,prod_price from products where prod_price=2.5; 2.select prod ...

随机推荐

  1. react系列(一)JSX语法、组件概念、生命周期介绍

    JSX React中,推出了一种新的语法取名为JSX,它给了JS中写HTML标签的能力,不需要加引号.JSX的语法看起来是一种模板,然而它在编译以后,会转成JS语法,只是书写过程中的语法糖. JSX的 ...

  2. HTML5视频播放插件 video.js介绍

    video.js是一款很流行的html5视频播放插件.很适合在移动端播放视频(比如微信网页),功能强大,且支持降级到flash,兼容ie8.官网:http://videojs.com/    git& ...

  3. python3带tkinter窗口的ftp服务器,并使用pyinstaller打包成exe

    python带tkinter窗口的ftp服务器,使用python3编写,打包使用pyinstaller,命令 pyinstaller -F .\ftpserver.py 代码也可在我的github上下 ...

  4. 840. Magic Squares In Grid (5月27日)

    开头 这是每周比赛中的第一道题,博主试了好几次坑后才勉强做对了,第二道题写的差不多结果去试时结果比赛已经已经结束了(尴尬),所以今天只记录第一道题吧 题目原文 Magic Squares In Gri ...

  5. HDU1398 Square Coins(生成函数)

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

  6. 学习笔记 - Manacher算法

    Manacher算法 - 学习笔记 是从最近Codeforces的一场比赛了解到这个算法的~ 非常新奇,毕竟是第一次听说 \(O(n)\) 的回文串算法 我在 vjudge 上开了一个[练习],有兴趣 ...

  7. mysql 支持四字节设置

    设置文件mysql/bin/my.ini[mac用户在ect文件夹里创建文件my.cnf] 添加以下代码: [mysqld] character-set-server=utf8mb4

  8. MySQL必知必会 读书笔记一:简介

    了解数据库 数据库(database) 数据库(database) 保存有组织的数据的容器(通常是一个文 件或一组文件). 数据库软件应称为DBMS(数据库管理系统).数据库是通过DBMS创建和操纵的 ...

  9. 移动端网站通用模板 单位rem

    html <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8& ...

  10. 基于Geomesa服务查询轨迹数据无法根据空间和时间范围进行结果查询

    一.Geomesa - QuickStart(教程工程包)   百度网盘下载地址:geomesa-tutorials-master.7z 二.解压后,IDEA编译如下 百度网盘下载地址:IDEA201 ...