MySQL除了有些表类型会用到事务日志外,还使用了7种日志文件,这些日志文件都是可选项。

1. 二进制日志
二进制日志存储修改数据库中表数据的所有动作,包含了所有更新了数据或者已经潜在更新了数据的所有语句。潜在跟新了数据的SQL语句例如:无法匹配行的DELETE语句;设置列为当前值的UPDATE语句。除此之外,该日志还存储了语句执行期间耗时的相关信息。二进制日志文件以一种更有效并且是事务安全的方式包含更新日志中可用的所有信息。MySQL在执行语句之后,但在释放锁之前,马上将修改写入二进制日志中,
       使用–log-bin[=file_name]选项启动该日志类型,mysqld写入包含所有更新数据的SQL命令的日志文件。如果未给出file_name值,默认名为“HOSTNAME-bin.nnnnn”;如果给出了文件名,但没有包含路径,则文件被写入数据目录。如果在日志名中提供了扩展名(例如,–log-bin=file_name.extension),则扩展名被悄悄除掉并忽略。二进制日志文件名的.nnnn表示,mysqld在每个二进制日志名后面添加一个数字扩展名。每次启动服务器或刷新日志(flush logs)时该数字增加1。如果当前的日志大小达到设定的max_binlog_size,还会自动创建新的二进制日志。如果在该文件的末尾正使用大的事务,二进制日志还有肯呢个会超过max_binlog_size:事务全写入一个二进制日志中,绝对不要写入不同的二进制日志中。      
–binlog-do-db=db_name
告诉主服务器,如果当前的数据库(即USE选定的数据库)是db_name,应将更新记录到二进制日志中。其它所有没有明显指定的数据库被忽略。
如果数据库启动时使用选项–binlog-do-db=DB_A,使用语句“use DB_B”置DB_B为当前数据库,此时使用update语句修改DB_A的表数据时出现如下情况:
数据库DB_B不在允许binlog的列表内,该语句不写入二进制日志文件
数据库DB_B在允许binlog的列表内,该语句写入二进制日志文件
–binlog-ignore-db=db_name
告诉主服务器,如果当前的数据库(即USE选定的数据库)是db_name,不将更新保存到二进制日志中。
综上所述,使用这个两个选项时决定是否将该语句写入日志文件还有参考当前数据库的属性,如果指定了这两个选项尽量使指定的数据库为当前数据库,才能按照逻辑来记录日志。但CREATE DATABASE、ALTER DATABASE和DROP DATABASE等语句,有一个例外,即通过操作的数据库来决定是否应记录语句。
2.调试日志
如果使用调试的方式来编译MySQL客户机或服务器,则可以生成一个调试日志文件。默认情况下,MySQL将调试日志写到/tmp/mysql.trace,也可以使用debug命令行选项来修改该位置。
3.    错误日志
该日志文件包含了当mysqld启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息。可以用–log-error[=file_name]选项来指定mysqld保存错误日志文件的位置。
当使用mysqld_safe启动服务器时,该脚本自动在启动项上加上–log-error但没有加上file_name,或者直接在libexec目录下使用./mysqld –user=mysql –log-error启动服务器,此时没有给定file_name值,mysqld将使用错误日志名host_name.err 并在数据目录中写入日志文件。
将错误信息写入错误日志文件的原理是,服务器将对标准错误输出重定向到该日志文件,所以如果不指定–log-error,错误被写入标准错误输出stderr,通常标准输出为你的终端。如果在程序中有printf等语句的话,这些函数打印出的信息也被写入该日志文件。
如果执行FLUSH LOGS,错误日志用-old重新命名后缀并且mysqld创建一个新的空日志文件。如第一次生成的错误日志为:linux-8tpn.err。执行该命令后将该文件重命名为:linux-8tpn.err-old。
4.    MyISAM日志
该日志文件供MySQL开发小组使用该日志来调试MyISAM表处理器。使用–log-isam选项开启该日志类型,服务器在数据目录下创建myisam.log文件。
可以使用myisamlog使用程序从myisam.log文件中提取统计信息,除非用户正在调试MyISAM表处理器,否则对该日志可能不感兴趣。
下面为使用myisamlog的输出实例,暂不清楚各项是什么意思。
linux-8tpn:/home/mysql/var # myisamlog
myisam.log
Commands  
Used count    Errors   Recover errors
open               12         0                0
close               6         0     
          0
