共计 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 行业资讯频道!