MySQL管理与优化(20):MySQL日志

MySQL日志:

  • MySQL中记录着4种日志:错误日志BINLOG日志查询日志慢查询日志

错误日志:

  • 我们可以通过参数--log-error=[=file_name]来指定MySQL的错误日志文件位置,默认该值为host_name.err。
  • 可以看到DATADIR下的错误日志内容大概如下:

     MySQL管理与优化(20):MySQL日志_第1张图片

二进制日志:

  • 可通过--log-bin[=file_name]选项启动设置binlog的文件位置,该文件记录了所有的DDL和DML语句,但不包括SELECT语句。

日志位置和格式:

  • 若不指定--log-bin,默认为以host_name-bin文件,并保存在DATADIR下。

日志的读取:

  • 可采用mysqlbinlog工具读取对应的二进制文件。

日志的删除:

  • 通过RESET MASTER删除所有bin log日志。
-- 查看mysql二进制文件
mysql> system ls -ltr localhost-bin*;
-rw-rw----  1 root  root   24 Oct  3 15:13 localhost-bin.index
-rw-rw----  1 root  root  804 Oct  3 15:16 localhost-bin.000001                                        
  • 几种方式删除二进制文件:
-- RESET MASTER删除所有二进制文件, 并从000001开始重新编号 
reset master;

-- purge删除某编号之前的所有二进制文件
purge master logs to 'locahost-bin.000005';

-- purge删除某时间之前的所有二进制文件
purge master logs before '2014-10-02 14:20:35';

-- 设置--expire_logs_days=#,设置binlog过期天数

其他选项:

  • --binlog-do-db=db_name仅记录db_name的数据库的bin log。
  • --binlog-ignore-db=db_name忽略db_name数据库的bin log记录。
  • --innodb-safe-binlog此选项通常和--sync-binlog=N(每写N次日志同步到磁盘)一起使用。
  • SET SQL_LOG_BIN=0可禁止将自己的语句记录到bin log(需要SUPER权限)。

查询日志:

  • 查询日志记录了客户端的所有语句,而二进制日志不包含查询日志。
  • 若为开启log,可设置参数general_log=1开启查询日志记录,默认为DATADIR/host_name.log文件。
  • log日志记录了所有数据库的操作,对于访问频繁的系统建议禁用。

慢查询日志:

  • 可设置slow_query_log=1开启慢查询日志,默认为DATADIR/host_name-slow.log文件。
  • long_query_time选项可设置慢查询的时间标准,默认为10s。
  • 可通过mysqldumpslow工具进行日志分类汇总:
mysqldumpslow <slow-log-file>
  • 建议正常情况下,打开此日志并进行查看分析。
  • 可通过--log-slow-admin-statements服务器选项,可以请求将慢管理语句,如OPTIMIZE TABLE, ANALYZE TABLEALTER TABLE语句写入慢查询日志。(MySQL5.7.1中该参数已改为log_slow_admin_statements)。

不吝指正。

你可能感兴趣的:(mysql日志)