MySQL日志

MySQL中有4种类型的日志:错误日志error log;二进制日志binary log;查询日志general log和慢日志slow log。
除了错误日志以外,其他log默认都是不启用的,需要配置数据库参数来enable。
日志是服务器级别的文件,即对于每种log,所有数据库的信息都混合在一个文件中。

错误日志
错误日志记录MySQL启动和停止的过程,以及MySQL运行过程中发生的严重错误。当数据库出现任何错误而无法正常运行时,应首先查看错误日志。
错误日志所在的位置由log_error参数指定。默认该文件在data dir目录下,默认文件名为host_name.error。

二进制日志
二进制日志(BINLOG),包括数据库中运行的所有的DDL和DML语言,但是不包括查询语言和没有实际更新的update语句。也就是说仅记录会导致数据库结构或数据发生改变的语句。注意一个二进制文件记录所有数据库的变化,而不是每个数据库有自己单独的二进制文件。
二进制日志默认不开启。开启方式如下:

1, 在/etc/mysql/my.cnf中添加log-bin和server-id参数:
log-bin=mysql-bin – mysql-bin是文件的前缀名
server-id=1

2, 重启MySQL后,在/var/lib/mysql下,也就是设置的data dir下就可以找到二进制日志文件。
mysql-bin.000001
mysql-bin.index

3, 二进制日志不可直接查看,需要使用mysqlbinlog查看日志内容:
shell>mysqlbinlog filename

下面是一段二进制日志示例:

BEGIN
/*!*/;
at 299
        160128 13:56:27 server id 1  end_log_pos 353 CRC32 0x964fbee2   Table_map: `lillian_test`.`t1` mapped to number 108
at 353
160128 13:56:27 server id 1  end_log_pos 397 CRC32 0x0c0a6030   Write_rows: table id 108 flags: STMT_END_F

BINLOG '
i62pVhMBAAAANgAAAGEBAAAAAGwAAAAAAAEADGxpbGxp    YW5fdGVzdAACdDEAAgMDAAPivk+W
i62pVh4BAAAALAAAAI0BAAAAAGwAAAAAAAEAAgAC//wBAAAAAgAAADBgCgw=
'/*!*/;
at 397

由上例我们可以看出,日志采用了statement和row混合记录方式。可以明显看出DDL和DML语句的是statement部分,而不可读的BINLOG部分为row部分。使用binlog_format参数可以选择使用statement,row或是混合方式。可以使用show variables命令查看。
对于日志中的不可读部分,可以使用下面的命令查看:

mysqlbinlog -vv binlog.000001 –base64-output=DECODE-ROWS

由于二进制日志记载了所有数据变化,因此可能会短时间内增长的很大。删除二进制日志是DBA的日常工作之一。三种途径来实现:
1,清空二进制日志:reset master;
2,删除二进制日志到指定的文件/时间点:
purge master log to/before ‘yyyy-mm-dd hh24:mi:ss’
3,通过设置expire-logs-days参数来设置过期时间,实现自动清理log。

查询日志
查询日志和慢日志都可以选择保存在表中或文件中。使用general_log参数开启查询日志,文件位置由general_log_file指定。但由于该日志记录了客户端所有语句,在一些情况下会影响性能,因此无特别需要不建议开启。
查询日志是纯文本,可以直接查看。

慢查询日志
慢查询日志记录所有执行时间超过long_query_time参数,并且扫描记录数不少于min_examined_row_limit的所有SQL语句的日志。
在默认情况下,两类语句不会被记录到慢查询日志中:
1,管理语句
2,不使用索引进行的查询语句

使用log_slow_queries=[filename]来启用该日志。该日志也是文本格式的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值