发现mariadb数据库时间晚了12个小时,xxljob定时任务调度异常

Posted 雅冰石

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了发现mariadb数据库时间晚了12个小时,xxljob定时任务调度异常相关的知识,希望对你有一定的参考价值。

一  问题描述

当前时间是2022年6月27日11:32,但是我在数据库里查当前时间却比现在晚了12个小时:

SELECT NOW();

2022-06-26 23:30:51

发现时区是美国时区(EDT),非中国时区:

xxljob定时任务提前12个小时执行了,示例:

应该是在晚上23点执行的,但却在中午11点执行了:

 

二 排查思路

看下操作系统的时区是什么(执行date命令),如果操作系统的时区不对,那数据库里的时区也不会对。

需要修改下操作系统时区(请参考linux CST与EDT时区互转_雅冰石的博客-CSDN博客),然后重启下数据库。

若不想重启线上数据库,也可以通过执行命令:

SET  global time_zone = '+8:00';

只是set命令仅对新建连接生效,不会改变已有连接的。
所以之前连接还是之前的时间,我建议最好是在晚上重启下数据库(不用set global,直接重启数据库就行)

在改完数据库时区后,重启了xxljob,发现xxljob定时任务还是有问题。

于是尝试修改了其中三条异常数据,想着观察下效果,没问题的话,第二天再改所有的。

修改方法:

修改trigger_last_time和trigger_next_time,将其往后加12个小时:

UPDATE xxl_job_info SET trigger_last_time=(trigger_last_time+12*60*60*1000),trigger_next_time=(trigger_next_time+12*60*60*1000)
WHERE ……

第二天看着正常了,奇怪的是,其他异常的,我也没手动改,第二天也变正常了。

难道是自动清理了xxljob的缓存什么的?

以上是关于发现mariadb数据库时间晚了12个小时,xxljob定时任务调度异常的主要内容,如果未能解决你的问题,请参考以下文章

在MongoVUE中发现插入的时间和实际的时间相差8小时?

VueJS 执行数据函数太晚了(?)

如果 mysql/mariadb 中的日期早于 1 小时,请更改列值?

如何实现分布式定时任务(xxl的实现)

rabbitmq template发送的消息中,Date类型字段比当前时间晚了8小时

基于XXL-JOB实现分布式任务调度的实现