MySQL日志文件

概述

????日志是记录了MySQL数据库的各种类型活动的数据。DBA可以利用这些日志文件定位故障,优化性能等。

分类

????在MySQL中,有4种不同的日志,分别是:错误日志(errorlog)、二进制日志(binlog)、查询日志(log)和慢查询日志(slow query log)。

错误日志

概述

????错误日志记录了当mysqld进程启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息。当数据库出现任何故障导致无法正常使用时,可以首先查看此日志。

设置

? ??查看:

????SHOW VARIABLES LIKE ‘log_error’\G;

? ??路径设置:

????可以使用—log-error=[file_name]选项来指定mysqld(MySQL服务器)保存错误日志文件的位置。如果没有给定file_name值,mysqld使用错误日志名host_name.err并默认在参数DATADIR(数据目录)指定的目录中写入日志文件。

????在实际应用中,如果数据库启动报错或者crash,或者出现告警信息等,可以通过查看错误日志获取必要的信息。

二进制日志

概述

????二进制文件记录了对MySQL数据库的所有更新操作(其中还包括执行更新操作的时间等额外信息),不包括查询和SHOW这类操作(binlog作用就是备份恢复使用的,所以只需要记录修改操作即可)。

????二进制文件默认关闭,需要手动指定参数启动。根据MySQL官方手册的测试数据,开启二进制日志会使性能下降1%,但是考虑到可以使用复制(replication)和point-in-time的恢复,这些性能的损失绝对是可以接受的。

? ??查看:

????SHOW BINLOG EVENT IN ‘mysqld.00001’\G;

? ??配置:

????通过参数log-bin[=name]可以开启二进制日志,如果不指定name,默认二进制日志文件名为主机名,后缀名为二进制日志的序列号,所在路径为数据库所在目录(datadir)。

????查看datadir:show variables like ‘datadir’;

参数

????max_binlog_size:指定了单个二进制日志文件最大值,如果超过该值,则产生新的二进制日志文件后缀名+1,并记录到.index文件。

????binlog_cache_size:控制缓冲大小,默认大小32K,基于会话的,因此每开启一个事务就分配一个binlog_cache_size大小的缓存,所以不能设置过大。当一个事务的记录大于binlog_cache_size时,MySQL会把缓冲中的日志写入一个临时文件中,因此该值又不能设置太小。

????通过SHOW GLOBAL STATUS命令查看binlog_cache_use、binlog_cache_disk_use的状态,可以判断当前binlog_cache_size的设置是否合理。binlog_cache_use记录了使用缓冲写二进制日志的次数,binlog_cache_disk_use记录了使用临时文件写二进制日志的次数。

????sync_binlog:表示每写缓冲多少次就要同步到磁盘。如果设置为1,表示采用同步写磁盘的方式来写二进制日志,这时候写操作不使用操作系统的缓冲来写二进制日志。sync_binlog的默认值为0,如果使用InnoDB存储引擎进行复制,并且想得到最大的可用性,建议将该值设置为ON(对数据库IO系统带来一定影响)。

????binlog-do-db:表示需要写入哪些库的日志,默认为空,表示需要同步所有库的日志到二进制日志。

????binlog-ignore-db:表示需要忽略写入哪些库的日志,默认为空,表示需要同步所有库的日志到二进制日志。

????log-slave-update:如果房钱数据库是复制中的slave节点,则它不会将从master取得并执行的二进制日志写入自己的二进制文件中。如果需要写入,要设置log-slave-update。如果需要搭建master->slave->slave这种架构的复制,则必须设置该参数。

????binlog_format:记录二进制日志的格式。在MySQL5.1之前,没有这个参数,所有二进制文件的格式都是基于SQL语句(statement)级别的,因此基于这个格式的二进制日志文件的复制(Replication)和Oracle的逻辑Standby有点类似。

????该值可以设置为STATEMENT、ROW和MIXED。

????1、STATEMENT格式下,记录的是逻辑SQL语句。

? ? 2、ROW格式下,记录表的行更改情况。

? ? 3、MIXED格式下,MySQL默认采用STATEMENT格式进行二进制文件记录,但是在一些情况下会使用ROW格式,这些情况包括:

? ? 1)表的存储引擎为NDB,这时对表的DML操作都会以ROW格式记录;

? ? 2)使用了UUID()、USER()、CURRENT_USER()、FOUND_ROWS()、ROW_COUNT()等不确定函数;

? ? 3)使用了INSERT DELAY语句;

? ? 4)使用了用户定义函数(UDF);

? ? 5)使用了临时表(temporary table)。

????此外,binlog_format参数还有对于存储引擎的限制。

