Mysql 日志管理
日志分类
- 错误日志 :启动,停止,关闭失败报错,rpm安装日志位置 /var/log/mysqld.log
- 通用查询日志:所有的查询都加下
- 二进制日志:实现备份,增量备份。只记录改变数据,除了select。
- 中继日志:读取服务器binlog,在本地回放。保持一致。
- slow log:慢查询日志,指导调优,定义某一个查询语句,定义超时时间,通过日志提供调优建议给开发人员。
- DDL log:定义语句的日志
error log (错误日志)
vim /etc/my.cnf
log-error=/var/log 该字段标记是否启动日志,以及日志位置
若哪天mysql服务起不来,就来此查看。
binary log(二进制日志)
启动二进制日志
vim /etc/my.cnf
log_bin 添加该字段指定二进制日志
server-id=2 集群问题,须比指定该主机的序号,字数随意。
测试
查看二进制日志文档当前状态
1.查询二进制文件生成
ls /var/lib/mysql/^bin*
2.查看二进制文件日志
mysqlbinlog -v /var/lib/mysql/localhost-bin.000001
进入数据库进行数据操作
创库,创表,创数据
完成二进制日志启动查询测试
mysqlbinlog -v /var/lib/mysql/localhost-bin.000001
找到之前创建记录即可
注意
- 重启mysqld会截断bin日志,产生新的二进制日志
- flush logs 会截断日志
- reset master 删除所有binlog。等同于rm-rf
- 删除部分
净化掉1号日志文件
PURGE BINARY LOGS TO 'mysql-bin.010'
临时暂停二进制文件
目的
数据库还原行为,避免重复的记录。
set sql_log_bin=0 禁用二进制日志
set sql_log_bin=1 恢复二进制日志
查看binlog日志
# mysqlbinlog /var/lib/mysql/localhost-bin.000001
slow query log
vim /etv/my.cnf
加入下面三行
1.slow_query_log=1
# 启动慢查询日志 ,这个参数设置为ON,可以捕获执行时间超过一定数值的SQL语句。
2.slow_query_log_file
默认日志文件在/var/lib/mysql*slow*中
如果希望独立存储日志文件,可跟上日志文件:
slow_query_log_file=/var/log/mysql-slow/slow.log
# mkdir /var/log/mysql-slow/
# chown mysql.mysql /var/log/mysql-slow/
# systemctl restart mysqld
3.long_query_time=3
当sql语句执行时间超过此数值时,就会被记录到日志中,建议设置为1或更短。
ll /var/lib/mysql/*slow* 查看日志文件已生成