mysql8.0.40服务日志时间和linux系统时间不同步问题!
1.查看mysql服务内部的时间
SELECT NOW(), SYSDATE(), UTC_TIMESTAMP(), @@time_zone;
列详情:
`NOW()` 和 `SYSDATE()` 显示的是 **本地时间(CST, UTC+8)**
`UTC_TIMESTAMP()` 显示的是 **UTC 时间(0:00 开头)**
`@@time_zone = SYSTEM`,且系统识别正确
2.原因🔍 MySQL 错误日志(error log)中写入的时间戳是 UTC 而不是本地时间
⚠️ 常见现象:MySQL 错误日志使用 UTC 时间写日志
即使 `NOW()` 返回的是本地时间,**MySQL 的错误日志(error log)在某些版本或配置下,默认可能使用 UTC 时间写入时间戳**。
这是 **MySQL 的一个常见行为**,尤其是在以下情况:
- 使用了 `log_error_verbosity=3` 或高版本 MySQL(如 8.0)
- 启用了 `log_timestamps` 系统变量
---
3.✅ 解决方案:设置 `log_timestamps` 为 `SYSTEM`
步骤 1:查看当前 `log_timestamps` 设置
SHOW VARIABLES LIKE 'log_timestamps';
结果返回:
👉 这就是问题所在!**日志时间戳使用的是 UTC**
步骤 2:修改配置,让日志使用本地时间
编辑 MySQL 配置文件(通常是 `/etc/my.cnf` 或 `/etc/mysql/my.cnf`):
[mysqld]
# 让日志时间戳使用系统本地时间(CST)
log_timestamps = SYSTEM
步骤 3:重启 MySQL 服务
sudo systemctl restart mysqld
步骤 4:验证设置
SHOW VARIABLES LIKE 'log_timestamps';
然后查看你的错误日志: