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 会破坏协议,因此会破坏整个复制以及读取二进制日志的现有应用程序。
我们正在使用 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 会破坏协议,因此会破坏整个复制以及读取二进制日志的现有应用程序。