有last_modified_time就万无一失了吗-阿里云开发者社区

开发者社区> 数据库> 正文

有last_modified_time就万无一失了吗

简介:

线上MySQl增量ETL由于源表没有last_modified_time(timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP),加起来比较有难度(online ddl虽然有工具,不过这些表是比较核心的表并且超过300GB);因此在从库启用了触发器,来记录PK以及对应的modified_time(记录事务的开始时间,这个验证可以简单通过load一个大文件来验证);这样做有几个缺陷:

1.如果主库的DML产生了row format binlog,那么是不会触发从库的trigger

2.这些表的TPS接近double

另外一种方式就是在从库添加last_modified_time column,不过即使有了这么一列抽取的数据就万无一失了吗?看如下序列:

事务T1--235959开启,同时插入一行记录,last_modified_time=23:59:59

ETL 00:00:00开始抽取,记做事务T2,此时T1未提交对T2不可见

事务T1000001提交;


那么该条记录对于ETL来说就丢失了;有什么好的解决方案呢?我现在能想到的就是Change Data Capature了(类似Oracle里的CDCMySQL可以解析binlog来做);欢迎讨论



本文转自MIKE老毕 51CTO博客,原文链接:http://blog.51cto.com/boylook/1298802,如需转载请自行联系原作者



版权声明:本文首发在云栖社区,遵循云栖社区版权声明:本文内容由互联网用户自发贡献,版权归用户作者所有,云栖社区不为本文内容承担相关法律责任。云栖社区已升级为阿里云开发者社区。如果您发现本文中有涉嫌抄袭的内容,欢迎发送邮件至:developer2020@service.aliyun.com 进行举报,并提供相关证据,一经查实,阿里云开发者社区将协助删除涉嫌侵权内容。

分享:
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

其他文章