您的位置:首页 > 数据库 > MySQL

MySQL开启普通查询日志,慢查询日志

2018-03-20 00:33 288 查看

需求

MySQL开启普通查询日志,慢查询日志

操作

1.命令行中以数据库的ROOT身份,登入mysql

mysql -uroot -p{密码}

2.查看当前所有有关log的设置

mysql> show variables like '%log%';+-----------------------------------------+------------------------------+
| Variable_name | Value |
+-----------------------------------------+------------------------------+
| back_log | 50 |
| binlog_cache_size | 32768 |
4000
| binlog_direct_non_transactional_updates | OFF |
| binlog_format | STATEMENT |
| binlog_stmt_cache_size | 32768 |
| expire_logs_days | 10 |
| general_log | ON |
| general_log_file | /var/lib/mysql/web3.log |
| innodb_flush_log_at_trx_commit | 1 |
| innodb_locks_unsafe_for_binlog | OFF |
| innodb_log_buffer_size | 8388608 |
| innodb_log_file_size | 5242880 |
| innodb_log_files_in_group | 2 |
| innodb_log_group_home_dir | ./ |
| innodb_mirrored_log_groups | 1 |
| log | ON |
| log_bin | OFF |
| log_bin_trust_function_creators | OFF |
| log_error | /var/log/mysql/error.log |
| log_output | FILE |
| log_queries_not_using_indexes | OFF |
| log_slave_updates | OFF |
| log_slow_queries | ON |
| log_warnings | 1 |
| max_binlog_cache_size | 18446744073709547520 |
| max_binlog_size | 104857600 |
| max_binlog_stmt_cache_size | 18446744073709547520 |
| max_relay_log_size | 0 |
| relay_log | |
| relay_log_index | |
| relay_log_info_file | relay-log.info |
| relay_log_purge | ON |
| relay_log_recovery | OFF |
| relay_log_space_limit | 0 |
| slow_query_log | ON |
| slow_query_log_file | /var/lib/mysql/web3-slow.log |
| sql_log_bin | ON |
| sql_log_off | OFF |
| sync_binlog | 0 |
| sync_relay_log | 0 |
| sync_relay_log_info | 0 |
+-----------------------------------------+------------------------------+
41 rows in set (0.00 sec)


3.开启普通查询语句的记录日志:

set global general_log = 'ON';
然后即可看到日志文件/var/lib/mysql/web3.log已经生成,并记录下所有的sql语句。
(general_log_file决定了日志文件位置)
---
需要关闭,需要set global general_log = 'OFF';

4.开启MySQL慢查询记录:

mysql> set GLOBAL slow_query_log = 'ON'; 
Query OK, 0 rows affected (0.01 sec)

然后就可以看到慢查询日志自动生成并记录所有的慢查询SQL。
但是,系统默认慢查询=10秒以上,怎么自定义为 1秒以上呢?
mysql> set GLOBAL long_query_time=1; 
Query OK, 0 rows affected (0.02 sec)

退出当前ROOT的登陆再进来,即可看到时间被修改了。
另外,slow_query_log_file是定义日志位置。

注意

以上操作仅供一次性使用,重启MySQL会被还原。
永久性生效需要修改my.cnf:
locate my.cnf
vi /etc/mysql/my.cnf
service mysql restart
具体修改的内容需要百度,应该是一样的key。

后遗症

如果你一直没有关掉general_log, general_log_file定义的日志文件将会变得非常大!
root@web3:/var/lib/mysql# du -sh ./*
8G ./itmagazine
624K ./forecast
35G ./web3.log
732K ./web3-slow.log这个35G的log文件,是不是很给力?

更多

MYSQL SHOW VARIABLES简介

https://www.2cto.com/database/201108/100546.html

mysql中slow query log慢日志查询分析

https://www.cnblogs.com/musings/p/5913186.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息