一、mysql日志文件的作用
1、能记录物理数据页面的修改的信息;
2、能将数据从逻辑上恢复至事务之前的状态;
3、能以二进制文件的形式记录了数据库中的操作;
4、能记录错误的相关信息;
5、能从主服务器中二进制文件取的事件等等。
普通日志
记录了服务器接收到的每一个查询或是命令,无论这些查询或是命令是否正确甚至是否包含语法错误,general log 都会将其记录下来 ,记录的格式为 {Time ,Id ,Command,Argument }。
也正因为mysql服务器需要不断地记录日志,开启General log会产生不小的系统开销。 因此,Mysql默认是把General log关闭的。
mysql> show variables like 'general_log%';
+------------------+---------------------------------------+
| Variable_name | Value |
+------------------+---------------------------------------+
| general_log | OFF |
| general_log_file | /www.yuchaoit.cn/mysql_3306/db-51.log |
+------------------+---------------------------------------+
2 rows in set (0.01 sec)
可以开启该功能,命令临时修改
mysql> set global general_log = on;
Query OK, 0 rows affected (0.00 sec)
mysql> set global general_log = on;
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like 'general_log%';
# 永久配置,则写入my.cnf即可
对于普通日志的功能,一般都是关闭的,查询日志的信息量很大,网站用户的海量请求,日志频繁写入,对于磁盘的IO影响很大。
但是对于网访问量不大,并且企业对于SQL审计要求较高,可以开启该功能。
二进制日志binlog
binlog是记录数据库被修改的SQL语句,对数据造成影响了。
一般是DDL和DML语句,包含
insert
update
delete
create
drop
alter
等关键字
作用
记录mysql数据的增量数据,且用来做增量数据恢复,前面超哥已经完整的讲过、全量备份、增量备份的区别,如果不开启binlog,将无法恢复完整的数据。
以及用在主从数据复制
慢查询日志
慢查询日志(slow query log)用于记录执行时间拆过指定值(long_query_time)或者没有使用索引、结果集大于1000行的SQL语句。