<br/>
이전 공유에서 MySQL 로그 유형은 오류 로그(error_log), 쿼리 로그(query_log), 바이너리 로그(binary_log)의 세 가지 유형으로 나눌 수 있다고 언급했는데, 소개를 위해 error_log의 사용법은 MySQL 로그 error_log를 참조하세요. 이 글에서는 주로 General_log와 Slow_query_log의 원리와 사용법을 소개합니다.
일반 쿼리 로그(general_log)는 주로 각 클라이언트가 데이터베이스에 접속하고 데이터베이스에서 SQL 문이 실행될 때 관련 정보를 쿼리하는 데 사용됩니다. 일반 쿼리 로그는 활성화하고 경로를 저장합니다:
mysql> show variables like "general_log%"; +------------------+------------------------------+| Variable_name | Value | +------------------+------------------------------+| general_log | OFF | | general_log_file | /var/lib/mysql/localhost.log | +------------------+------------------------------+ 2 rows in set (0.00 sec)
general_log
및 general_log_file
에는 현재 스위치 상태와 일반 쿼리 로그의 경로가 기록됩니다. 2. 일반 쿼리 로그를 켭니다. general_log
和general_log_file
记录了当前通用查询日志的开关状态与路径。
2、开启通用查询日志
set global general_log = ON
查询是否成功:
mysql> show variables like "general_log%"; +------------------+------------------------------+| Variable_name | Value | +------------------+------------------------------+| general_log | ON | | general_log_file | /var/lib/mysql/localhost.log | +------------------+------------------------------+ 2 rows in set (0.00 sec)
成功。
退出一下看有没有生成并且正确记录:
[root@localhost ~]# cat /var/lib/mysql/localhost.log /usr/sbin/mysqld, Version: 5.7.19 (MySQL Community Server (GPL)). started with: Tcp port: 3306 Unix socket: /var/lib/mysql/mysql.sock Time Id Command Argument 2017-08-14T09:33:11.364650Z 5 Quit 2017-08-14T09:33:20.671113Z 6 Connect root@localhost on using Socket 2017-08-14T09:33:20.671323Z 6 Query select @@version_comment limit 1 2017-08-14T09:33:22.964610Z 6 Query show variables like '%log%' 2017-08-14T09:33:24.574224Z 6 Quit
成功,并且我们可以看到,log不仅记录了SQL命令,同时也包括了执行时间、Id、命令类型等相关数据
慢查询日志记录了SQL语句时间超过了预设的long_query_time的语句,在数据量较大的情况下,可以看看慢查询日志中有哪些语句需要进行优化。
1、慢查询日志的配置
慢查询日志的配置可以在数据库配置文件my.cnf
中查到:
[root@localhost ~]# cat /etc/my.cnf | grep -E 'long|slow|not_using_indexes'long_query_time = 1#log-slow-queries = /var/log/mysql/slow.loglog_queries_not_using_indexes
可以看到:
long_query_time = 1
的意思是SQL语句执行时间超过1s的,对其进行记录; <br/>log-slow-queries = /var/log/mysql/slow.log
是对慢查询日志路径的设置; <br/>log_queries_not_using_indexes
set slow_query_log = ON
쿼리 성공 여부:
[root@localhost ~]# cat /var/lib/mysql/localhost-slow.log /usr/sbin/mysqld, Version: 5.7.19 (MySQL Community Server (GPL)). started with: Tcp port: 3306 Unix socket: /var/lib/mysql/mysql.sock Time Id Command Argument
성공. 종료하고 올바르게 생성되고 기록되었는지 확인하세요.
rrreee성공하면 로그에 SQL 명령뿐만 아니라 실행 시간, ID, 명령 유형 및 기타 관련 데이터도 포함되는 것을 볼 수 있습니다.
느린 쿼리 log 🎜🎜🎜느린 쿼리 로그에는 SQL 문 시간이 미리 설정된 long_query_time을 초과하는 문이 기록됩니다. 데이터 양이 많을 경우 느린 쿼리 로그에서 어떤 문을 최적화해야 하는지 확인할 수 있습니다. 🎜🎜🎜1. 느린 쿼리 로그 구성 🎜🎜🎜느린 쿼리 로그 구성은 데이터베이스 구성 파일my.cnf
에서 확인할 수 있습니다. 🎜rrreee🎜다음을 볼 수 있습니다. 🎜🎜 long_query_time = 1
은 SQL 문의 실행 시간이 1초를 초과하면 기록된다는 의미입니다. 🎜log-slow-queries = /var/log/mysql/slow.log
느린 쿼리를 위한 로그 경로 설정입니다. 🎜log_queries_not_using_indexes
는 인덱스를 사용하지 않는 명령문이므로 기록 대상이 줄어들 수 있습니다🎜🎜실제 구성은 일반 쿼리 로그와 동일합니다. 느린 쿼리 로그를 활성화하는 mysql 대화형 인터페이스:🎜 rrreee🎜🎜2 쿼리가 성공했는지 확인하세요🎜🎜rrreee🎜성공. 🎜🎜단, Slow_query_log에는 사용자 권한 및 비밀번호와 관련된 내용이 기록될 수 있으니, Slow Query 로그 파일 사용 시 로그의 안전한 저장에 주의하시기 바랍니다. 🎜위 내용은 MySQL의 일반 쿼리 로그와 느린 쿼리 로그의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!