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删除指定日志文件
-
PURGE {MASTER BINARY} LOGS TO ‘logname’ 将删除文件名编号比指定文件名标号小的所有日志文件 -
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重新生成日志文件。