MySQL数据库主要有五种类型的日志,分别是低速查询日志(log-slow-queries )、二进制日志(log-hxdm )、错误日志(log-error )和查询日志(log ) 新的MySQL版本将取消更新日志,并且可以在二进制日志中替换此功能。 本文侧重于低速查询日志和二进制日志。
低速查询日志(log-slow-queries )。
MySQL抛出查询是指占用大量查询时间或不使用索引的查询。 MySQL可以记录这两种情况。
慢速日志保存路径log-slow-queries=slow.log
超过2秒的查询long_query_time=2
无索引查询log-queries-not-using-indexes
二进制日志(log-hxdm ) )。
在MySQL中,启用二进制记录后,对MySQL所做的更改将记录在日志文件中。
mysqlshowvariableslike‘log _ hxdm’;
----------------
variable _ name
----------------
| log_hxdm | ON |
----------------
1行in set
如果要清除hxdm日志记录,可以修改配置文件my.ini,注释掉其中的行log-hxdm,然后重新启动mysql服务。
显示的数据库的hxdm日志:
mysql show hxdmary logs;
------------------------- -
log _ name (文件大小)
------------------------- -
| mysql-hxdm.000001 | 946525 |
------------------------- -
1行in set
如果没有主从复制,则可以通过以下方式重置数据库日志并清除以前的日志文件:
MySQL重置主程序;
Query OK,0 rows affected
但是,如果存在复制关系,则必须在PURGE中清理hxdm日志。
语法如下:
purgemasterlogsto‘log _ name’;
purgemasterlogsbefore‘date’;
用于删除在指定日志或日期之前的登录索引中列出的所有二进制日志。 这些日志也将从登录索引文件中记录的列表中删除。
例如:
purgemasterlogsto‘MySQL-hxdm.010’;
purgemasterlogsbefore‘2008-06-2315336000336000’;
清除3天前的hxdmlog
purgemasterlogsbeforedate _ sub (now )、INTERVAL 3 DAY );
BEFORE变量的date参数可以是’yyyy-mm-ddhh : mm : ss’格式。
如果存在主从复制,请注意以下事项:
1 .如果服务器处于活动状态,并且正在读取您要删除的日志之一,则运行此命令将不起作用,并出现错误。
2、服务器上已停止。 如果清理了您碰巧尝试读取的其中一个日志,则在从服务器启动后无法复制。
3、服务器中处于活动状态,未读取要删除的日志。 那个命令是安全的。 此外,运行此命令时不需要从服务器停止工作。
要清理日志,请执行以下步骤:
在每个从属服务中,使用SHOW SLAVE STATUS确定正在读取哪些日志。 使用SHOW MASTER LOGS获取主服务器上的一系列日志。 确定所有从属服务器上最旧的日志。 这是目标日志。 如果更新了所有辅助服务,这是清单中的最后一个日志。 备份要删除的所有日志。 这个步骤是自选的,但建议采用。 因为需要从服务器同步,所以清理所有日志,但不包括目标日志