mysql时区问题

设置mysql容器时间与服务器时间一致

问题背景:

今天测试发现一个问题,时间不一致,当工单入库时,其创建时间和更新时间应该是一样的,即使不一样最多只会错几秒的时间;实际上两个时间相差的大概8小时;

在这里插入图片描述

一般来讲,像这种问题,大概率是时区问题;但是由于第一次处理,走了不少弯路,记录一下;

原因分析:

由于我们使用的是k8s部署方式,内网的mysql服务端镜像和外网的服务端基础镜像不一样;

内网的容器时间与服务器时间是一致的;都是 Asia/Shanghai 24小时制的;但是外网却不一致,数据库容器时间是12小时制,时区与服务器时区也不一样;

因此我们需要把容器的时区配置与服务器的时区配置统一即可;

解决方式:
Dockerfile更改方式:

在dockerfile中添加这一行,设置时区;

RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
		 && echo "Asia/Shanghai" > /etc/timezone
docker启动时的更改方式:

在启动时挂载宿主机的时区文件:

docker run -p 3306:3306 --name mysql -v /etc/localtime:/etc/localtime
k8s启动方式:

原理都是挂载:yaml 设置

containers:
  env: 
    - name: TZ
      value: Asia/Shanghai
  volumeMounts:
    - name: timezone
      mountPath: /etc/localtime
volumes:
  - name: timezone
    hostPath:
      path: /usr/share/zoneinfo/Asia/Shanghai

mysql的配置文件也可以添加配置:

[mysqld]
    default-time_zone = '+8:00'
每日一句:

顺,不妄喜;逆,不惶馁;安,不奢逸;危,不惊惧;胸有惊雷而面如平湖者,可拜上将军!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值