Timestamp时间戳精确到微妙级别,出现bug

简介:

timestamp时间戳精确到微妙级别,出现bug

自MariaDB5.3版本起,timestamp时间戳精确到微妙级别,但这里存在一个致命bug,它会导致binlog记录的内容损坏,致使闪回恢复功能失效、Canal工具抓取binlog失败。
影响版本MariaDB 5.5/10.0

复现:
我使用的版本为10.0.29-MariaDB-enterprise
Binlog格式为ROW(Mixed不存在此BUG)

创建表结构,注意:timestamp(6),精确到微妙

create table hcy(create_time timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6));

插入数据

insert into hcy(create_time) values(now());

此时我们查看BINLOG文件,如下图所示:

1、时间变成了负数。
2、Corrupted replication event was detected. 检测到复制被损坏。
3、10.0低版本可能会造成主从同步失败。

该bug在MariaDB 10.1版本里修复
官方确认bug地址
https://jira.mariadb.org/browse/MDEV-5377












本文转自hcymysql51CTO博客,原文链接: http://blog.51cto.com/hcymysql/1928290,如需转载请自行联系原作者






相关文章
|
10月前
时间戳转换时间
时间戳转换时间
|
6天前
|
C#
C# 版本的 计时器类 精确到微秒 秒后保留一位小数 支持年月日时分秒带单位的输出
这篇2010年的文章是从别处搬运过来的,主要包含一个C#类`TimeCount`,该类有多个方法用于处理时间相关的计算。例如,`GetMaxYearCount`计算以毫秒为单位的最大年数,`GetCurrentTimeByMiliSec`将当前时间转换为毫秒,还有`SecondsToYYMMDDhhmmss`将秒数转换为年月日时分秒的字符串。此外,类中还包括一些辅助方法,如处理小数点后保留一位数字的`RemainOneFigureAfterDot`。
|
1月前
|
Unix 定位技术
什么是时间戳?时间戳的获取方式
什么是时间戳?时间戳的获取方式
|
11月前
|
Linux
time模块: 时间戳、结构化时间、格式化时间的获取与相互转化
time模块: 时间戳、结构化时间、格式化时间的获取与相互转化
77 0
|
Python
一起读源码:为什么 loguru 的时间 rotation 不能只精确到天
一起读源码:为什么 loguru 的时间 rotation 不能只精确到天
122 0
封装时间戳转具体时间工具
封装时间戳转具体时间工具
125 0
封装时间戳转具体时间工具
|
Java
记录一次时间戳、夏令时、时区线上问题分析
记录一次时间戳、夏令时、时区线上问题分析
582 0
记录一次时间戳、夏令时、时区线上问题分析
UTC世界标准时间转化为正常时间
一,UTC 协调世界时,又称世界统一时间、世界标准时间、国际协调时间。由于英文(CUT)和法文(TUC)的缩写不同,作为妥协,简称UTC。协调世界时是以原子时秒长为基础,在时刻上尽量接近于世界时的一种时间计量系统。
5332 0
|
数据库 数据格式 XML
3、时间戳的优化
由于数据库使用的创建时间 create_time和最后更新时间 update_time 但是我们的Mapper 和 pojo以及对应的xml文件是使用逆向工程工具生成的,所以我们要对对应的文件进行修改。
756 0
|
Java 关系型数据库 数据库连接