extra              53         0                0
Total              71         0               
0
5.    查询日志
 
该日志文件记录服务器上所做的所有查询。可以使用–log[=file_name]或-l [file_name]选项启动它。如果没有给定file_name的值, 默认名是host_name.log;如果file_name为绝对路径则在该目录下创建日志文件,否则在数据目录下创建该日志文件。
mysqld按照它接收的顺序而不是按照语句执行的顺序记录语句到查询日志。这就有可能与执行的顺序不同。与更新日志和二进制日志不同,它们在查询执行后,但是任何一个锁释放之前记录日志。(查询日志还包含所有语句,而二进制日志不包含只查询数据的语句)。
服务器重新启动和日志刷新不会产生新的一般查询日志文件(尽管刷新关闭并重新打开一般查询日志文件)。在所有日志类型中查询日志增长的最快,不要不间断的运行查询日志。
./mysqld, Version:
5.0.41-debug-log (Source distribution). started with:
Tcp port: 3306 Unix socket:
/tmp/mysql.sock
Time                 Id Command      Argument
080406 2:05:52      
1 Connect        root@localhost on
mysql
                     1 Query          select * from user
080406 2:21:09     
1 Query          desc user
080406 2:21:43      
1 Query          select * from user a, user b where a.Host
=
b.User
6.    慢查询日志
该日志类型用来收集那些花费太长时间(超过指定时间)执行的SQL语句,该指定时间由long_query_time服务器变量设定。用–log-slow-queries[=file_name]选项启动,如果没有给出file_name值,默认未主机名,后缀为-slow.log,如果给出了文件名,但不是绝对路径名,文件则写入数据目录。
慢查询日志可以用来找到执行时间长的查询,可以用于优化\,使用mysqldumpslow命令获得日志中显示的查询摘要来处理慢查询日志。
在MySQL 5.1中,通过–log-slow-admin-statements服务器选项,可以请求将慢管理语句,例如OPTIMIZE TABLE、ANALYZE TABLE和 ALTER TABLE写入慢查询日志。
在MySQL 5.1的慢查询日志中,不使用索引的慢查询同使用索引的查询一样记录。要想防止不使用索引的慢查询记入慢查询日志,使用–log-short-format选项。
使用–log-long-format选项,可以把不使用索引的查询也加入到慢查询日志中。
注:
[1] 获得初使表锁定的时间不算作执行时间。
[2] 语句执行完并且所有锁释放后记入慢查询日志。记录顺序可以与执行顺序不相同
[3] 用查询缓存处理的查询不加到慢查询日志中,因为表有零行或一行而不能从索引中受益的查询也不写入慢查询日志
7.    更新日志
更新日志提供查询信息,但只有修改数据库内容的查询。使用–log-update服务器选项,开启更新日志。当启用该日志类型后,MySQL将在数据目录下创建一个名称为:HOSTNAME.nnn的文件。但在5.0以上的MySQL上使用该选项的时候,会有如下的提示:
080306 13:56:59 [ERROR] The update log is no
longer supported by MySQL in version 5.0 and above. It is replaced by the binary
log
      
也就是说在MySQL V5.0以上,系统已经不在支持该日志类型,取而代之的是二进制日志。

转载于:https://blog.51cto.com/machael/210474

