前言
数据库的日志是帮助数据库管理员,追踪分析数据库曾经发生的各种事件的有力依据,mysql中提供了错误日志、binlog日志(二进制日志)、查处日志、慢查询日志。在此,我力求解决以下问题:各个日志的作用是什么?怎样去控制这些日志呢?怎样去使用这些日志提供的信息呢?
错误日志
1.错误日志作用
错误日志记录了mysql启动和停止时,以及服务器运行过程中发生任何严重性错误的相关信息。当数据库出现任何故障导致无法启动时候,比如mysql启动异常,我们可首先检查此日志。在mysql中,错误日志日志(还有其他日志),不仅仅可以存储在文件中,当然还可以存储到数据的表中,至于实现方式,笔者也正在研究中···
2.错误日志控制与使用
1.配置
通过log-error=[file-name]来配置(在mysql的配置文件中),如果没有指定file_name,mysqld使用错误日志名为host_name.err(host_name为主机名),并默认在参数datadir(保存数据的目录)指定的目录中写入日志文件。
比如我本地使用的是WampServer集成环境
其中log-error=D:/wamp/logs/mysql.log
如下图
如果我将log-error注释掉(#log-error=D:/wamp/logs/mysql.log),重启服务器,则可以查看到错误日志文件在datadir指定的目录下
2.查看错误日志
错误日志的格式:时间 [错误级别] 错误信息
如果你感觉通过mysql配置文件来定位错误日志所在位置比较麻烦,你完全可以通过再客户端通过命令来查看错误日志所在位置
使用命令式:show variables like 'log_error';
以下是mysql启动日志
二进制日志
1.作用
二进制日志(又叫binlog日志)记录了所有的DDL(数据定义语言)语句和DML(数据操作语言)语句,但是不包括数据查询语句,语句是以“事件”的形式保存的,它描述数据更改的过程。该日志的两个主要功能是:数据的恢复与数据的复制。
数据的恢复:MySQL本身具备数据备份和恢复功能。比如,我们每天午夜12:00进行数据的备份。如果某天,下午13:00,数据库出现故障,导致数据库内容丢失。我们可以通过二进制日志解决这个问题。解决思路是,可以先将前一天午夜12:00的数据备份文件恢复到数据库,然后再使用二进制日志回复从前一天午夜12:00到当天13:00对数据库的操作。
数据复制:MySQL支持主从服务器间的数据复制功能,并通过该功能实现数据库的冗余机制以保证数据库的可用性和提高数据库德性能。MySQL正是通过二进制日志实现数据的传递。主服务器上的二进制日志内容会被发送到各个从服务器上,并在每个从服务器上执行,从而保证了主从服务器之间数据的一致性。
2.二进制日志控制与使用
1.开启
在默认情况下,mySQL不会记录二进制日志。怎样才能开启MySQL的二进制日志记录功能呢?
我们可以通过MySQL的配置文件来控制MySQL启动二进制日志记录功能。通过修改参数log-bin=[base_name]来启动MySQL二进制日志。mySQL会将修改的数据库内容的语句记录到以 base_name-bin.0000x为名的日志文件中,其中bin代表binary,后缀00000x代表二进制日志文件的顺序,每次启动Mysql,日志文件顺序会自动加1.如果base_name没有定义,MySQL将使用pid-file参数设置的值作为二进制日志文件的基础名字。
比如我将log-bin文件名定为mybinlog,那么将会在D:/wamp/bin/mysql/mysql5.6.17/data目录下,生成mybinlog.00000x的二进制日志文件。
二进制日志文件如下图
通过使用show variables like'log_bin'检查bin-log日志是否开启。
2.查看
MySQL二进制日志主要是供MySQL内部使用的,并不是为了数据库管理员阅读使用,因此,二进制日志与其他日志一个重要的不同就是,二进制文件的格式不是文本格式,其内容不能通过记事本直接查看,为了便于管理员管理,MySQL提供了mysqlbinlog工具查看二进制日志内容。
比如:mysqlbinlog D:\wamp\bin\mysql\mysql5.6.17\data\mybinlog.000003
执行结果如下:
现在我们来做一个测试,看看bin日志是否记录了我更新数据库的操作
比如我将数据表t2中id2=2的那行记录的id1改为5。然后在查询二进制日志文件,看是否记录了我的操作。
结果和明显,二进制文件记录了我修改数据库的操作,并且还记录了我是修改那个数据库里面的数据,至于我查询语句,它并没有记录。