辛辛苦苦记录日志mysql的目录
一定要看我这篇博客。
日志/log的功能目标是
- 诊断、故障排除
- 还原真相
关于日志存储的一般建议
日志存储最好和数据存储分开来,否则很可能发生“一荣俱荣,一损俱损的状况”——发生极端意外情况的时候,数据没了,日志也没了(摊手)。
日志分类
- 错误日志
- 慢日志
- 二进制日志
- 查询日志
错误日志
错误日志,记录用户登录和服务启动出错相关的信息,
- 默认是开启的
- 默认存放在数据存放目录下
- 默认文件名为 主机名.err
在配置文件中可以指定错误日志的路径
vim /etc/my.cnf
log-error=/var/log/mysql/mysql.log
需要确认目标用户具备读写mysql.log的权限。
错误日志文件默认记录的数据
- 登录失败
- 配置文件出错
- 启动过程出问题
慢日志
慢日志用来记录消耗时间比较长的SQL语句,为数据库性能提升提供了线索。
slow_query_log默认情况下是关闭的。
开启慢日志并设置相应参数
开启慢日志
slow_query_log=1
配置参数。eg:SQL语句执行时间超过10ms就记录入慢日志
long_query_time=0.001
配置慢日志存储位置,eg:
slow_query_log_file=/var/log/mysql_slow.log
通用查询日志
优点:会记录所有的SQL操作。
缺点:消耗大量的磁盘空间、消耗CPU、内存等资源。
开启通用查询日志
使用mysql命令临时开启通用查询日志
mysql> set global general_log=1;
二进制日志binary_log
二进制日志文件使用的二进制数据存储的,不能使用tail、head等命令查看。
mysql实例
为了每一个应用程序分别跑一个mysqld进程,每一个mysqld进程就是一个实例。
开启二进制日志
二进制日志不能在mysql客户端中临时开启,只能在my.cnf文件中开启。
开启二进制日志
log_bin=1
使用主从复制功能的时候,需要配置二进制日志,master机器配置如下
server_id=1
查看二进制日志的方法
查看二进制日志需要使用 mysqlbinlog 命令,这个命令在mysql的bin目录下,可以使用-vv参数更好的阅读二进制日志,eg:
mysqlbinlog -vv /var/log/1.000001
需要注意的是 create 描述的是某次操作,200814 16:07:32 描述的是操作的时间点,end_log_pos 可以帮助我们定位操作。这些参数在备份恢复和主从复制的实现中都很有用。
查看当前二进制文件和操作位置的命令是:
show master status
tips
使my.cnf配置生效,需要kill原来的守护进程和工作进程,重启mysql服务。