dm中heartbeat时区问题

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】:v3.0.11 DM v1.0.3
  • 【问题描述】:

dm task文件中开启heartbeat后,设置时区为“Asia/Shanghai”,查询上游mysql中的时间与当前时间还是相差8小时

image

表述里面查询上游 mysql 时间与当前差 8 个小时 -> 是想表达下游 TiDB 与当前时间相差 8 小时吗?可以看下这个类似问题以及处理:https://www.jianshu.com/p/9537c20a0129?utm_campaign=hugo&utm_medium=reader_share&utm_content=note&utm_source=weixin-timeline&from=timeline&isappinstalled=0

链接中的文档是设置tidb集群设置时区问题,我这是dm集群下的问题,不一样

在DM集群里,在task配置文件中,打开了heartbeat功能(具体配置见我的截图),会在当前任务的上游mysql中创建一个dm-heartbeat schema,并创建表heartbeat,然后不断更新heartbeat中的时间戳。

现在问题是我查询上游mysql中的heartbeat表的时间戳与系统时间相差8个小时?用select now()获取当前时间是正常的?

是不是task任务中的timezone:"Asia/Shanghai"设置不生效?

timezone:“Asia/Shanghai” 是下游 TiDB 的时区,可以看下下游当前时间是不是正确的,确认下是否是因为下游时区问题导致的 heartbeat 表的时间不对。

image

下游tidb时区是对的,没问题。那上游mysql中m-heartbeat库中的时间戳相差8小时,是什么原因呢?上游mysql时区也没问题

下游 TiDB 里面执行下 select now() ,贴下结果。

task 里面配置的时区跟 heatbeat 表用到的时区是不一样的。heartbeat 表默认是 UTC,task 里面的时区设置是用来帮助解析 binlog ,跟 heartbeat 没有关系,所以会出现不一致现象,后面我们会对文档说明再完善下,感谢提出问题。

那就是heartbeat表的时区UTC不能配置,是吗?

看监控里面的延迟也是正常的时间值,也没啥问题,就是查看heartbeat表里的时间戳有点怪

是的,heartbeat 表的时区是不能配置的,监控看到的时间是正常的。