mysql中general

47次阅读
没有评论

共计 2746 个字符,预计需要花费 7 分钟才能阅读完成。

这篇文章主要为大家展示了“mysql 中 general_log 日志知识点有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让丸趣 TV 小编带领大家一起研究并学习一下“mysql 中 general_log 日志知识点有哪些”这篇文章吧。

以下操作演示都是基于 mysql5.6.36 版本:

工作中经常遇到这样的问题:mysql 数据访问能量很大,想要从 sql 方面优化。研发经常会问到能看到哪些 SQL 执行比较频繁吗?回道:不能哦,只能看到当前正在运行的 SQL 和慢日志里记录的 SQL。因为为了性能考虑,一般 general log 不会开启。slow log 可以定位一些有性能问题的 sql,而 general log 会记录所有的 SQL。然而有时候生产上的 mysql 出现性能问题,短时间开启 general log,来获取 sql 执行的情况,对排查和分析 mysql 的性能问题,还是有很大的帮助的。或者是有时候,不清楚程序执行了什么 sql 语句,但是又要排除错误,找不到原因的情况下,也是可以短暂的开启这个 general log 日志的。

mysql5.0 版本,如果要开启 slow log、general log,需要重启,从 MySQL5.1.6 版开始,general query log 和 slow query log 开始支持写到文件或者数据库表两种方式,并且日志的开启,输出方式的修改,都可以在 Global 级别动态修改。

开启 general log 有很多的方式。

下面简单介绍和演示下:

方法一:更改 my.cnf 配置文件

[root@git-server ~]# grep general_log /etc/my.cnf
general_log = 1
general_log_file = /tmp/general.log

重新启动 mysql,这个操作相当于是永久生效。当然这种方式是不允许在生产上采用的。因为要重启 mysql,会中断 mysql 的业务。同时 general.log 会记录所有的关于 mysql 的 DDL 和 DML 语句,非常消耗资源,一般都是在协助排除 mysql 故障时,临时短暂的开启几分钟。事后都要关闭的。

方法二:在 mysql 命令控制台操作

需要 root 用户才有访问此文件的权限

默认这个日志是被关闭掉的。

mysql  show global variables like  %general% 
+------------------+---------------------------------+
| Variable_name | Value |
+------------------+---------------------------------+
| general_log | OFF |
| general_log_file | /data/mysql/data/git-server.log |
+------------------+---------------------------------+
2 rows in set (0.00 sec)
mysql

有时需要临时开启 MySQL 的全局 general_log,可以登录 mysql 直接设置日志的路径并开启 general_log

mysql  set global general_log_file= /tmp/general_log 
Query OK, 0 rows affected (0.00 sec)
mysql  set global general_log=on;
Query OK, 0 rows affected (0.02 sec)
mysql  show global variables like  %general% 
+------------------+------------------+
| Variable_name | Value |
+------------------+------------------+
| general_log | ON |
| general_log_file | /tmp/general_log |
+------------------+------------------+
2 rows in set (0.00 sec)
mysql  
[root@git-server ~]# tailf /tmp/general_log
180717 22:55:51 2 Query show databases
180717 22:56:04 2 Query SELECT DATABASE()
 2 Init DB test
180717 22:56:14 2 Query select * from student3

在使用完后可以直接 set global general_log=off; 关闭这个日志

方法三:将日志保存在 mysql 数据库 general_log 表中

mysql  set global log_output= table 
mysql  set global general_log=on;
mysql  use mysql;
mysql  select * from test.student3;
+----+--------------+------------+--------+------+
| id | teacher_name | teacher_id | name | sex |
+----+--------------+------------+--------+------+
| 1 |  花花  | 1 |  三安  |  女  |
| 4 |  散散  | 2 |  三安  |  女  |
| 6 | bibi | 3 |  三安  |  女  |
+----+--------------+------------+--------+------+
3 rows in set (0.00 sec)
mysql  select * from general_log;
| 2018-07-17 23:00:12 | root[root] @ localhost [] | 2 | 1132333306 | Query | select * from test.student3

查看 /tmp/general.log 的信息,可以大致看到哪些 sql 查询 / 更新 / 删除 / 插入比较频繁了。比如有些表不是经常变化的,查询量又很大,就完全可以 cache;对主备延迟要求不高的表,读可以放到备库;等等

以上是“mysql 中 general_log 日志知识点有哪些”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-04发表,共计2746字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)