zhuyumu 发表于 2018-10-3 06:17:50

MySQL日志体系

  日志对一个系统或者应用来说是非常的重要的,排错或解决故障,第一时间都是看错误日志
  一、MySQL日志分类:日志文件记录了影响数据库的各种类型活动,MySQL数据库常见的日志文件分类。
  错误日志(Error log)                  --如果日志不存在,flush logs会卡主,如果想备份错误日志,必须要重新新建一个,并赋予权限,在执行flush logs;
  慢查询日志(Slow query log)    -- 如果日志不存在,flush logs会提示日志文件不存在,也不会创建,,如果想备份慢查询日志,必须要重新新建一个,并赋予权限,在执行flush logs;
  二进制日志(binary log)       -- 生成一个新的二进制文件
  查询日志 (general_log)         -- 如果不存在,mysql会自动生成一个
  注意:以上的日志,当执行flush logs时,mysql实例将关闭并重新打开日志文件
  二、错误日志详解:MySQL错误日志是记录MySQL 运行过程中较为严重的警告和错误信息,以及MySQL每次启动和关闭的详细信息。
  【查看MySQL数据库错误日志存放的位置】
  mysql> show variables like 'log_error';
  +---------------+---------------------+
  | Variable_name | Value               |
  +---------------+---------------------+
  | log_error   | /var/log/mysqld.log |
  +---------------+---------------------+
  1 row in set (0.01 sec)
  my.cnf
  log-error=/var/log/mysqld.log   -- 或mysql实例中显示的有些不同
  模拟错误日志:
  三、慢查询日志
  注意:虽然慢查询的名字中只包含了"查询",实际上并不仅仅表示SELECT查询操作,诸如INSERT、UPDATE、DELETE、CALL等其他DML操作,只要是超过指定时间的,都可以称之为「慢查询」,并且会记录在慢查询日志中。
  和慢查询日志有关的参数:
  slow_query_log=on|off               #是否开启慢查询日志
  slow_query_log_file=filePathAndName;#指定慢查询日志文件的路径和文件名,默认在data目录
  long_query_time=5                     #指定多少秒没有返回结果的语句记录日志,即超过该时间就被认为是慢查询
  log_queries_not_using_indexes         #记录所有没有使用到索引的查询语句
  min_examined_row_limit=1000         #记录由于查询了多于1000次而导致的慢查询
  log_slow_admin_statements             #记录慢的那些OPTIMIZE TABLE、ANALZE TABLE和ALTER TABLE语句。因为这些语句本身内部会执行查询,如alert table会先查询出来再进行修改。
  log_slow_slave_statements             #记录由slave所产生的慢查询
  log_output=FILE|TABLE               #如果选择table   select * from mysql.slow_log;
  设置参数:
  set @@global.log_output='FILE';
  set global log_output='TABLE';
  select @@log_output;
  select @@global.log_output;
  show global variables like 'log_output';
  show variables like 'log_output';
  模拟慢查询日志: selectsleep()

页: [1]
查看完整版本: MySQL日志体系