MySQL日志简介

  • 错误日志: 记录MySQL服务启动,运行或停止MySQL服务时出现的问题
  • 查询日志: 记录建立的客户端连接和执行的语句
  • 二进制日志: 记录所有更改数据的语句,可以用于数据恢复
  • 慢查询日志:记录所有查询时间超过long_query_time的所有查询或不使用索引的查询

二进制日志

启动和设置二进制日志

在my.cnf中开启
log-bin [=path/[filename]] 日志存储路径
expire_logs_days = 10 二进制日志自动清除的天数
max_binlog_size=100M 二进制日志的大小,当日志超过指定大小时,会自动创建一个新的二进制日志文件

查看二进制日志

show binary logs 查看当前的二进制日志文件的个数及其文件名

mysqlbinlog /opt/mysql/data/binlog.0000001 直接查看二进制日志

删除二进制日志

  • 使用RESET MASTER语句删除所有二进制日志文件(执行该语句,所有二进制文件将会被删除)
  • 使用PURGE MASTER LOGS删除指定日志文件
    1. PURGE {MASTER BINARY} LOGS TO ‘logname’ 将删除文件名编号比指定文件名标号小的所有日志文件
    2. PURGE {MASTER BINARY} LOGS BEFORE ‘date’ 将删除指定日期以前的所有二进制文件

### 使用二进制日志恢复数据库

MySQLbinlog恢复数据的语法如下:

mysqlbinlog [option] filename mysql -uuser -ppass

option: –start-date和–stop-date:指定恢复数据库的起始时间点和结束时间点 –start-position和–stop-position:指定恢复数据的开始位置和结束位置

例:

mysqlbinlog --stop-date='2016-01-30 15:27:48' /opt/mysql/data/binlog.0000008 | mysql -uuser -ppass

暂时停止二进制日志功能

SET sql_log_bin=[0|1] 0:暂时停止记录二进制日志 1:恢复记录二进制日志

错误日志

启动和设置错误日志

[mysqld]
log-error=[path / [file_name]]

查看错误日志

使用SHOW VARIABLES LIKE ‘log_error’查看错误日志的存储路径和文件名

删除错误日志

MySQL错误日志以文本形式存储在文件系统当中,可以直接删除

在运行状态下删除错误日志文件后,MySQL不会自动创建日志文件,所以在删除错误日志之后,如果需要重建日志文件,需要执行mysqladmin -u root -p flush-logs

通用查询日志

通用查询日志记录MySQL的所有用户操作,包括启动或关闭服务,执行查询或过呢更新语句等.

启动和设置通用查询日志

[mysqld]
log=[path /[filename]]

删除通用查询日志

可以在文件系统当中直接进行删除,要想重建,需要执行mysqladmin -uroot -ppass flush logs

慢查询日志

启动和设置慢查询日志

[mysqld]
log-slow-queries=[path/[filename]] 设置日志存储位置
long_query_time=n n为时间值,单位为秒,若不设置则默认为10

查看慢查询日志

可以直接用文本查看,通常借助慢查询日志分析工具(MySQL dumpslow ,MySQL SLA等)

删除慢查询日志

可以直接删除,需要执行mysqladmin -uroot -ppass flush-logs重新生成日志文件。