实时查看MySQL执行的语句

我们在追查MySQL问题和性能调优时,有时希望看到当前都有哪些命令正在被执行,让我们迅速找到热点命令。下面我们就来介绍下如何查看当前正在执行的MySQL语句。

日志LOG

我们之前在 用service命令管理mysql启停 文章中已经使用过MySQL的错误日志,它在my.cnf配置文件中指定位置:

[mysqld]
log-error = /user/local/mysql/log/mysql.err

该参数指定了错误文件位置,能够记录所有的错误日志,在问题追查时非常关键。类似的,我们还可以指定常规日志:

[mysqld]
# 控制是否开启常规日志
general_log=true
# 指定常规日志的文件路径
general_log_file=/usr/local/mysql/log/mysql.log

这个配置默认是关闭的,因为这个日志文件会膨胀的很快,在大型业务中可能很快耗尽磁盘空间,因此一般只在追查问题时临时打开,使用完成后关闭。

如果我们更改了这个配置,需要重启MySQL服务。

查看常规日志是否打开

mysql> show variables like 'general%';
+------------------+--------------------------------+
| Variable_name    | Value                          |
+------------------+--------------------------------+
| general_log      | ON                            |
| general_log_file | /usr/local/mysql/log/mysql.log |
+------------------+--------------------------------+
2 rows in set (0.00 sec)

如果我们想要更改该参数,可以使用:

mysql> set global general_log=off;
Query OK, 0 rows affected (0.01 sec)

由于general_log是全局的变量,因此必须带上global参数。如果不是通过配置文件的方式变更状态,会在MySQL重启后失效。

查看实时日志

如果我们已经打开了常规日志的记录,我们可以通过常规日志文件的查看来得到实时日志:

# -f 代表会实时读取该文件的更新内容
tail -f /usr/local/mysql/log/mysql.log

然后你就能在终端里看到MySQL的实时执行记录,如果觉得刷新过快,也可以使用vim/tail等方法来查看该日志文件进行分析。

MySQL默认不能实时查看执行的SQL语句,因为这会消耗一定的资源。

要开启这个功能,稍微配置一下,打开这个LOG记录就可以了。

1 查看LOG功能

首先,查看是否已经开启实时SQL语句记录。

mysql> SHOW VARIABLES LIKE "general_log%";

如下general_log值为OFF说明没有开启:

+------------------+----------------------------------+
| Variable_name    | Value                            |
+------------------+----------------------------------+
| general_log      | OFF                              |
| general_log_file | /var/lib/mysql/galley-pc.log |
+------------------+----------------------------------+
2 rows in set (0.00 sec)

2 打开LOG功能

2.1 临时开启

如下,打开实时记录SQL语句功能,并指定自定义的log路径:

mysql> SET GLOBAL general_log = 'ON';
mysql> SET GLOBAL general_log_file = '/var/log/mysql/general_log.log';

这两个命令在MySQL重启后失效,为临时方法。

说明:这个文件会随着访问的增加而不断变大,所以生产环境建议临时开启,用完及时关闭。

2.2 永久开启

永久有效需要配置my.cnf文件,加入下面两行:

general_log = 1
general_log_file = /var/log/mysql/general_sql.log

重启MySQL生效。

3 实时查看

过一小段时间后,就可以导出查看/var/lib/mysql/sql_statement.log文件了,里面记录了所有执行的SQL语句。

如果要实时查看该文件的改动,在Linux系统用tail命令:

$ tail -f /var/lib/mysql/general_sql.log

另外,也可以用BareTail软件实时查看。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值