MySQL日志:
- MySQL中记录着4种日志:错误日志,BINLOG日志,查询日志和慢查询日志。
错误日志:
- 我们可以通过参数--log-error=[=file_name]来指定MySQL的错误日志文件位置,默认该值为host_name.err。
- 可以看到DATADIR下的错误日志内容大概如下:
二进制日志:
- 可通过--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 TABLE和ALTER TABLE语句写入慢查询日志。(MySQL5.7.1中该参数已改为log_slow_admin_statements)。
不吝指正。