事情是这样的~
今天突然有客服找,说客户购买的产品都没有及时生效。早上8点下的单,查看数据库的时间都成了下午2点,那就没得说了。肯定回来找,时间足足差了几个小时。找原因,修复吧~~~
1、首先查询当前服务器的时间,和时区,发现时间不对,时区是正确的。这种的解决起来相对来说简单一些。
2、使用 ntp工具,必须保证有网络连接,才可以矫正,以下是操作手册图:
然而我使用这种方式,并没有修改成功。
咨询服务商官方人员,告诉我是我的yum有问题先解决这个。可是我已经操作过 update了,而且下载其他的也没有问题(估计官方人员也是二把刀)。
3、查询到其他博客,有说软件包数据损坏导致的,所以又尝试清理软件包数据库的缓存
sudo rm -rf /var/lib/rpm/__db*
4、创建软件包缓存,再次安装 ntp包
sudo rpm --rebuilddb
yum install ntpdate/ntp
最后还是失败,和刚才的问题一样,无法找到该软件包。
看到这里,你可能已经解决了这个问题,那么恭喜你,继续写BUG吧。如果是没有解决的,请继续往下看,脑子总是个好东西,只要思想不滑坡,办法总比困难多。
5、换种思路
这个问题已经迫在眉睫,客服一直在上报该类问题。不得已只能换个思路来解决了。不知道大家有没有听说过 ntpdate的代替品,我觉得不仅仅是代替,更是救命稻草。接下就给大家娓娓道来,这个代替品-chrony的可爱之处。
上图中最后一个命令,就是安装命令,简直简单粗暴。
安装后打开 chrony.conf查看下,路径一般在 /etc/chrony/ 或者 /etc下,只要看到里面有
server ntp.aliyun.com xxxx iburst
server ntp1.aliyun.con xxxx iburst
证明你下载安装的对了,接下里就启动起来吧!
systemctl start chronyd
systemctl status chronyd (检测是否已经启动正常)
设置开机启动
systemctl enable chronyd
到这里,你已经成功设置好了 chrony~
最重要的一步,就是要解决时间不对的问题,然而,对于chrony来说很简单,一句命令搞定。。。
chrony -a makestep
回复 200 OK
接着使用以下命令检查同步状态
chronyc tracking.
终于大功告成了,使用 date -R看看是否解决了!!!
别急着走,下面还有菜单,不看你可能会后悔~~~~~~~~~
彩蛋时间::::::::::
当你还沉浸在大功告成的喜乐中时~~~~
客服又来上报,客户的系统进不去了,心态不好的你要崩溃了~~~~~
你要学会思考:
为什么会出现这个问题呢,第一件要做的就是 查日志。
你会发现,数据库报了一个这样的异常:
很有可能你见都没有见过,(见过的就不要说话了)容大拿来解释下:
由于服务器时间不正确,刚修复好(其实docker默认是给重启了服务器),导致系统时间倒退造成。
Mybatis 默认的 id 生成算法是雪花算法,时间倒退导致生成 id 抛异常。
以上就是问题出现的详细,解决很简单~
只需要:重新启动你的项目。至此已经全部搞定。
这里只是简单介绍了时区正常时间错误的解决方案,关于时区错误的问题等有机会再来补充。简单的时区错误,可以通过拷贝粘贴本机的localtime文件或者使用tzselect选择北京来解决,难搞的是如果硬件时钟也错了,就得需要大搞了~~~关于如何处理,请听下次分解~~~~~
相信以上的文章会对你有所帮助,下面诚挚邀请你进入下面的技术交流群。