mysql日志有什么用_MYSQL日志文件的功能分析

MYSQL里的日志主要分为4类,使用这些日志文件,可以查看MYSQL内部发生的事情。分别是1、错误日志:记录mysql服务的启动、运行、停止mysql服务时出现的问题 error log2、查询日志:记录建立的客户端连接和执行的语句 gerenal log3、二进制日志:记录所有更改数据的语句,可以用于数据复制 binary log4、慢查询日志:记录所有执行时间超过long_query_ti...
摘要由CSDN通过智能技术生成

MYSQL里的日志主要分为4类,使用这些日志文件,可以查看MYSQL内部发生的事情。

分别是

1、错误日志:记录mysql服务的启动、运行、停止mysql服务时出现的问题  error log

2、查询日志:记录建立的客户端连接和执行的语句 gerenal log

3、二进制日志:记录所有更改数据的语句,可以用于数据复制  binary log

4、慢查询日志:记录所有执行时间超过long_query_time的所有查询或不使用索引的查询  slow log

默认情况下,所有日志创建于mysql数据目录中。通过刷新日志,可以强制mysql关闭和重新打开日志文件(或者在某些情况下切换到

一个新的日志)。当执行一个FLUSH LOGS语句或执行mysqladmin flush-logs 或mysqladmin refresh 时,将刷新日志

如果使用mysql复制功能,在复制服务器上可以维护更多日志文件,这种日志称为接替日志

其他日志功能会降低mysql数据库的性能。例如,在查询非常频繁的mysql数据库系统中,如果开启了通用查询日志和慢查询日志,

mysql数据库会花费很多时间记录日志。同时,日志会占用大量的磁盘空间

二进制日志

二进制日志就是我们经常说的binlog,主要记录mysql数据库的变化。

二进制日志以一种有效的格式,并且是事务安全的方式包含更新日志中可用的所有信息。

二进制日志包含关于每个更新数据库的语句的执行时间信息。他不包含没有修改任何数据的语句,例如select语句

使用二进制日志的最大目的是最大可能地恢复数据库,因为二进制日志包含备份后进行的所有更新

1、启动和设置二进制日志

默认情况下,二进制日志是关闭的,可以通过修改mysql的配置文件来启动和设置二进制日志

my.ini中[mysqld]组下面有几个设置是关于二进制日志的:log-bin[=PATH/[FILENAME]]expire_logs_days=10max_binlog_size=100M

log-bin定义开启二进制日志;path表明日志文件所在的目录路径;

filename指定了日志文件的名称,如文件的全名是filename.0001,filename.0002等

除了上述文件之外,还有一个成为filename.index的文件,文件内容为所有日志的清单,可以使用记事本打开该文件

filename.index文件的内容,joe是我的计算机名,当前只有一个binlog文件:.\joe-bin.000001.\joe-bin.000001

expire_logs_days定义了mysql清除过期日志的时间,即二进制日志自动删除的天数。

默认值为0,表示“没有自动删除”。当mysql启动或刷新二进制日志时可能删除该文件

max_binlog_size定义了单个文件的大小限制,如果二进制日志写入的内容大小超出给定值,日志就会发生滚动

(关闭当前文件,重新打开一个新的日志文件)。不能将该变量设置为大于1GB或小于4096字节。默认值是1GB

如果正在使用大事务 ,二进制日志文件大小还可能超过max_binlog_size的定义大小。

在my.ini配置文件中的[mysqld]组下,添加以下几个参数与参数值[mysqld]log-binexpire_logs_days=10max_binlog_size=100M

添加完毕之后,关闭并重启mysql服务进程,即可打开二进制日志,然后可以通过SHOW VARIABLES语句来查询日志设置

使用show VARIABLES  语句查看日志设置show VARIABLES  LIKE '%log_%';

AAffA0nNPuCLAAAAAElFTkSuQmCC

可以看到log_bin为ON,max_binlog_size为104857600字节,换算为MB为100MB

MYSQL重新启动之后,就可以看到新产生的文件后缀为.000001和.index的两个文件,文件名称默认为主机名称

AAffA0nNPuCLAAAAAElFTkSuQmCC

如果想改变日志文件的目录位置,可以修改my.ini中log-bin参数

例如:[mysqld]log-bin="D:\mysql\log\binlog"

关闭并重启mysql服务之后,新的二进制日志将出现在"D:\mysql\log\binlog"路径下

提示:数据库文件最好不要和日志文件放在同一个磁盘上,这样当数据库文件所在磁盘发生损坏的时候,可以使用日志来恢复数据

2、查看二进制日志

mysql二进制日志是经常用到的。当mysql创建二进制日志文件时,首先创建一个以filename为名称,以index为后缀的文件;

再创建一个以filename为名称,以“.000001”为后缀的文件。当mysql服务重新启动一次,以“.000001”为后缀的文件会增加一个,

并且后缀名加1递增;如果日志长度超过了max_binlog_size的上限(默认是1GB)也会创建一个新的日志文件

show binary logs语句可以查看当前二进制日志文件个数和文件名。mysql二进制日志并不能直接查看,如果要查看日志内容,

可以通过mysqlbinlog命令查看

使用show binary logs语句查看二进制日志文件个数和文件名SHOW BINARY LOGS;

AAffA0nNPuCLAAAAAElFTkSuQmCC

可以看到,当前有两个二进制日志文件,因为我把mysql服务重启了一次,日志文件的个数和mysql服务启动的次数相同。

每启动一次mysql服务,将会产生一个新的日志文件

使用mysqlbinlog查看二进制日志

mysqlbinlog是一个单独的exe,需要在命令行里执行我们把binlog文件里面的内容导出到binlog.txtmysqlbinlog  "D:\Program Files (x86)\MySQL\MySQL Server5.5\data\joe-bin.000002" >c:\binlog.txt

/*!40019 SET @@session.max_insert_delayed_threads=0*/;

/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;

DELIMITER /*!*/;

# at 4

#140731  7:49:30 server id 1  end_log_pos 107     Start: binlog v 4, server v 5.5.20-log created 140731  7:49:30 at startup

# Warning: this binlog is either in use or was not closed properly.

ROLLBACK/*!*/;

BINLOG '

ioTZUw8BAAAAZwAAAGsAAAABAAQANS41LjIwLWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAACKhNlTEzgNAAgAEgAEBAQEEgAAVAAEGggAAAAICAgCAA==

'/*!*/;

DELIMITER ;

# End of log file

ROLLBACK /* added by mysqlbinlog */;

/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;

3、删除二进制日志

mysql的二进制日志可以配置自动删除,同时mysql也提供了安全的手动删除二进制日志的方法

删除所有的二进制日志文件使用RESET MASTER;RESET MASTER;

执行该语句,所有二进制日志将被删除,mysql 会重新创建二进制日志,新的日志文件扩展名将重新从000001开始编号

只删除部分二进制日志文件使用PURGE MASTER LOGS;PURGE MASTER LOGS;

语法如下PURGE {MASTER | BINARY} LOGS TO 'log_name'PURGE {MASTER | BINARY} LOGS BEFORE 'date'

第一种方法指定文件名,执行该命令将删除文件名编号比指定文件名编号小的所有日志文件

第二种方法指定日期,执行该命令将删除指定日期以前的所有日志文件

使用PURGE MASTER LOGS;删除创建时间比binlog.000003早的所有日志文件

首先,为了演示语句操作过程,准备多个日志文件,读者可以对mysql服务进行多次重启

例如这里有10个日志文件

AAffA0nNPuCLAAAAAElFTkSuQmCC

执行删除命令PURGE MASTER LOGS TO "joe-bin.000003";

执行完成后,使用 show BINARY logs; 查看二进制日志

AAffA0nNPuCLAAAAAElFTkSuQmCC

可以看到joe-bin.000001和joe-bin.000002两个日志文件被删除了

使用 PURGE MASTER LOGS 删除2013年3月30日前创建的所有日志文件,执行命令如下PURGE MASTER LOGS BEFORE '

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值