Mysql日志管理
Mysql日志:
错误日志:log-error、log-warnings
慢查询日志:log_slow_queries
二进制日志:binlog
通用查询日志:general_log
事务日志:innodb_log
中继日志:relay_log
1、错误日志:记录mysql启动、关闭、运行时产生的错误信息及事件调度器运行,主从复制框架中,
从服务器复制线程时产生的日志。
修改主配置文件 my.cnf(或者my.ini)
log-error=mysql_error.log (绝对路径或者相对路径)
log_warnings={on|off|2} (是否将警告信息记录在日志中;on:记录,off:不记录,2:表示失败拒绝的连接信息)
在mysql服务器上查看错误日志的配置命令:
show global variables like '%log%'
2、慢查询日志:记录所有执行时间超过long_query_time秒的sql语句,可用于找到执行时间长的sql语句用于sql优化(默认为开启,
默认超过10s的SQL查询才会被记录)。
修改主配置文件 my.cnf(或者my.ini):
log-slow-queries=文件路径
long_query_time=10 (默认超过10秒的sql才会被记录)
在mysql服务器上查看慢查询命令:show global variables where variable_name like '%slow_query%'。
mysql自带的对慢查询日志的统计分析工具:mysqldumpslow
3、二进制日志(***):记录所有数据相关操作的语句、时间、位置,主要数据恢复,默认是开启的。
修改主配置文件 my.cnf(或者my.ini):
log_bin=mysql-bin ##日志文件名称,未指定位置,默认数据文件位置
max_binlog_size=1073741824 ##设置单个二进制文件最大尺寸,单位是字节,超过此值自动回滚
sync_binlog={1|0|N} ##1:立即提交,0:不提交,N:每N次,表示每几次事务提交后是否立即将内存中的二进制日志同步到内存(binlog_cache)中
binlog_format={statement|row|mixed} ##binlog日志存放的格式
statement:语句,记录了多数据库作出修改的语句;row:行,记录 了对 数据库作出修改的语句所影响到的数据行以及这些行的修改;
mixed:混编,混合上述两种模式;
expire_logs_days=N ##二进制日志的有效天数
相关操作命令:
(1)查看所有日志: show biary logs 或者 show master logs
(2)查看正在写入的日志文件:show master status;
(3)查看当前binlog文件内容:show binlog events;(或指定日志文件查看show binlog events
in
'mysql-bin.00000
)
show binlog events [in 'log_name'] [from pos] [limit [offset,] row_count]
(4)查看二进制日志的参数配置:show global variables where variable_name like '%log_bin%' or variable_name like '%binlog%';
(5)手动滚动二进制日志:flush logs(结束正在写入的日志文件)
(6)清除二进制日志
(6.1)删除所有二进制日志,并重新开始记录:reset master;
(6.2)删除指定日志之前的日志:purge master logs to '日志'
(6.3)删除某一时间点前的所有日志:purge master logs before '年-月-日 时:分:秒';
(6.4)删除n天之前的所有日志:purge master logs before current_date - interval 10 day
(7)二进制日志文件导出
mysqlbinlog --start-datetime="2015-07-02 11:25:56" --stop-datetime="2015-07-02 14:20:10" mysql-bin.000001 > /data/test01.log #按时间点导出
mysqlbinlog --start-position=203 --stop-position=203 mysql-bin.000001 > /data/test02.log#按事件位置导出
取两事件点
mysqlbinlog --start-position=5786 --stop-position=6254 mysql-bin.000001 | mysql -uroot -p