BinLog 中的时间戳是不是可以达到毫秒精度?
Posted
技术标签:
【中文标题】BinLog 中的时间戳是不是可以达到毫秒精度?【英文标题】:Is it possible to have a millisecond precision for the Timestamp in a BinLog?BinLog 中的时间戳是否可以达到毫秒精度? 【发布时间】:2021-02-27 13:44:21 【问题描述】:我们正在使用 MariaDb 10.4.14,并使用 Debezium 套件流式传输 binlog。我们遇到了一个问题,因为 binlog streamer 中的 Timestamp 是一个 uint32,它不提供毫秒精度。
您知道是否可以通过更改 MariaDb 或 Debezium 中的配置来获得这种精度?
【问题讨论】:
【参考方案1】:不,这是不可能的,因为时间戳存储在一个 32 位整数中。
header/description 格式定义如下(来自 mysql Connector/C mariadb_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 会破坏协议,因此会破坏整个复制,还会破坏读取二进制日志的现有应用程序。
【讨论】:
您好,我不确定我是否完全理解您的意思。这意味着它非常阻塞。您不能使用 binlogs 以另一种数据库格式复制数据库。如果我理解得很好,您的意思是无法使用 binlogs 对数据库中的操作进行排序。无法更改您强制执行的任何数据库配置。 你问是否有可能获得微秒精度,我试图解释为什么不可能 - 现在你有一个完全不同的问题。以上是关于BinLog 中的时间戳是不是可以达到毫秒精度?的主要内容,如果未能解决你的问题,请参考以下文章