慢查询日志:记录所有执行时间超过long_query_time的所有查询,方便我们对查询进行优化。
通用查询日志:记录所有连接的起始时间和终止时间,以及连接发送给数据库服务器的所有指令,
对我们复原操作的实际场景、发现问题,甚至是对数据库操作的审计都有很大的帮助。
错误日志:记录MySQL服务的启动、运行或停止MySQL服务时出现的问题,方便我们了解服务器的状态,从而对服务器进行维护。
二进制日志:记录所有更改数据的语句,可以用于主从服务器之间的数据同步,以及服务器遇到故障时数据的无损失恢复。
中继日志:用于主从服务器架构中,从服务器用来存放主服务器二进制日志内容的一个中间文件。
从服务器通过读取中继日志的内容,来同步主服务器上的操作。
数据定义语句日志:记录数据定义语句执行的元数据操作。
除二进制日志外,其他日志都是 文本文件 。默认情况下,所有日志创建于 MySQL数据目录 中。
日志功能会降低MySQL数据库的性能。例如,在查询非常频繁的MySQL数据库系统中,如果开启了通用查询日志和慢查询日志,MySQL数据库会花费很多时间记录日志。
日志会占用大量的磁盘空间。对于用户量非常大、操作非常频繁的数据库,日志文件需要的存储空间设置比数据库文件需要的存储空间还要大
通用查询日志用来 记录用户的所有操作 ,包括启动和关闭MySQL服务、所有用户的连接开始时间和截止时间、发给 MySQL 数据库服务器的所有 SQL 指令等。当我们的数据发生异常时,
查看通用查询日志,还原操作时的具体场景,可以帮助我们准确定位问题
# 查看通用查询日志的开启状态,OFF表示未开启
SHOW VARIABLES LIKE '%general%';
# 永久启动通用查询日志
# 修改my.cnf或者my.ini配置文件来设置。在[mysqld]组下加入log选项,并重启MySQL服务
general_log=ON
general_log_file=[path[filename]] #日志文件所在目录路径,filename为日志文件名
# 临时开启通用查询日志
SET GLOBAL general_log=on; # 开启通用查询日志
SET GLOBAL general_log_file=’path/filename’; # 设置日志文件保存位置
# 之后就可以看到通用查询日志已经开启
SHOW VARIABLES LIKE 'general_log%';
# 开启通用查询日中后
# 现在执行增删改查操作
# 使用vim打开自己设置的通用查询日志保存路径的文件
# 就可以查看到刚才执行的sql语句
# 通用查询日志会消耗数据库太多的性能
# 永久关闭通用查询日志
# 修改 my.cnf 或者 my.ini 文件,把[mysqld]组下的 general_log 值设置为 OFF 或者把general_log一项注释掉。修改保存后,再 重启MySQL服务
general_log=OFF
# 临时方式开启的通用查询日志,则使用临时方式关闭通用查询日志
SET GLOBAL general_log=off;
# 查看是否关闭成功
SHOW VARIABLES LIKE 'general_log%';
# 最后可以使用命令手动删除日志文件或保存到本地
# 在MySQL数据库中,错误日志功能是 默认开启 的。而且,错误日志 无法被禁止
# 默认情况下,错误日志存储在MySQL数据库的数据文件夹下,名称默认为 mysqld.log (Linux系统)或hostname.err (mac系统)
# 如果需要制定文件名,则需要在my.cnf或者my.ini中做如下配置:
log-error=[path/[filename]] #path为日志文件所在的目录路径,filename为日志文件名
# 修改配置项后,需要重启MySQL服务以生效
# 查看错误日志在mysql服务器上的存储路径
SHOW VARIABLES LIKE 'log_err%';
# 使用vim命令打开错误日志查看
# 将原来的错误日志删除或修改1个新的名称保存到本地
# 执行如下刷新命令后,并没有生成新的错误日志文件,同时保存
mysqladmin -uroot -p flush-logs
# 需要先执行如下命令后,再刷新
install -omysql -gmysql -m0644 /dev/null /var/log/mysqld.log