【发布时间】:2021-02-27 13:44:21
【问题描述】:
我们正在使用 MariaDb 10.4.14,并使用 Debezium 套件流式传输 binlog。我们遇到了一个问题,因为 binlog streamer 中的 Timestamp 是一个 uint32,它不提供毫秒精度。
您知道是否可以通过更改 MariaDb 或 Debezium 中的配置来获得这种精度?
【问题讨论】:
标签: mariadb debezium mysqlbinlog
我们正在使用 MariaDb 10.4.14,并使用 Debezium 套件流式传输 binlog。我们遇到了一个问题,因为 binlog streamer 中的 Timestamp 是一个 uint32,它不提供毫秒精度。
您知道是否可以通过更改 MariaDb 或 Debezium 中的配置来获得这种精度?
【问题讨论】:
标签: mariadb debezium mysqlbinlog
不,这是不可能的,因为时间戳存储在一个 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 会破坏协议,因此会破坏整个复制,还会破坏读取二进制日志的现有应用程序。
【讨论】: