BinLog 中的 Timestamp 是否可以精确到毫秒?

Is it possible to have a millisecond precision for the Timestamp in a BinLog?

我们正在使用 MariaDb 10.4.14,并使用 Debezium 套件流式传输二进制日志。我们遇到一个问题,因为 binlog streamer 中的时间戳是一个 uint32,它不提供毫秒精度。

您知道是否可以通过更改 MariaDb 或 Debezium 中的配置来获得这种精度吗?

不,这不可能,因为时间戳存储在 32 位整数中。

header/description格式定义如下(来自MySQLConnector/Cmariadb_rpl.h):

struct st_mariadb_rpl_format_description_event
{
  uint16_t format;
  char *server_version;
  uint32_t timestamp;
  uint8_t header_len;
};

format_description 二进制日志事件的协议实现可以在 FORMAT_DESCRIPTION_EVENT of Client/Server protocol

中找到

从 uint32_t 更改时间戳,例如uint64_t 或 MYSQL_TIME 会破坏协议,因此会破坏整个复制以及读取二进制日志的现有应用程序。