zoukankan      html  css  js  c++  java
  • MySQL5.7.18参数log_timestamps导致日志信息时间差8小时

    MySQL5.7.18参数log_timestamps导致日志信息时间差8小时

    环境:MySQL5.7.18+CentOS6.8

    背景:

    排查问题查看mysql日志的时候发现mysql错误日志和慢查询日志中的时间戳信息比正常时间少了8小时.

    官方资料显示:

    log_timestamps 自5.7.2版本被引入,此参数控制了general log、error log、slow query log日志中

    时间戳的显示,默认使用的UTC。但是此参数不影响mysql.general_log, mysql.slow_log中写入信息的

    时间戳。在查询记录的时候,可以使用 CONVERT_TZ() 函数,或者设置会话级别的系统变量 time_zone

    来转换成所需要的时区。实则不然,我这是5.7.18版本也遇到同样的问题.

    此参数有UTC(默认值)和system的2个可选项,此参数是可以动态修改的。

    #进入mysql查询一下,然后动态修改.
    mysql> show variables like 'log_timestamps';
    +----------------+-------+
    | Variable_name  | Value |
    +----------------+-------+
    | log_timestamps | UTC   |
    +----------------+-------+
    1 row in set (0.00 sec)
    
    mysql> set global log_timestamps=system;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> show variables like 'log_timestamps';
    +----------------+--------+
    | Variable_name  | Value  |
    +----------------+--------+
    | log_timestamps | SYSTEM |
    +----------------+--------+
    1 row in set (0.00 sec)
    
    mysql> select now();
    +---------------------+
    | now()               |
    +---------------------+
    | 2020-08-06 09:58:48 |
    +---------------------+
    1 row in set (0.00 sec)
    
    #修改完成后,可以看到已经变成SYSTEM.那在配置文件my.cnf里再添加:
    [mysqld]
    log_timestamps=system
    
    #建议写入配置文件,这样以防重启失效.
    
    小补充:
    MySQL 8.0支持参数log_timestamps持久化设置
    设置为持久化参数:
    mysql> set persist log_timestamps=system;
    
    
  • 相关阅读:
    看一下有没有好的解决方案!
    netinet/in.h详细介绍
    【合集】zz数组与指针的艺术深入探索c/c++数组与指针
    struct sockaddr与struct sockaddr_in ,struct sockaddr_un的区别和联系
    C Socket实例
    C语言中malloc与free
    函数fp()、数组a[i]和箭头符号>的由来
    linux gcc编译错误
    怎样检测内存泄露
    dlmalloc解析连载完结【总】
  • 原文地址:https://www.cnblogs.com/longren/p/13445142.html
Copyright © 2011-2022 走看看