mysql日志
1、错误日志
错误日志文件包含 了mysql启动或停止时,以及服务器在运行过程中发生任何严重错误时的相关信息。可以用--log-error[=file_name]选项来指定mysqld保存错误日志文件的位置。当我们使用flush logs命令刷新日志时,错误文件会被清空,并生成一个备份的错误日志。
我们可以使用工具实时监控错误日志,比如swatch,或者自已编写脚本检查错误日志。也可以发送mysql错误日志到系统日志服务Syslog,这样,我们就可以利用一些日志分析工具集中分析和处理错误信息。
2、通用日志
默认值 为host_name.log,所有连接和语句都将被记录到日志文件中,如果怀疑在客户端发生了错误并且想要确切地知道该客户端发送给mysqld的语句,那么该日志可能会非常有用。生产环境中,下线一个业务的时侯,也可以打开这个日志,检查是否仍然有流量过来访问。mysql按照它接收的顺序将语句记录到查询日志。这个顺序可参与执行的顺序不同。如下命令可以查询到通用日志的路径。
mysql> show variables like '%gene%';
+------------------+------------------------------------+
| Variable_name | Value |
+------------------+------------------------------------+
| general_log | OFF |
| general_log_file | /usr/local/mysql/var/localhost.log |
+------------------+------------------------------------+
可以用命令 SET GLOB ALgeneral_log ON 打开通用日志记录。由于通用日志记录了所有的查询,所以一定要记录关闭它,否则,在一个生产繁忙的系统中,通用日志在几小时之内可能就会塞满磁盘。
3、二进制日志
二进制日志包含了所有更新了数据或已经潜在更新了数据的语句。事件与event的形式保存,它描述了数据的更改信息。二进制日志的主要目录是恢复数据,因为二进制日志包含备份后进行的所有更新。
建议为log-bin指定一个文件名,语句如下。
log-bin=/path/to/logmysql-bin
运行SHOW BINARY LOGS命令查看当前有哪些二进制文件。还可以用RESETmysql> SHOW BINARY LOGS;
+------------------+------------+
| Log_name | File_size |
+------------------+------------+
| mysql-bin.000082 | 1073742660 |
...
| mysql-bin.000083 | 296012982 |
+------------------+------------+
83 rows in set (0.00 sec)
还可以用RESET MASTER语句删除所有的二进制日志文件,或者用PURGE BINARY LOGS命令只删除部分二进制文件。如下的例子将删除部份二进制日志,一直到mysql-bin.000005这个文件为止。
mysql>purge binary logs to 'mysql-bin.000005';
具有SUPER权限的客户端可以通过SET sql_log_bin=0语句禁止将自已的语句记入二进制记录中。这在某些情况下很有用,比如进行数据库的主主切换时,再或者进行数据库的版本升级时。
我们可以用mysqlbinlog工具检查二进制日志文件。如果想要重新处理日志上的语名,那么这个工具将会很有用。倒好,可以用二建制日志更新MySql数据库,方法如下。
shell>mysqlbinlog log-file |mysql -h host -P port
默认情况下,并不是每次写入时都会将二进制日志与硬盘同步,可以设置sync_binlog全局变量为N(1是最安全的值,但也是最慢的),使二进制日志在每N进二进制日志写入后就与硬盘同步一次。
二进制日志的格式:
一种是语句级(binlog_format=statement),一种是行级(binlog_format=row)。建议将记录命令的形式设置为混合模式(binlog_format=mixed)。
4、慢查询日志
当参数slow-query_log=1时,mysqld将记录一下执行时间超过long_query_time秒的所有SQL语句的日志文件。
慢查询日志可以用来找到执行时间很长的查夜晚,可以用于优化。但是,检查又长又慢的查询志志会很困难。可以使用mysqlddumpslow命令或pt-query-digest获得日志中显示的查询摘要来处理慢查询日志。
5、日志文件维护
MySQL服务器可以创建各种不同的日志文件,从面可以很容易地查看所进行的操作。但是,必须要定期清理这些文件,以确保日志文件不会占用太多的硬盘空间。到于错误日志文件,一般情况下不会变得很大;慢查询日志在慢查询很多的情况下可能会变得很大;对于二进制日志文件,可以设置合适的过期策略,如expire-log-day = 10,该语句的意思是设置过期日期为10天。注意不要用操作系统下的rm命令删除日志,这可能会导致你执行日志清理的命令失败,你可能需要手动编辑文件hostname-bin.index来反映实际的文件列表。
转载于:https://blog.51cto.com/fzhddn/2052480