一、前言
这部分主要记录 datax 实现增量同步的方案。
二、核心思路
结合datax 提供的preSql、 postSql以及占位符,外加另外一张表同步日志表来记录相关同步信息。
三、版本迭代
3.1 初版本
where tbq.opera_date > cast(date_format(DATE_SUB(NOW(), interval 5 minute), '%Y%m%d%H%i%s000') as unsigned)"
这个版本,是直接以执行时时间为时间戳。
缺点,显而易见。当同步时间比较久的时候,5 分钟就远远不够。
3.2 版本
阅读 datax 的使用说明里,对于 mysql 的写,支持 presql 和 postsql 的方式。

因此考虑新建一个表,
- 在同步之前,利用 preSql,往该表中插入一条数据记录,记录同步开始时间。
- 同步完成后,利用 postSql 更新当前同步的这条记录,记录同步结束时间
- 读取时,从该表中获取上次同步开始时间的数据,作为同步时间戳。
最终 json 脚本变成如下
{
"job"

本文介绍了如何使用DataX实现数据增量同步,通过版本迭代改进时间戳管理,从最初的基于执行时间到使用preSql和postSql记录开始和结束时间,确保一致性。最后,引入UUID占位符以提高同步脚本的灵活性。
最低0.47元/天 解锁文章
6万+

被折叠的 条评论
为什么被折叠?



