内容纲要
概要描述
general log,一般日志,也叫作通用、普通日志,
在默认情况下,MySQL是不会打开general log的,这个log里面会记录MySQL所有的SQL语句,不管是查询语句,还是DML语句,还是DDL语句,还是DCL语句,这些语句统统都会被记录在general log文件中。就连我们连接和断开MySQL数据库的这些语句。
MySQL会把它收到的所有SQL语句按照接收的顺序依次记录在general log中。我们需要注意的是,这里接受的SQL语句的顺序,并不等于SQL语句就是按照这个接受的顺序来执行,因为有的时候,一些SQL可能需要等待其他锁被释放后才会被真正的执行,SQL语句的执行顺序是和binlog中的顺序是相匹配的。
General log默认不开启的原因有两个:
- 日志将会非常大,对磁盘是一个很大的压力。因为所有的操作都会被记录下来。
- 对MySQL数据的性能有一定的影响。
所以,我们一般不会开启这个general log记录的功能,只有在排查某些错误的时候,才会临时打开一下,等到debug完成之后,再把它关闭。
详细介绍
临时开启的方式比较简单 SET GLOBAL general_log = 'ON';
开启之后,通过 show variables like '%general_log%'; 检查开启是否成功,以及日志的输出文件。
高可用kundb,要到master节点后台查看日志(kv4.log,即代表当前的master节点是kv4);
另外上面的日志路径是容器内的路径,对应宿主机上的/mnt/disk1/kundb1/kundbdata/data/kv4.log
实际生成的日志信息较多,建议通过管道命令过滤结果。
debug排查问题结束之后,记得一定要 SET GLOBAL general_log = 'OFF'; 关闭掉。