mysql - 使用 SYSTEM 时如何使用 MySQL Docker 修复日志中的时间戳,忽略夏令时?
问题描述
使用官方 mysql:5.7 docker 映像并在撰写此问题时,由于夏令时,当前本地时区是 PDT (-0700),而不是 PST (-0800)。
如果想设置 TZ 环境变量来设置容器中的系统时间并让 mysql 日志时间戳服从 SYSTEM 时间,我注意到虽然现在是夏令时(在 America/Los_Angeles),但 mysql 的日志即使系统日期戳服从并且 mysql 本身正确应用夏令时时区偏移,也会忽略这一点。看起来日志没有。
我怎样才能解决这个问题并仍然使用系统时间?(不是UTC)。
以下是如何查看我所指的内容:
在主机上:正确显示date +"%Y-%m-%d %T%z"
的结果。2021-10-24 19:32:45-0700
-0700
仅从图像中检查容器中的系统时间戳:docker run -it --rm -e TZ='America/Los_Angeles' mysql:5.7 date +"%Y-%m-%d %T%z"
结果2021-10-24 19:34:28-0700
正确显示-0700
现在查看 mysql 的日志并告诉它使用 SYSTEM:docker run -it --rm -e TZ='America/Los_Angeles' -e MYSQL_ALLOW_EMPTY_PASSWORD=1 mysql:5.7 mysqld --log-timestamps=SYSTEM
显示如下所示的日志,注意它们以-0700
(PDT) 开始正确,但随后切换到-0800
(PST)
2021-10-24 19:36:20-07:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.35-1debian10 started.
2021-10-24 19:36:20-07:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2021-10-24 19:36:20-07:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.35-1debian10 started.
2021-10-24 19:36:20-07:00 [Note] [Entrypoint]: Initializing database files
2021-10-24T19:36:20.526869-08:00 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2021-10-24T19:36:21.131790-08:00 0 [Warning] InnoDB: New log files created, LSN=45790
2021-10-24T19:36:21.196020-08:00 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2021-10-24T19:36:21.208429-08:00 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 56cacdbe-353c-11ec-baae-0242ac110004.
-0800
并且该时间戳格式继续存在,并且在容器生命周期的最后几行中继续显示。
如果我还从该容器内部检查 mysql ,那里的数据库设置也显示PDT
正确(至少现在):mysql -ve "SELECT CURRENT_TIMESTAMP, @@system_time_zone, @@session.time_zone;"
+---------------------+--------------------+---------------------+
| CURRENT_TIMESTAMP | @@system_time_zone | @@session.time_zone |
+---------------------+--------------------+---------------------+
| 2021-10-24 19:49:02 | PDT | SYSTEM |
+---------------------+--------------------+---------------------+
似乎日志时间戳(在它开始显示的位置上方2021-10-24T19:36:20.526869-08:00 0
)忽略了它是 PDT 并认为它是 PST,而在其他任何地方它都是正确的 PDT。
如何解决此问题并仍然使用 SYSTEM 与 UTC 进行日志?
解决方案
推荐阅读
- javascript - 按钮单击时的经典 ASP 更新仅适用于 IE,不适用于其他浏览器
- ms-access - MS Access - 查询 - 唯一值
- sorting - JCL 排序以获取选择性记录
- powershell - 是否可以在多个网络位置的文件内容中进行搜索和替换?
- android - 从另一个活动更新存储在一个活动中的对象
- linux - 无法让脚本在后台运行
- scala - 让一个未来等待另一个未来再走
- selector - Puppeteer (1.14.0) 无法通过“id”找到锚标记,尽管 JQuery 可以找到它
- java - 当我将 GUI 窗口大小增加到完整时,组件会返回标准布局
- javascript - 如何修复“预期 [Array(9)] 到深度相等 [Array(11)]”错误