MySQL日志

上一篇 / 下一篇  2012-04-01 17:02:41

第1章 MySQL日志简介

1.1 MySQL日志类型

1.1.1 错误日志 -log-err   

 记录着mysqld启动和停止,以及服务器在运行过程中发生的任何错误的相关信息。

配置信息:

 --log-error=[file-name]用来指定错误日志存放的位置。

 备注:如果没有指定[file-name],默认文件名为hostname.err,默认存放在DATADIR目录中。


1.1.2 查询日志 -log  

 查询日志记录了客户端的所有查询语句。

 备注:由于log日志记录了数据库所有操作,对于访问频繁的系统,此种日志会造成性能影响,建议关闭。

 配置信息:

 --log=[file-name]用来指定错误日志存放的位置。

 如果没有指定[file-name],默认以主机名(hostname)做为文件名,默认存放在DATADIR目录中。


1.1.3 慢查询日志 -log-slow-queries 

 慢查询日志是记录执行时间超过参数long_query_time(单位秒)所设定值的SQL日志。

 备注:慢查询日志对于我们发现性能有问题的SQL有很帮助,建议使用并经常分析。

 .配置信息:

 --log-slow-queries=[file-name]用来指定错误日志存放的位置。

 如果没有指定[file-name],默认文件名为hostname-slow.log,默认存放在DATADIR目录中。


1.1.4 二进制日志 -log-bin

 二进制日志通常被称为binlog,它记录所有的DDLDML,但不包括数据查询语句。(DDL是数据定义语言,包括创建、修改和删除数据库对象。DML是对数据库中的数据进行操作,包括InsertDeleteUpdateSelect)。

 配置信息:

 --log-bin=[file-name]用来指定错误日志存放的位置。

 如果没有指定[file-name],默认为主机名后面跟-bin作为文件名,默认存放在DATADIR目录中。


1.2 优缺点

 优点:记录所有数据库的操作,可查看一个数据库从开始创建以来所有的变化。通过二进制日志可恢复数据库。

 缺点:当数据库操作比较频繁时,日志文件会越来越大,占用磁盘空间。


第2章 开启MySQL日志

2.1 开启

2.1.1 配置my.ini文件

 在mysql的安装目录下,打开my.ini文件,在[mysqld]后面增加以下参数并保存。Linux环境下也可以将log-error配置到my.cnf文件中,这样就省去了每次在启动mysqld时都手工指定--log-error

 1错误日志

          #Enter a name for the error log file.   Otherwise a default name will be used.

         log-error=err-log

 2查询日志

          #Enter a name for the query log file. Otherwise a default name will be used.

         log=query-log

 3慢查询日志

          #Enter a name for the slow query log file. Otherwise a default name will be used.

         long_query_time=10

         log-slow-queries=d://slow-query-log

 4二进制日志

         #Enter a name for the binary log. Otherwise a default name will be used.

         log-bin=binary-log

 备注:日志名称可使用绝对路径和相对路径,相对路径默认是相对Mysql安装目录下的“data”文件夹。


2.1.2 重启mysql服务

 通过命令行:net start mysql / net stop mysql 开启和停止mysql服务

 或者:直接打开“服务”窗口,重启mysql服务。


2.2 基本命令

 1是否启用了日志

         mysql>show variables like 'log_bin';

 2查看当前开启的日志

         mysql> show master status;

 3查看二进制日志文件

     使用命令:mysqlbinlog

 比如要查看的二进制日志文件名为:mail-bin.000001,可使用以下命令:

shell>mysqlbinlog mail-bin.000001(要写绝对问题路径d://) 

或者shell>mysqlbinlog mail-bin.000001 | tail


第3章 使用MySQL日志恢复数据库

3.1 指定时间恢复

 1恢复截止到2012330号上午9点以前的数据

    mysqlbinlog --stop-date="2012-03-30 8:59:59" d://mysql/data/bin.000001 | mysql -u root –p

 2恢复2012330号上午9点以后的数据

    mysqlbinlog --start-date="2012-03-30 9:00:00"  /var/lib/mysql/bin.000001 | mysql -u root –p

 3恢复 20123309点到10点之间的数据

    mysqlbinlog --start-date="2012-03-30 9:00:00"  --stop-date="2012-03-30 10:00:00" /var/lib/mysql/bin.000001 | mysql -u root –p


3.2 操作点恢复

 使用mysqlbinlog的选项--start-position--stop-position来指定日志位置。


3.2.1 确定位置号

 可以运行 mysqlbinlog寻找执行了不期望的事务的时间范围,并将结果重新指向文本文件以便进行检查。操作方法为: 

 mysqlbinlog --start-date="2005-04-20 9:55:00" --stop-date="2005-04-20 10:05:00"  d://mysql/data/log//binary-log.123456 > d://mysql/mysql_restore.sql


3.2.2 使用位置号恢复数据

 1恢复到截止到停止位置的所有事务

    mysqlbinlog --stop-position="368312" d://mysql/data /log/mysql/bin.123456 mysql -u root -pmypwd 

 2恢复从给定的起始位置直到二进制日志结束的所有事务

    mysqlbinlog --start-position="368315" d://mysql/data /log/mysql/bin.123456 mysql -u root -pmypwd \ 

 备注:因为mysqlbinlog的输出包括每个SQL语句记录之前的SET TIMESTAMP语句,恢复的数据和相关MySQL日志将反应事务执行的原时间。


第4章 参考资料

 参考网址:http://tech.it168.com/a2009/0505/275/000000275002.shtml


TAG:

 

评分:0

我来说两句

Open Toolbar