定时同步数据表的思考

定时任务:

1小时一次:
1、商定取值时间:时间 = min(主服务器时间 - 1小时5分,上次商定的时间 + 1小时)
这里的5分钟我考虑的是最大事物的用时。就是假定所有事物的时间长度不可以超过5分钟。
因为我们在程序中经常是先设置更新时间,然后插入数据库,然后再做些别的(浪费了一些时间),
最后提交了事物。那么根据mvcc模式,非锁定读,是读快照。导致更新时间本应该在本次同步中被同步的,而并没有同步到
(不可见),而下一次的同步时间又大于了这个更新时间。导致会丢失更新。所以每次同步,都多同步5分钟的数据。
就怕丢下这种间隙中的数据。

2、用商定的取值时间进行同步数据。
主服务器数据不可以被删除 只能逻辑删除。

3、对于删除数据的弥补:
通过分页的形式去取本地的id询问远程是否拥有。在删除情况比较低的时候,我们可以先去判断两地的数据量是否相等。

告诉远端服务器给我 1小时5分(这里为什么多了5分钟,而不是刚刚好的一小时。这需要考虑
mysql InnoDB的mvcc导致的问题,非锁定读。取的可能不是最新数据) 以后更新的数据给我
这里以远端服务器的时间为准,并不是客户端传入时间过去。


有个问题 远端服务器突然在某个时刻将时间想前调整了(时间向后调整不会有问题),
那么会导致从服务器的数据丢失更新啊!
解决方案:从服务器在去主服务器取数据的时候,带一个
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值