????在通常情况下,我们将参数binlog_format设置为ROW,这可以为数据库的恢复和复制带来更好的可靠性。但是不能忽略的一点是,这会带来二进制文件大小的增加,这些语句的ROW格式可能需要更大的容量。而由于复制是采用传输二进制日志方式实现的,因此复制的网络开销也会增加。

????要查看二进制日志文件内容,必须通过MySQL提供的工具mysqlbinlog。对于STATEMENT格式的二进制日志文件,在使用mysqlbinlog后,看到的就是执行的逻辑SQL语句。但是,如果使用ROW格式记录,会发现mysqlbinlog的结果变得“不可读”,其实只要加上参数-v或-vv就能清楚地看到执行的具体信息了(-vv会比-v显示更新的类型)。

作用

????二进制日志的主要作用如下:

? ? 1、恢复(recovery):某些数据的恢复需要二进制日志,例如,如果需要恢复数据库全量备份的文件,可以通过二进制日志进行point-in-time恢复。

? ? 2、复制(replication):通过复制和执行二进制日志使得远程的MySQL数据库(一般称为slave或standby)与一台MySQL数据库(一般称为master或primary)进行实时同步。

? ? 3、审计(audit):用户通过二进制日志中的信息来进行审计,判断是否有对数据库进行注入的攻击。

查询日志

概述

????查询日志记录了所有对MySQL数据库的请求信息,不论这些请求是否得到正确的响应。

????默认文件名为:主机名.log。

区别

? ? ?二进制日志与查询日志区别:

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

慢查询日志

概述

????慢查询日志记录了所有执行时间超过参数long_query_time(单位:秒,运行时间等于long_query_time的情况不会被记录)设置值并且扫描记录数不小于min_examinied_row_limit的所有SQL语句的日志(注意,获得表锁定的时间不算做指定时间)。

????慢查询日志默认关闭,需要手动开启。

????MySQL5.1开始,支持将慢查询日志记录到表中,这样用户查询就更加方便直观了。慢查询表在MySQL架构下,名称为slow_log。

参数

????set slow_query_log:是否开启慢查询日志,通过set slow_query_log=on;开启。

????long_query_time:阈值。long_query_time默认为10秒,最小为0,从MySQL5.1开始,精度可以到微秒。

????min_examinied_row_limit:允许扫描的最小行数。

? ? long_queries_not_using_indexes:如果运行SQL未命中索引,则MySQL数据库同样会将这条SQL语句记录到慢查询日志中(这样方便后续优化)。

????MySQL5.6新增一个参数log_throttle_queries_not_using_indexes,用来表示每分钟允许记录到slow log且未命中索引的SQL语句次数。默认为0,表示没有限制。在生产环境中,如果没有命中索引,则此类SQL语句会频繁地被记录到slow log,从而导致慢查询日志大小不断增加,可通过修改此参数配置。

? ? long_query_io:将超过指定逻辑IO次数的SQL语句记录到slow_log中,该值默认为100。

????为了兼容原MySQL数据库的运行方式,还添加了参数slow_query_type,用来表示启用slow log的方式。,可选的值为:

????0:表示不把SQL语句记录到slow log

????1:表示根据运行时间将SQL语句记录到slow log

????2:表示根据逻辑IO次数将SQL语句记录到slow log

????3:表示根据运行时间及逻辑IO次数将SQL语句记录到slow log

分析

????如果在慢查询日志中搜索,则会非常不方便,分析起来很麻烦,MySQL提供了mysqldumpslow工具帮助分析慢查询日志。

????指令:mysqldumpslow ***-slow.log

????如果希望得到执行时间最长的5条SQL语句,操作如下:

????mysqldumpslow -s -al -n 5 ***-slow.log

最后编辑于
?著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,100评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,308评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事?!?“怎么了?”我有些...
    开封第一讲书人阅读 159,718评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,275评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,376评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,454评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,464评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,248评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,686评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,974评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,150评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,817评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,484评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,140评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,374评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,012评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,041评论 2 351

推荐阅读更多精彩内容

  • 日志文件 错误日志(error log) 数据库优化 二进制日志(bin log) ...
    A_Zeee阅读 275评论 0 0
  • 对MySQL中的6种日志文件,以及配置做简单的记录。 版本:MySQL 5.7 二进制日志(binlog) 记录所...
    8090的大叔阅读 582评论 0 0
  • 1错误日志文件 Error Log 记录mysql的运行过程中比较严重的警告和错误信息,默认是关闭状态,打开使用命...
    IT入门指南阅读 188评论 0 2
  • Mysql - 日志文件 Mysql中一共有6种日志文件 重做日志 - redo log 回滚日志 - undo ...
    万福来阅读 168评论 0 0
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 7,518评论 16 22