好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

MySQL数据库日志的管理与维护

MySQL数据库主要有5种类型的日志,分别为慢查询日志(log-slow-queries),二进制日志(log-bin),错误日志(log-error),查询日志(log),更新日志(log-update)。在新的MySQL版本中,已取消了更新日志,可以用二进制日志来替代这个功能。文章侧重讲解

MySQL数据库主要有5种类型的日志,分别为慢查询日志(log-slow-queries),二进制日志(log-bin),错误日志(log-error),查询日志(log),更新日志(log-update)。在新的MySQL版本中,已取消了更新日志,可以用二进制日志来替代这个功能。文章侧重讲解慢查询日志和二进制日志。

慢查询日志(log-slow-queries)

MySQL慢查询,指的是查询消耗时间较多,或者没有使用索引的查询,MySQL可以同时记录这两种情况:

# 慢日志保存路径
log-slow-queries = slow.log

# 超过2秒的查询
long_query_time = 2

# 没有使用索引的查询
log-queries-not-using-indexes 


二进制日志(log-bin)

在 MySQL 中,如果启用二进制 日志记录,则 MySQL 的变更修改都会被记录到日志文件中:

mysql> show variables like 'log_bin';  
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin       | ON    |
+---------------+-------+
1 row in set 

如果想关闭bin日志的记录,可以修改配置文件 my.ini, 把里面的 log-bin 这一行注释掉,重启 mysql 服务 。

查看的数据库的 bin 日志:

mysql> show binary logs;
+------------------+-----------+
| Log_name         | File_size |
+------------------+-----------+
| mysql-bin.000001 |    946525 |
+------------------+-----------+
1 row in set 

如果没有主从复制,可以通过以下 方式,重置数据库日志,清除之前的日志文件:

mysql> reset master;
Query OK, 0 rows affected  

但是如果存在复制关系,应当通过 PURGE 的方式来清理 bin 日志:
语法如下:

PURGE MASTER LOGS TO 'log_name';
PURGE MASTER LOGS BEFORE 'date'; 

用于删除列于在指定的日志或日期之前的日志索引中的所有二进制日志。这些日志也会从记录在日志索引文件中的清单中被删除。

例如:

PURGE MASTER LOGS TO 'mysql-bin.010';
PURGE MASTER LOGS BEFORE '2008-06-23 15:00:00'; 

清除3天前的 binlog

PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY); 
BEFORE变量的date自变量可以为’YYYY-MM-DD hh:mm:ss’格式。

如果有主从复制,则注意以下几个问题:

1、从服务器是活动的,并且刚好在读取你正在试图删除的日志之一,那么执行这个命令不会起作用,而是触发一个错误。

2、从服务器是停止的,你碰巧清理了其想要读取的日志之一,则从服务器启动后不能复制。

3、从服务器是活动的,没有读取你试图删除的日志,那个这个命令是安全的,而且执行这个命令时从服务器不需要停止工作。

要清理日志,需按照以下步骤:

1. 在每个从属服务器上,使用SHOW SLAVE STATUS来检查它正在读取哪个日志。
2. 使用SHOW MASTER LOGS获得主服务器上的一系列日志。
3. 在所有的从属服务器中判定最早的日志。这个是目标日志。如果所有的从属服务器是更新的,这是清单上的最后一个日志。
4. 备份你将要删除的所有日志。(这个步骤是自选的,但是建议采用。)
5. 清理所有的日志,但是不包括目标日志,因为从服务器还要跟它同步


参考:

http://blog.csdn.net/mycwq/article/details/17209169
http://ourmysql测试数据/archives/959
http://dev.mysql测试数据/doc/refman/5.0/en/binary-log.html

查看更多关于MySQL数据库日志的管理与维护的详细内容...

  阅读:38次

上一篇: mysqlKey

下一篇:mysql创建和删除表