日志作用
1、排错
2、了解MySQL运行状况
3、还原真相
日志分类
- 错误日志
- 慢日志
- 通用查询日志
- 二进制日志
错误日志
-
默认开启
-
作用
登录失败会记录到错误日志
配置文件出错也会记录
启动过程出问题也会记录 -
默认保存路径:
log-error=/data/mysql/mysql.log
/data/mysql/主机名.err(编译安装) -
指定保存路径:/etc/my.cnf中[mysqld]下加入log-error=指定路径
注意:在配置文件中指定错误日志的路径,记得给这个日志文件mysql用户写的权限,改完配置文件记得刷新服务 -
在MySQL里查看变量的值(指定的安装路径)
show variables like “log_error”;
二进制日志
二进制日志是MySQL最重要的日志之一
-
默认不开启
-
开启
在my.cnf中[mysqld]下加入下面两行
log_bin
server_id = 1 -
作用
对所有库的操作都会记录到一个二进制文件,对数据产生了改变才会产生二进制日志,select不会产生二进制日志,二进制日志可以用来恢复数据,主从复制。怎么恢复数据:因为记录了之前所有的操作步骤,所以如果删除了所有的数据,可以重演之前的所有步骤,达到恢复的效果。 -
默认存放路径:/data/mysql/zabbix-4-centos7-bin.000001
-
恢复数据的时候:
1.根据时间来恢复
2.根据位置来恢复Position -
二进制日志的产生
刷新服务就会重新产生一个新的二进制文件,
在mysql中flush logs;也可以产生
那为什么要产生新的二进制文件呢,
因为一个二进制文件最大1G.
show variables like ‘max_binlog_size’ – 查看默认一个二进制文件的大小而下面的这个文件中记录着产生了几个二进制文件 -
一些二进制日志值得注意的地方
其他的日志可以在MySQL中使用set global 命令,但是二进制日志不能通过set global log_bin = 1 来开启;不能用tail、head、cat去查看,因为它二进制类型,不是文本类型。
有专门的命令去看log_bin:
mysqlbinlog /data/mysql/zabbix-4-centos7-bin.000001
mysqlbinlog -vv 接个 -vv 可以更加详细的查看
不过这个命令不能直接用,要修改PATH变量指定mysqlbinlog 所在的目录(/usr/local/mysql/bin) -
二进制日志的格式
1、Statement格式(mariadb目前使用)
基于语句的,记录操作的sql语句
2、Row格式(MySQL5.7版本后使用的)
基于操作的数据,每一行数据
3、MIXED格式
前两种混合使用
慢日志
-
默认是关闭的
-
作用:记录消耗时间比较长的SQL语句,为数据库性能提升提供了线索
-
在MySQL里查看变量的值(指定的安装路径和是否开启)
show variables like “%slow_query%”; -
查看判断位慢日志的sql语句执行时段
show variables like “%long_query%”;
如果一条SQL的执行时间超过这个时间,就算一条慢SQL,会产生慢日志 -
开启慢日志
vim /etc/my.conf在mysqld中添加如下配置: slow_query_log=1long_query_time=0.001 –》指定sql语句为慢查询的界限时间slow_query_log_file=/data/mysql/sanchuang_mysql_slow.log –》存放路径
通用查询日志
-
默认关闭
-
查询关键字 general_log
-
开启通用查询日志:加入以下两个字段到my.cnf文件下
[mysqld]
general_log
general_log_file=/data/mysql/sanchuang_mysql_ge.log -
优点:会记录所有的SQL操作
-
缺点:消耗cpu、内存、磁盘资源