设为首页 收藏本站
查看: 1729|回复: 0

[经验分享] MySQL时间慢了八个小时

[复制链接]

尚未签到

发表于 2018-9-28 12:09:11 | 显示全部楼层 |阅读模式
  由于我公司另外一个运维小伙伴装系统的时候,勾选了UTC这个东东。(会导致慢八个小时的时间误差)结果才有了这一次逗比的经历。
  1、系统时间慢八个小时,我发现不对劲后,就改回来了,可参考我的另外一篇博客。
  2、数据库慢了八个小时,当时并没有意识到这个问题。
  突然在做实验,老大喊我,说MySQL时间不对劲,让我帮忙解决一下。啥?不会吧,当时首先是这个反正,去看看后,果然时间不对,和本地时间比较一下,相差八个小时。我顿时反应就是,又是那UTC惹的祸。好吧,排查吧,毕竟先解决问题才是硬道理啊。
  了解:
  5.10.8. MySQL服务器时区支持
  MySQL服务器有几个时区设置:
  · 系统时区。服务器启动时便试图确定主机的时区,用它来设置system_time_zone系统变量。
  · 服务器当前的时区。全局系统变量time_zone表示服务器当前使用的时区。初使值为'SYSTEM',说明服务器时区与系统时区相同。可以用--default-time-zone=timezone选项显式指定初使值。如果你有SUPER 权限,可以用下面的语句在运行时设置全局变量值:
  ·mysql> SET GLOBAL time_zone = timezone;
  ·   每个连接的时区。每个客户端连接有自己的时区设置,用会话time_zone变量给出。其初使值与全局变量time_zone相同,但可以用下面的语句重设:
  ·mysql> SET time_zone = timezone;
  可以用下面的方法查询当前的全局变量值和每个连接的时区
mysql> SELECT @@global.time_zone, @@session.time_zone;  
+--------------------+---------------------+
  
| @@global.time_zone | @@session.time_zone |
  
+--------------------+---------------------+
  
| SYSTEM             | SYSTEM              |
  
+--------------------+---------------------+
  
1 row in set (0.00 sec)
  
mysql>
  解决方案;
  1、临时解决方案
  查看当前数据库时间
mysql> select CURTIME();  
+-----------+
  
| CURTIME() |
  
+-----------+
  
| 08:53:05  |
  
+-----------+
  
1 row in set (0.00 sec)
  
mysql> select now();
  
+---------------------+
  
| now()               |
  
+---------------------+
  
| 2016-01-31 08:53:08 |
  
+---------------------+
  
1 row in set (0.00 sec)
  
mysql>
  
修改时区:
  
mysql> SET time_zone = '+8:00';  # 此为北京时,我们所在东8区
  
Query OK, 0 rows affected (0.00 sec)
  
mysql> flush privileges;
  
Query OK, 0 rows affected (0.00 sec)
  
mysql>
  2、永久解决方案
vim /etc/my.cnf  
[mysqld]
  
default-time_zone = '+8:00'
  
重启mysql服务。
  
/etc/init.d/mysqld restart
  
  3、其他问题:
  数据库如果有主从结构,重启数据库会导致主从不同步。
  个人建议的方法:
  1、先停止slave (stop slave;)然后先修改slave的时区(很不幸,系统不是自己装的),等到服务器重启后,查看slave同步binlog的位置,然后修改Master的时区,重启后查看当前master的位置,重新授权,salve重新学习(可从slave重启后查看的位置学习),最后再start slave;不出意外,这样是可行的,毕竟我是这样操作。
  2、如果不行失败,那就等master和slave时区都改好后,查看master当前位置,然后slave导入最新数据库,然后重新学习。
  3、我尝试过slave不导入最新数据,从一开始从master的binglog位置学习,但是实验报错了。后来有从新导入最新数据,然后学习的。(具体为什么失败,并不清楚,网上关于重启数据库,主从不同步的原因有很多。)
  个人总结:
  1、涉及到数据库的问题,最好先在实验环境模拟真实环境,操作无误再在生产环境执行,避免不必要的错误。如果问题比较大,记得先做好备份,备份才是王道。
  2、遇到问题,先冷静,仔细排查。不要抱怨,先解决问题,再建议。
  3、不要忽略一些不必要的问题。一个小小的UTC,居然带来了这么多的小弯路。



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-603279-1-1.html 上篇帖子: mysql日常问题记录 下篇帖子: navicat for mysql 链接时报错:1251-Client does not suppo
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表