log_timestamps参数使用详解
更新时间:2023-08-24
背景
log_timestamps参数是MySQL在5.7.2版本新引入的参数,这个参数主要是控制MySQL的错误日志、慢查询日志、genera log等记录日志的显示时间参数,但不会影响写到表 (mysql.general_log, mysql.slow_log) 中的显示时间。
问题现象
某客户使用百度云RDS产品时发现,1月6号的慢查询日志中存在1月5号的时间戳,样例如下:
原因分析
经过百度云数据库工程师定位,确认是由于参数 log_timestamps=UTC 导致的。log_timestamps的取值含义如下:
- UTC:使用UTC时间(Universal Time Coordinated),5.7版本默认取值UTC,显示的时间戳距离北京时间少8小时。
- SYSTEM:使用本地时间,本地时间=UTC+时区差。
解决方案
登录百度云数据库控制台,在『参数配置』页面,找到log_timestamps参数,将UTC修改为SYSTEM即可。
案例复现
1、log_timestamps=UTC,登录RDS实例查看参数设置和当前系统时间:
执行测试SQL构造慢查询:
select sleep(10);
在慢日志中查看,UTC格式时间比本地时间少了8小时:
2、log_timestamps=SYSTEM,在控制台-参数配置中修改取值设置:
登录RDS实例查看参数设置和当前系统时间:
执行测试SQL构造慢查询:
select sleep(10);
在慢日志中查看,显示的是本地时间: