数据库同步⼤数据量表之增量同步实现⽅案
遇到的需求:两个服务器上的两个不同类型的数据库,分别是源pg库-->⽬标库的MySQL。
数据量:4亿条数据。关于西湖的古诗
同步⽅案:同步每⽇新增和修改,删除的数据条。初一开学第一天作文
九年级物理期中试卷由于之前同步是全量同步,每天都需要定时全量同步,不仅时间消耗长,也影响下游业务(查询慢,有时还会锁表)。全量同步使⽤的java 的定时任务,多线程的⽅式进⾏同步,发现某⼀天同步任务执⾏不完的情况,修改为增量同步⽅案。
刑事拘留最多多少天增量同步要求:
1. 有⼀个每天同步的执⾏时间点 - >截取点(每天都是从这个最新截取点开始同步)我取的是⾮空字段(更新时间UPDATE_DATE),
结婚新人的祝福语因为新增和修改都会⾃动更新这个时间点,可以确保⼤于上⼀个截取点的数据是没有同步的(包含新增和修改数据)。
2. 删除的数据(分为两种):逻辑删除和物理删除其中逻辑删除可以使⽤最新截取点开始查询出标志出删除⾏的唯⼀ID;物理删除需要
在源库上做⼀个触发器,删除的数据存到另个表中,在同步这个表即可。
这种增量设计涉及到的表结构:
1. pg库
1. test----要同步的业务表
无什么无什么的词语2. test_del---物理删除记录表
3. min_updatedate--同步结束的最⼤时间
4. max_updatedate--同步的最⼤时间(取得是任务开始时的时间,后期排查问题使⽤,此表可⽤可不⽤,)
2. mysql
1. test
2. test_del
3. min_updatedate
任务顺序:
1. 第⼀个任务:同步min_updatedate(需要有⼀个默认的⼀条记录)。mysql --> pg库
2. 第⼆个任务:⾸先以当前pg 库 当前时间点 ,插⼊⼀条记录 ; 同步业务表; where update_date> min_updatedate and
update_date<max_updatedate (由于使⽤了多线程的⽅式,中间可以把时间分成多个时间⽚段,可以减少单线程拉去的数据量过⼤,出现服务oo;虽然这样也会出现某个时间段出现⼤量数据(思路有限))。同步完数据,需要在mysql 数据库 min_updatedate 表中 插⼊⼀条业务表中最⼤更新时间记录(select max(update_date) from test )。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论