有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,如需转载请自行联系原作者



相关文章
|
6月前
恢复时间目标(RTO, Recovery Time Objective)缩短
恢复时间目标(RTO, Recovery Time Objective)缩短
174 2
|
安全 数据库
2022小美赛D题Whether Wildlife Trade Should Be Banned for a Long Time野生动物贸易是否应该被长期禁止思路分享
2022小美赛D题Whether Wildlife Trade Should Be Banned for a Long Time野生动物贸易是否应该被长期禁止思路分享
2022小美赛D题Whether Wildlife Trade Should Be Banned for a Long Time野生动物贸易是否应该被长期禁止思路分享
如何使用time_expire绝对超时时间-参数解读系列
说明:    time_expire,绝对超时时间,格式为yyyy-MM-dd HH:mm。注:1)以支付宝系统时间为准;2)如果和timeout_express参数同时传入,以time_expire为准。
2200 12
|
Java API 定位技术
放弃 Calender优雅地使用Joda-Time吧
既然无法摆脱时间,为何不设法简化时间处理? 在编写企业应用程序时,我常常需要处理日期。并且在我的最新项目中日期计算尤其重要。 使用 java.util.Calendar 让我有些不安。
1061 0
|
网络协议 Perl 前端开发