龙空技术网

mysql:general_log查看所有运行的SQL语句

硕果累累1316 94

前言:

今天我们对“检查mysql实例是否在运行状态”大约比较注意,朋友们都需要学习一些“检查mysql实例是否在运行状态”的相关知识。那么小编在网络上网罗了一些对于“检查mysql实例是否在运行状态””的相关文章,希望兄弟们能喜欢,你们快快来了解一下吧!

在日常工作中有时需要跟进MYSQL当前实例运行的所有SQL,以排查故障。

那就需要开启general_log。一般不会开启开功能,因为log的量会非常庞大,对数据库的性能也产生影响。但个别情况下可能会临时的开一会儿general log以供排障使用。

1.查看general_log是否开启和以何种方式(表或者文件)存放

[root@localhost][(none)]> show variables like '%general_log%';

+------------------+-------------------------------------+

| Variable_name | Value |

+------------------+-------------------------------------+

| general_log | OFF |

| general_log_file | /usr/local/mysql/data/localhost.log |

+------------------+-------------------------------------+

2 rows in set (0.00 sec)

2.为了方便查看,建议以表的形式存在。

[root@localhost][(none)]> set global log_output='table';

Query OK, 0 rows affected (0.00 sec)

[root@localhost][(none)]> show variables like 'log_output';

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| log_output | TABLE |

+---------------+-------+

1 row in set (0.00 sec)

3.开启general_log

[root@localhost][(none)]> set global general_log=on;

Query OK, 0 rows affected (0.00 sec)

[root@localhost][(none)]> select count(1) from mysql.general_log;

+----------+

| count(1) |

+----------+

| 2172 |

+----------+

1 row in set (0.01 sec)

4.如果有需要可以查看mysql.general_log表,进行异常分析

5.关闭general_log

[root@localhost][(none)]> set global general_log=off;

Query OK, 0 rows affected (0.00 sec)

6.清空general_log表

不能用delete语句来删除表的数据,只能用truncate

[root@localhost][(none)]> delete from mysql.general_log;

ERROR 1556 (HY000): You can't use locks with log tables.

[root@localhost][(none)]> truncate table mysql.general_log;

Query OK, 0 rows affected (0.01 sec)

标签: #检查mysql实例是否在运行状态