欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

定时同步数据表的思考

程序员文章站 2022-04-13 21:30:22
...
定时任务:

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

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

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

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


有个问题  远端服务器突然在某个时刻将时间想前调整了(时间向后调整不会有问题),
那么会导致从服务器的数据丢失更新啊!
解决方案:从服务器在去主服务器取数据的时候,带一个