1.error log
错误日志, 记录mysql服务启动时出现的问题, 文本文件
[mysqld_safe] #注意是写在这里
log-error=/var/log/mysqld/mysql-error.log -- mysqld文件夹要存在且chown mysql
该日志无法关掉
2.access log
查询(访问)日志, 记录客户端执行的所有语句, 文本文件
对于访问频繁的系统, 对性能影响较大, 建议关闭
show variables like ‘%general_log%’;
[mysqld]
general_log=on
general_log_file=/var/log/mysqld/mysql-access.log ----连上后作一些操作, 然后查看关闭就 #注释这2行
3.bin log
二进制日志, 记录所有的ddl、dml语句, 不记select, 还用于复制, 非文本文件
[mysqld]
log_bin=/var/log/mysqld/mysql-bin -- 日志文件的前缀
服务重启1次, 日志文件就新增1个(如mysql-bin.000002)
flush logs;也会新增一个日志文件
日志文件的大小超过了max_binlog_size(单位是Byte, 默认1GB), 也会新增一个日志文件
显示日志文件:
show master logs;
show master status;
show variables like "%log_bin%"
查看二进制日志:
mysqlbinlog mysql-bin.000001
mysqlbinlog mysql-bin.000001 -d ds -- 只显示ds数据库的
--start-datetime=”2012-10-10 9:10:0” --stop-datetime=”2012-10-10 9:30:59” -- 只显示这段时间之间的日志
--start-position="123" --stop-position="456" -- at后的数字, 繁忙的在线系统, 同一时刻多人操作, 即同一时刻发生有多个dml, 这时可以用position来区分
如果只写开始, 则到日志最尾部, 如果只写结束, 则从日志最开头
-------------------------------------------------------------------------------------------------------------------------------
定期删日志文件是维护MySQL的一个重要工作内容
方法1:
reset master;
删除所有日志文件, 产生1个新日志文件, 重新从000001开始编号
方法2:
purge master logs to 'mysql-bin.000006';
编号000006之前的所有日志文件被删除
方法3:
[mysqld]
expire_logs_days=3(天) -- 重启服务, 从产生到过了3天后该文件将会被自动删除;默认是0,不删除
其他一些选项
[mysqld]
binlog_do_db=db1
binlog_do_db=db2 -- 没有显式指定的数据库将不会被记录
binlog_ignore_db=db1
binlog_ignore_db=db2 -- 没有显式指定的数据库将会被记录
set sql_log_bin = 0; -- 禁止将自己的操作记入二进制日志
4.slow log
慢日志, 文本文件, 记录所有执行时间超过long_query_time秒的语句 增删改查都会记
慢日志对于我们发现有性能问题的语句很有帮助, 建议打开并经常查看分析
[mysqld]
long_query_time=2(秒)
-- 5.5
log_slow_queries=/var/log/mysqld/mysql-slow.log
-- 5.6
slow_query_log=on
slow_query_log_file=/var/log/mysqld/mysql-slow.log