Heim > Datenbank > MySQL-Tutorial > MySQL数据库日志的管理与维护

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

WBOY
Freigeben: 2016-06-07 15:02:40
Original
1131 Leute haben es durchsucht

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
Nach dem Login kopieren


二进制日志(log-bin)

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

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

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

查看的数据库的bin日志:

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

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

mysql> reset master;
Query OK, 0 rows affected 
Nach dem Login kopieren

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

PURGE MASTER LOGS TO 'log_name';
PURGE MASTER LOGS BEFORE 'date';
Nach dem Login kopieren

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

例如:

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

清除3天前的 binlog

PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY);
Nach dem Login kopieren
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.com/archives/959
http://dev.mysql.com/doc/refman/5.0/en/binary-log.html

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage