MySQL 5.7.15版本Timestamp/now()函数异常求助
MySQL 5.7
now()返回时间与系统时间不符的排查方案 问题背景
运行环境:Linux Ubuntu 16.04,MySQL 5.7.15-0ubuntu0.16.04.1
执行select now();返回'2021-01-11 02:33:54',但系统当前时间为Wed 19 Apr 2023 04:11:33 PM EDT,已尝试重启服务器和MySQL服务,问题未解决。
排查与解决步骤
第一步:确认MySQL时区配置
执行SQL查看全局和会话时区:SELECT @@global.time_zone, @@session.time_zone;同时对比系统与MySQL的时间戳:
终端执行date +%s,MySQL中执行:SELECT UNIX_TIMESTAMP(NOW());- 若时间戳一致:说明是时区转换问题,修正时区即可。
- 若时间戳差距巨大:说明MySQL内部时钟未同步系统时间,需进一步排查。
第二步:修正MySQL时区
临时生效执行:SET GLOBAL time_zone = 'America/New_York'; SET time_zone = 'America/New_York';永久生效需修改MySQL配置文件(通常为
/etc/mysql/mysql.conf.d/mysqld.cnf),添加或修改:default-time-zone = 'America/New_York'保存后重启服务:
sudo systemctl restart mysql第三步:确认系统时间同步状态
执行timedatectl查看系统时区与同步状态,确保Time zone显示EDT (-04:00)、NTP synchronized为yes。同步异常时重启服务:sudo systemctl restart systemd-timesyncd或手动同步:
sudo ntpdate pool.ntp.org第四步:排查MySQL内部时钟异常
若时间戳完全不一致,尝试重新挂载系统时钟:sudo mount -o remount,rw /sys/class/rtc/rtc0仍未解决则备份数据后,考虑重新初始化MySQL系统库(操作前务必备份全量数据)。
内容的提问来源于stack exchange,提问作者philipfwilson
相关产品推荐
相关产品推荐

