mysql-开启genernal_log日志、时间格式调整

一、需求说明

        由于服务器的数据库莫名奇妙自动删除,为此急需开启mysql日志,进行记录,从而找到为啥会自动删除的原因。在开启之后,又因为日志里记录的时间格式是UTC,对于定位原因不便,为此将日志的格式调整为SYSTEM。

二、开启mysql日志

2.1 general log

        在默认的情况下,MySQL是不会启动打开general_log机制的,log文件记录着MySQL的SQL语句,含:SELECT语句、DML语句、DDL语句、DCL语句、连接和断开MySQL数据库语句。

MySQL会把它收到的所有SQL语句按照接收的顺序依次记录在general_log文件中。因此,我们需要注意的是,接收的SQL语句的顺序,并不等于SQL语句就是按照这个接受的顺序来执行,因为有的时候,一些SQL可能需要等待其他锁被释放后才会被真正的执行,SQL语句的执行顺序是和binlog中的顺序是相匹配的。

假如我们执行一个select查询语句,在binlog中不会记录这样的SQL语句,但是在general log中就会记录这个select查询语句。

General log默认不开启的原因有两个:

        日志存储非常大,因为所有的操作都会被记录下来,所以对磁盘来说是一个很大的压力。
对MySQL数据的性能也有一定的影响。所以,我们一般不会开启这个general log记录的功能,只有在排查某些错误的时候,才会临时打开一下,等到debug完成之后,再把它关闭。

2.2 类型特点总结

        由于mysql日志general_log分为临时型、永久型。

临时型:通过进入mysql中通过sql语句进行配置,mysql重启就会失效。

永久型:通过进入服务器找到my.cnf进行添加配置语句。mysql重启不会失效。

2.3 临时型

mysql> show variables like 'general_log';--查看general_log开启情况,on 开启、off未开启
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| general_log   | ON    |
+---------------+-------+
1 row in set (0.01 sec)


如果未开启的情况下:通过以下sql语句设置。

mysql> set global general_log=on; -- 对全局开启general log
Query OK, 0 rows affected (0.03 sec)

查看日志文件存储位置:

mysql> show variables like 'general_log_file';
+------------------+--------------------------------------+
| Variable_name    | Value                                |
+------------------+--------------------------------------+
| general_log_file | /var/log/mysql/mysql_general_log.log |
+------------------+--------------------------------------+
1 row in set (0.00 sec)

查看日志输出类型table/file

mysql> show variables like 'log_output';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_output    | FILE  |
+---------------+-------+
1 row in set (0.00 sec)

设置成功之后,不用重启mysql,否则会失效的。

2.4 永久型

        需要到服务器中找到my.cnf,一般在etc/my.cnf,要是找不到,可以通过linux语句查找:

find / -name "my.cnf"

根据查询出来的,进行定位即可。

修改配置文件my.cnf:本人的配置如下,general_log_file这是日志文件存储路径,可自己自定义,注意一下文件权限即可以及注意一下代码位置必须是:[mysqld]以下。

[mysqld]
general_log=1
general_log_file=/www/server/data/iZwz993i8ccoxpwbvosvz7Z.log
log_output=FILE

配置好,重启mysql服务,重启mysql服务能正常启动,即说明配置成功了一半,然后随便进行数据库查询一次,然后去日志里看一下是否有记录,要是没有记录,通过临时型语句查询配置是否成功:

show variables like 'log_timestamps';
show variables like 'general_log';
show variables like 'general_log_file'; /www/server/data/iZwz993i8ccoxpwbvosvz7Z.log
show variables like 'log_output';//FILE
2.5 日志时间格式

        由于默认的general_log日志的时间格式为:UTC,不方便通过时间定位日志信息。

为此,我们需要将日志格式改为:SYSTEM

2.5.1 临时型

        通过sql语句调整:

        查看当前时间格式类型:

        

mysql> show variables like 'log_timestamps';
+----------------+--------+
| Variable_name  | Value  |
+----------------+--------+
| log_timestamps | SYSTEM |
+----------------+--------+
1 row in set (0.00 sec)

        如果时间格式不是SYSTEM,可以通过一下语句进行修改:

SET GLOBAL log_timestamps= 'SYSTEM';
2.5.2 永久型

        同样是在my.cnf配置文件中,在[mysqld]下,添加以下代码即可:

[mysqld]
log_timestamps=SYSTEM

然后启动mysql服务即可。

效果如下:

        

三、总结

        希望大家多多关注与评论,本文章能给大家有点帮助,就是本人最大的荣幸!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值