MySQL 7种日志类型 详解相关推荐

  1. mysql中数据库字段类型详解

    mysql中数据库字段类型详解 1,blob字段 mysql中blob是一个二进制大型对象,是一个可以储存大量数据的容器,它能容纳不同大小的数据. mysql中blob的四种类型除了存储数据的大小有区 ...

  2. MySQL日志类型详解(全)

    日志是 mysql 数据库的重要组成部分,记录着数据库运行期间各种状态信息. mysql日志主要包括错误日志.查询日志.慢查询日志.事务日志.二进制日志. 我们最关注的是二进制日志( binlog ) ...

  3. mysql 之general_log日志开启详解以及清空

    General_log 详解 1.介绍 开启 general log 将所有到达MySQL Server的SQL语句记录下来. 一般不会开启开功能,因为log的量会非常庞大.但个别情况下可能会临时的开 ...

  4. 操作 mysql 不生成日志_详解MySQL的日志

    MySQL日志 MySQL的日志记录了MySQL的日常操作和错误信息,通过这些日志我们可以知道MySQL内部发生的事情,可以为MySQL的优化和管理提供必要的信息. MySQL的日志主要有:二进制日志 ...

  5. OSPF的四种网络类型详解

    OSPF的四种网络类型 BMA网络 P2P网络 NBMA网络 P2MP网络 不同网络类型是否可以建立邻居 OSPF链路认证 注意:loopback接口默认OSPF网络类型为P2P,但是生成路由的网络掩 ...

  6. 【原创】MT4中四种交易类型详解

    1.Buy 1)      Buy Limit Ø          指以低于现价的价位限价买入,是交易人认为价位跌到某个点位,买入比较安全了. Ø          买入限价,在当前价格下方挂买单( ...

  7. mysql binlog event_MySQL binlog中的事件类型详解

    MySQL binlog记录的所有操作实际上都有对应的事件类型的,譬如STATEMENT格式中的DML操作对应的是QUERY_EVENT类型,ROW格式下的DML操作对应的是ROWS_EVENT类型. ...

  8. mysql启动失败 查看日志文件_mysql诊断启动问题、查看日志文件详解

    诊断启动问题 服务器启动问题通常在对MySQL配置或服务器本身进行更改时出现.MySQL在这个问题发生时报告错误,但由于多数MySQL服务器是作为系统进程或服务自动启动的,这些消息可能看不到. 在排除 ...

  9. mysql千万级数据怎么删除,MySQL 快速删除大量数据(千万级别)的几种实践方案详解...

    这篇文章主要介绍了MySQL 快速删除大量数据(千万级别)的几种实践方案详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 笔者 ...

最新文章

  1. 如何在centos7下tomcat中安装https
  2. 买粮油也能玩出新花样?京东超市携手金龙鱼带来狗年礼盒!
  3. How to Analyze Java Thread Dumps--reference
  4. 龙格库塔法matlab求解微分方程组,微分方程组的龙格库塔公式求解matlab版.pdf
  5. Zookeeper是什么?
  6. There was a problem importing one of the Python modules required to run yum
  7. 爬虫——多线程糗事百科案例
  8. Apache Hive 下载与安装
  9. mac+safari+html5插件,打开 Mac Safari 黑色模式,这款插件有点厉害
  10. 射击类项目(数据的持久化保存)整理四
  11. oppofindx3pro分辨率设置方法
  12. 不服就GAN:GAN网络生成 cifar10 的图片实例(keras 详细实现步骤),GAN 的训练的各种技巧总结,GAN的注意事项和大坑汇总
  13. React TypeScript 从零实现 Popup 组件发布到 npm
  14. uniapp自定义导航栏的开发
  15. Python学习之绕圈圈题
  16. FleaPHP 开发指南 - 6. 访问数据库
  17. 各版本sqlserver下载地址
  18. 邮编查询经纬度_从经纬度查找邮政编码
  19. 夏津一中2021高考成绩查询,2021德州市地区高考成绩排名查询,德州市高考各高中成绩喜报榜单...
  20. 使用FFmpeg转换mp3或wav文件为pcm格式文件

热门文章

  1. lduan SCCM 2012 介绍及SQL部署(一)
  2. 碎片化趋势下手机浏览器或成赢家
  3. Visual Studio LightSwitch初体验和定位看法
  4. 使用Grunt构建任务管理脚本(转)
  5. may indicate binary incompatibility. Expected 160 from C header, got 152 from PyObject
  6. RuntimeError: Model class paypal.standard.ipn.models.PayPalIPN doesn't declare an explicit app_label
  7. datatable和awk获取列名操作
  8. kaggle 相关知识汇总(转载+自己整理)
  9. intellij无法输入中文
  10. C++PrimerCH2