TiCDC时区问题

是和我的情况一样,timestamp 少了8小时吗?

是的。 Jenkins

有什么解决方案吗?

应该是个 bug,需要查下为什么会出现, 记了一个 issue CDC: incorrect timestamp value in debezium protocol · Issue #12243 · pingcap/tiflow · GitHub

我重新进行测试后发现结果是没问题的,你在设置 GLOBAL time_zone 和 create table 是在一个 session 下做的吗?https://github.com/pingcap/tiflow/pull/12242/files#diff-13625772214eb554539e3cfa2fdc84cd9ad74b64e03c95dc668217c8e44b2b39R53-R56

不是,GLOBAL time_zone 在集群刚起来的时候就设置了

从测试看,debezium connect 的输出也是 “2025-07-13T07:54:31Z”,这里实际存储是 UTC 时间 “2025-07-13T07:54:31Z”,按照文档来说,读取时应该是根据 database’s time zone 转为对应的时区值的,你们之前有使用过其他 debezium 协议的工具吗,他们的输出是什么呢?

  1. SET GLOBAL time_zone = ‘UTC’;
    输出为 “2025-07-13T15:54:31Z”,TiCDC 和 debezium/connect 输出一致
  2. SET GLOBAL time_zone = ‘Asia/Shanghai’;
    输出为 “2025-07-13T07:54:31Z”,TiCDC 和 debezium/connect 输出一致

这个结果是符合预期的。无论如何调整时区值,DATETIME 数据类型的值不会受到影响。TIMESTAMP 数据类型的显示值会根据时区的变化而变化。