Mysql日志管理

Mysql日志:

  错误日志:log-error、log-warnings

  慢查询日志:log_slow_queries

  二进制日志:binlog

  通用查询日志:general_log

  事务日志:innodb_log

  中继日志:relay_log

1、错误日志:记录mysql启动、关闭、运行时产生的错误信息及事件调度器运行,主从复制框架中,

从服务器复制线程时产生的日志。

  修改主配置文件 my.cnf(或者my.ini)

  log-error=mysql_error.log  (绝对路径或者相对路径)

  log_warnings={on|off|2}      (是否将警告信息记录在日志中;on:记录,off:不记录,2:表示失败拒绝的连接信息)

在mysql服务器上查看错误日志的配置命令:

  show global variables like '%log%'

2、慢查询日志:记录所有执行时间超过long_query_time秒的sql语句,可用于找到执行时间长的sql语句用于sql优化(默认为开启,

默认超过10s的SQL查询才会被记录)。

  修改主配置文件 my.cnf(或者my.ini):

  log-slow-queries=文件路径

  long_query_time=10  (默认超过10秒的sql才会被记录)

在mysql服务器上查看慢查询命令:show global variables where variable_name like '%slow_query%'。

mysql自带的对慢查询日志的统计分析工具:mysqldumpslow

3、二进制日志(***):记录所有数据相关操作的语句、时间、位置,主要数据恢复,默认是开启的。

  修改主配置文件 my.cnf(或者my.ini):

  log_bin=mysql-bin  ##日志文件名称,未指定位置,默认数据文件位置

  max_binlog_size=1073741824  ##设置单个二进制文件最大尺寸,单位是字节,超过此值自动回滚

  sync_binlog={1|0|N}   ##1:立即提交,0:不提交,N:每N次,表示每几次事务提交后是否立即将内存中的二进制日志同步到内存(binlog_cache)中

  binlog_format={statement|row|mixed}    ##binlog日志存放的格式

statement:语句,记录了多数据库作出修改的语句;row:行,记录 了对 数据库作出修改的语句所影响到的数据行以及这些行的修改;

mixed:混编,混合上述两种模式;

  expire_logs_days=N  ##二进制日志的有效天数

  相关操作命令:

  (1)查看所有日志:  show biary logs 或者 show  master logs

  (2)查看正在写入的日志文件:show master status;

  (3)查看当前binlog文件内容:show binlog events;(或指定日志文件查看show binlog events in 'mysql-bin.00000)

    show binlog events [in 'log_name'] [from pos] [limit [offset,] row_count]

  (4)查看二进制日志的参数配置:show global variables where variable_name like '%log_bin%' or variable_name like '%binlog%';

  (5)手动滚动二进制日志:flush logs(结束正在写入的日志文件)

  (6)清除二进制日志

    (6.1)删除所有二进制日志,并重新开始记录:reset master;

    (6.2)删除指定日志之前的日志:purge master logs to '日志'

    (6.3)删除某一时间点前的所有日志:purge master logs before '年-月-日 时:分:秒';

    (6.4)删除n天之前的所有日志:purge master logs before current_date - interval 10 day

  (7)二进制日志文件导出

    mysqlbinlog --start-datetime="2015-07-02 11:25:56" --stop-datetime="2015-07-02 14:20:10" mysql-bin.000001 > /data/test01.log #按时间点导出
    mysqlbinlog --start-position=203  --stop-position=203 mysql-bin.000001 > /data/test02.log#按事件位置导出
  (8)数据恢复
    (8.1)完整恢复,先执行上次完整备份恢复,再执行自上次备份后产生的二进制日志文件恢复
        mysql  localhost mysql-bin.000001 | mysql -uroot  -proot
    (8.2)基于时间点恢复:
         mysqlbinlog --start-datetime="2015-07-02 11:25:56" --stop-datetime="2015-07-02 14:20:10" mysql-    bin.000001 | mysql -u root 
 
    (8.3)基于位置恢复:   
        取两事件点
        mysqlbinlog --start-position=5786 --stop-position=6254 mysql-bin.000001 | mysql -uroot -p
posted @ 2018-03-19 11:36  跟着心走!  阅读(155)  评论(0编辑  收藏  举报