mysql时区错乱_记一次线上mysql时区错乱
Mysql查询时间和页面显示时间相差八个小时。
在一次线上程序调用mysql内部函数转化时间戳的时候的bug记录。在本地开发与测试环境都没得问题。但是上线后,程序总是不再状态。
遂开启审阅代码的过程,修bug轻轻松松耗费几个小时。最后在数据库中执行使用的原生sql语句,大概长这样:1
2(UNIX_TIMESTAMP(CURRENT_TIMESTAMP) - UNIX_TIMESTAMP(last_spider_time)
) > 600
一直回显不出数据。
猜想应该是时间戳出现了问题。验证一下执行时间戳的内容。1
2
3
4SELECT
UNIX_TIMESTAMP(CURRENT_TIMESTAMP) ,
UNIX_TIMESTAMP('2019-08-28 18:30:35');
当前的时间已经大于18点,但是返回的18点的时间戳确实2点的时间戳。快了8个小时。1
2
31567006237
1567017035
在本地开发环境执行的结果是
这是一个正常的结果。
输出当前的时区1show variables like "%time_zone%";
开发测试环境结果为显示系统时间1
2
3
4
5
6
7
8
9mysql> show variables like "%time_zone%";
+------------------+--------+
| Variable_name | Value |
+------------------+--------+
| system_time_zone | |
| time_zone | SYSTEM |
+------------------+--------+
2 rows in set, 1 warning (0.00 sec)
服务器显示结果也为系统时间1
2
3
4
5
6
7
8mysql> show variables like "%time_zone%";
+------------------+--------+
| Variable_name | Value |
+------------------+--------+
| system_time_zone | UTC |
| time_zone | SYSTEM |
+------------------+--------+
2 rows in set (0.00 sec)
我们看下服务器系统的时区date
发现是utc的时区。我们需要增加8个小时的时区了。
方案
更改系统时区,傻瓜式更改1tzselect
选择 49111
2
3cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ntpdate time.windows.com
重启
或者
设置时区更改为东八区1set global time_zone = ‘+8:00’;
刷新权限1flush privileges;
结果
时区正常1
2
3
4
5
6
7
8
9mysql> SELECT
->
-> UNIX_TIMESTAMP(CURRENT_TIMESTAMP) ,
-> UNIX_TIMESTAMP('2019-08-28 18:30:35');
+-----------------------------------+---------------------------------------+
| UNIX_TIMESTAMP(CURRENT_TIMESTAMP) | UNIX_TIMESTAMP('2019-08-28 18:30:35') |
+-----------------------------------+---------------------------------------+
| 1567009347 | 1566988235 |
+-----------------------------------+---------------------------------------+
在docker中创建mysql容器,容器的时间是utc
在拉取mysql官方镜像的时候,创建的容器时间仍然是utc,解决的方式有
1、在创建容器的时候就设置容器的时区以及mysql的默认时区1
2
3
4# docker启动命令
docker run --name changle-mysql -p 3306:3306 -e [email protected] -e MYSQL_DATABASE=changle
-e TZ=Asia/Shanghai -d mysql:5.6
--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-time_zone='+8:00'
参数说明MYSQL_ROOT_PASSWORD : 设置mysql数据库root的密码
MYSQL_DATABASE : 启动时创建数据库
TZ=Asia/shanghai : 设置容器时区
character-set-server : 服务器字符集,在创建数据库和表时不特别指定字符集,这样统一采用character-set-server字符集。
character-set-database : 数据库字符集
character-set-table : 数据库表字符集
collation-server : 排序规则字符集
default-time_zone : mysql的时区
2、手动进入到容器内部、更改时区
记得重启容器
3、在不重启容器情况向下
可以直接将宿主机文件复制到容器内部1docker cp /etc/localtime [containerId]:/etc/localtime
查看容器的时间1docker exec [containerId] date
mysql时区错乱_记一次线上mysql时区错乱相关推荐
- java mysql死锁_记一次线上mysql死锁分析(一)
记录一次比较诡异的mysql死锁日志.系统运行几个月来,就在前几天发生了一次死锁,而且就只发生了一次死锁,整个排查过程耗时将近一天,最后感谢我们的DBA大神和老大一起分析找到原因. 诊断死锁 借助于我 ...
- 在线分析mysql死锁详解_记一次线上mysql死锁分析(一)
记录一次比较诡异的mysql死锁日志.系统运行几个月来,就在前几天发生了一次死锁,而且就只发生了一次死锁,整个排查过程耗时将近一天,最后感谢我们的DBA大神和老大一起分析找到原因. 诊断死锁 借助于我 ...
- mysql死锁语句_记一次神奇的Mysql死锁排查
背景 说起Mysql死锁,之前写过一次有关Mysql加锁的基本介绍,对于一些基本的Mysql锁或者死锁都有一个简单的认识,可以看下这篇文章为什么开发人员需要了解数据库锁.有了上面的经验之后,本以为对于 ...
- mysql++裸盘_记一次裸迁 MySQL 经历
记一次裸迁MySQL经历 前言:博主企业有一台企业阿里云机器,因为安装了云锁,造成服务器动不动就给我所死服务器.(就是那种 chattr +i /bin/bash ,分分钟日死狗 )趁着周末,Boos ...
- telephone 为空 唯一索引_记一次线上唯一索引失效没有起效的场景
背景描述:我们系统A做远程在线接口提供给B系统调用,每次的请求参数中都带有幂等单号用来做幂等校验,幂等单号对应的字段是不可空且唯一的.由于对应的业务表线上已有数据,这个幂等字段数据新加的字段,所以要做 ...
- mysql 插入慢_记一次生产环境mysql数据库参数优化,值得收藏
概述 最近在对各个系统的mysql做一些参数上的优化,也开了慢查询,准备后面针对特定sql再进一步优化.下面主要介绍一下一些优化的参数. 1.优化前mysql配置 可以看到基本上是没怎么做优化的. 2 ...
- mysql爆内存_线上MySQL数据库机器内存爆掉原因分析与解决
本文主要向大家介绍了线上MySQL数据库机器内存爆掉原因分析与解决,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 现象: 阿里金融某业务的MySQL机器的内存每隔几天就会增长,涨 ...
- 线上Mysql数据库崩溃事故的原因和处理
前文提要 承接前文<一次线上Mysql数据库崩溃事故的记录>,在文章中讲到了一次线上数据库崩溃的事件记录,建议两篇文章结合在一起看,不至于摸不着头脑. 由于时间原因,其中只讲了当时的一些经 ...
- 记一次线上应用连接池满的处理
记一次线上应用dubbo-claim连接池满的处理 首先看到dubbo-claim应用突然大面积报错,基本反馈是冻结预算出问题了,看了看冻结预算的代码,发现写的非常复杂,果断放弃看代码来排查问题. C ...
最新文章
- 互联网协议 — TCP — 性能问题解析
- 最全mysql的复制和读写分离
- 回顾我走过的编程之路
- 结合业务场景案例实践分析,倾囊相授美团BERT的探索经验
- 数据库树状结构的关系表的删除方案
- 【JS 逆向百例】PEDATA 加密资讯以及 zlib.gunzipSync() 的应用
- “寒武纪大爆发”之后的云原生,2021年走向何处?
- 网站登录JWT的实现
- linux编程学习_您需要编程技能才能学习Linux吗?
- 【三】Jmeter:测试片段
- Android DataBinding 从入门到进阶
- RHadoop的安装与试验
- python进阶方向_python进阶—边练边学,学到极致
- OA 办公自动化系统 现状
- vuejs登陆页面_20个最佳Vuejs登陆页面模板
- 【渝粤教育】广东开放大学 建设工程法规 形成性考核 (32)
- Schema for type Unit is not supported
- BIOS和UEFI的区别
- Ol4网格生成以及优化
- gitea/gogs忘记密码后重置密码
热门文章
- esxi6.7虚拟机无法开机,提示“没有更多空间可供虚拟磁盘server-000001.vmdk使用。也许通过释放相关卷上的磁盘空间并单击 重试 继续此会话,单击 取消 可终止此会话”
- 【SQL注入漏洞-04】布尔盲注靶场实战
- 2005年中国BBS社区100强
- 64位整数乘法 ab%p
- 中国“智”造——新车评网试驾观致3
- sublime text 3开启vi编辑模式
- 跟我一起玩Win32开发(6):创建右键菜单
- 算法---消除游戏(Kotlin)
- Windows命令行的使用
- 工作占用了太多私人时间_职场谋略:下班后领导总发微信占用私人时间,怎么应对?...