mysql/mariadb查看慢日志,MariaDB 记录执行过的 SELECT 语句

慢查询日志

临时开启慢日志(立即生效)

-- 开启慢查询日志
SET GLOBAL slow_query_log = 1;

-- 定义:超过多少秒算慢 SQL(0=记录所有SELECT,1=1秒
-- long_query_time = 0 记录所有执行过的 SELECT(临时排查用)
-- long_query_time = 1 只记录 >1 秒 的慢查询)
SET GLOBAL long_query_time = 0;

-- 记录没有使用索引的查询(强烈建议开)
SET GLOBAL log_queries_not_using_indexes = 1;

-- 查看日志文件存在哪里
SHOW VARIABLES LIKE 'slow_query_log_file';

查看慢日志内容

tail -f /var/lib/mysql/localhost-slow.log

 用完记得关闭(避免占磁盘)

SET GLOBAL slow_query_log = 0;
SET GLOBAL long_query_time = 1;
SET GLOBAL log_queries_not_using_indexes = 0;

 

通用查询日志

临时开启(重启失效)

-- 输出到文件
SET GLOBAL general_log = 1;
SET GLOBAL log_output = 'FILE'; 

-- 查看日志文件位置
SHOW VARIABLES LIKE 'general_log_file';

永久开启(my.cnf 配置)

[mysqld]
general_log = 1
general_log_file = /var/lib/mysql/mysql.log
log_output = FILE

其中,log_output项一般有3个可选值,分别是:FILE、TABLE、NONE

各个可选值的意思

FILE:这个值是默认值,也是最常用的值,将日志输出到文件,性能最好,在生产环境中一般都使用这种配置

TABLE:日志输出到数据表,如:mysql.general_log及mysql.slow_log,可使用普通select查询

NONE:不输出任何日志

也可以两个组合使用,如:set global log_output='FILE,TABLE' 

 

 

临时抓 SQL:PROCESSLIST + 监控

-- 适合临时排查,不写日志文件

-- 查看当前正在执行的 SQL
SHOW FULL PROCESSLIST;

-- 查看历史活跃 SQL(信息架构表)
SELECT * FROM information_schema.PROCESSLIST WHERE COMMAND = 'Query';

 

审计插件(Server Audit)

企业级、可精确只记录 SELECT、可过滤用户 / 库表
一般在生产环境使用比较方便,MariaDB自带
[mysqld]
plugin_load_add = server_audit
server_audit_logging = ON
server_audit_events = QUERY
server_audit_query_logging = SELECT

 

posted on 2026-04-01 18:03  骑着母猪去打猎  阅读(1)  评论(0)    收藏  举报