MySQL各种日志介绍

    作者:课课家教育更新于: 2017-05-18 13:53:03

      任何一种数据库中,都有各种各样的日志。MySQL也不例外,在Mysql中有4种不同的日志、分别错误日志、二进制日志、查询日志和慢查询日志。这些日志记录着Mysql数据库不同方面的踪迹。下文将介绍这4种不同的日志作用和用途。

    MySQL各种日志介绍_数据库_MySQL_日志管理_课课家教育

      日志作用

      (1)当数据库遭到意外损害,可以通过日志文件来查询出错原因

      (2)利用日志文件进行数据恢复

      日志分类

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

      (2)错误日志:记录Mysql服务器的启动、关闭和运行错误等信息

      (3)慢查询日志:记录执行时间超过指定时间的操作

      (4)通用查询日志:记录用户的所有操作,包括启动和关闭MySQL服务、更新语句、查询语句等

      日志设置

      (1)除了二进制日志,其他都是文本文件

      (2)日志文件通常存储在Mysql数据目录下

      (3)默认只启动了错误日志功能,其他需要手工启动

      (4)但启动日志功能会降低Mysql的执行速度,因为一条操作写进日志中是要花时间的

      一、错误日志

      错误日志定义:

      可以用--log-error[=file_name]选项来指定mysqld保存错误日志文件的位置。如果没有给定file_name值,mysqld使用错误日志名host_name.err并在数据目录中写入日志文件。如果你执行FLUSHLOGS,错误日志用-old重新命名后缀并且mysqld创建一个新的空日志文件。(如果未给出--log-error选项,则不会重新命名)。

      错误日志主要记录如下几种日志:

      1.服务器启动和关闭过程中的信息

      2.服务器运行过程中的错误信息

      3.事件调度器运行一个时间是产生的信息

      4.在从服务器上启动从服务器进程是产生的信息

      记录内容:包含了当mysqld启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息

      文件位置和格式:可以用--log-error[=file_name]选项来指定mysqld保存错误日志文件的位置。如果没有给定file_name值,mysqld使用错误日志名host_name.err并在数据目录中写入日志文件

      二、BINLOG

      记录内容:二进制日志包含了所有更新了数据或者已经潜在更新了数据(例如,没有匹配任何行的一个DELETE)的所有语句。语句以“事件”的形式保存,它描述数据更改情况。

      文件位置和格式:当用--log-bin[=file_name]选项启动时,mysqld写入包含所有更新数据的SQL命令的日志文件。如果未给出file_name值,默认名为-bin后面所跟的主机名。如果给出了文件名,但没有包含路径,则文件被写入数据目录。

      查看binlog内容:shell>mysqlbinloglog-file

      删除日志:

      RESETMASTER;//删除所有binlog日志,新日志编号从头开始

      PURGEMASTERLOGSTO'mysql-bin.010';//删除mysql-bin.010之前所有日志

      PURGEMASTERLOGSBEFORE'2003-04-0222:46:26'

      ;//删除2003-04-0222:46:26之前产生的所有日志

      相关选项:

      1)--binlog-do-db=db_name

      告诉主服务器,如果当前的数据库(即USE选定的数据库)是db_name,应将更新记录到二进制日志中。其它所有没有明显指定的数据库被忽略

      2)--binlog-ignore-db=db_name

      告诉主服务器,如果当前的数据库(即USE选定的数据库)是db_name,不应将更新保存到二进制日志中要想记录或忽视多个数据库,使用多个选项,为每个数据库指定相应的选项。

      3)-innodb-safe-binlog

      使用此选项和sync_binlog=N(每写N次日志同步磁盘)全局变量将使得事务能够记录的更加安全

      4)具有SUPER权限的客户端可以通过SETSQL_LOG_BIN=0语句禁止将自己的语句记入二进制记录

      三、查询日志

      记录内容:记录了客户端的所有语句,而二进制日志不包含只查询数据的语句

      文件位置和格式:用--log[=file_name]或-l[file_name]选项启动它。如果没有给定file_name的值,默认名是host_name.log。

      四、慢查询日志

      MySQL如果启用了slow_query_log=ON选项,就会记录执行时间超过long_query_time的查询(初使表锁定的时间不算作执行时间)。日志记录文件为slow_query_log_file[=file_name],如果没有给出file_name值,默认为主机名,后缀为-slow.log。如果给出了文件名,但不是绝对路径名,文件则写入数据目录。

      记录内容:记录包含所有执行时间超过long_query_time秒的SQL语句的日志文件。获得初使表锁定的时间不算作执行时间。

      文件位置和格式:用--log-slow-queries[=file_name]选项启动它。如果没有给出file_name值,默认为主机名,后缀为-slow.log。如果给出了文件名,但不是绝对路径名,文件则写入数据目录。

      快速查看:使用mysqldumpslow命令获得日志中显示的查询摘要来处理慢查询日志,例如:

      [zzx@bj37data]$mysqldumpslowbj37-slow.log

      其他选项:在MySQL5.1中,通过--log-slow-admin-statements服务器选项,你可以请求将慢管理语句,例如OPTIMIZETABLE、ANALYZETABLE和ALTERTABLE写入慢查询日志

      五、二进制日志

      二进制日志启动开关:log-bin[=file_name]

      在5.6及以上版本一定要手动指定。5.6以下版本默认file_name为$datadir/mysqld-binlog

      二进制日志用于记录所有更改数据的语句。主要用于复制和即时点恢复。

      查看二进制日志的工具为:mysqlbinlog

      二进制日志包含了所有更新了数据或者已经潜在更新了数据(例如,没有匹配任何行的一个DELETE)的所有语句。语句以“事件”的形式保存,它描述数据更改。二进制日志还包含关于每个更新数据库的语句的执行时间信息。它不包含没有修改任何数据的语句。

      二进制日志的主要目的是在数据库存在故障时,恢复时能够最大可能地更新数据库(即时点恢复),因为二进制日志包含备份后进行的所有更新。二进制日志还用于在主复制服务器上记录所有将发送给从服务器的语句。

      小编结语:

      更多内容尽在课课家教育!

课课家教育

未登录