背景:
数据库模型升级,原来的传统的字段型,改成了一个字段的KV存储结构。 服务不能中断, 两个数据库要同时存在一段时间,同时对外服务一点时间。 A库是老库, S库是新库。
问题:
如何保证A库和S库的同步?
采用的方式是: A库更新后,发消息出来。 S库的代码接收到消息,更新S库。
遇到的问题:
1. 从表的更新消息先过来了。
很多数据有主从表(或者是主数据表+关系表),经常出现主数据的消息没有过来,但是从数据过来了。
解决办法:
从数据过来时,先check主数据是否过来了, 如果S库中没有主数据, 就先同步阻塞触发主数据同步。
2. 更新丢失
从S库入口更新完成后,同时A库的消息过来更新了S库。 导致S库的更新丢失。