我们存储在数据库中的数据大致可以分为两类:
时效性数据 永久性数据
什么是时效性数据?例如,饿了么的优惠券,滴滴出行的免费骑车券。对应的永久性数据就是一些日常数据,例如,订单信息,用户信息等等。
时效性数据的迁移方案比较简单,直接双写就可以了。我们以滴滴出行的7天免费骑车券为例:

假设我们的数据要从MySQL迁移到MongoDB,那么我们直接双写MySQL和MongoDB即可,写多久呢?时效性多久我们就写多久。双写完成后,原数据库中的数据就已经过期了,我们直接干掉,然后读写新数据库就行了。示意图如下:

时效性数据的迁移相对比较简单。接下来我们看看永久性数据的迁移,毕竟这一块数据是大头。
永久性数据的迁移稍微复杂点,我们需要引进一个中间存储(消息队列)。示意图如下:

首先我们把从库摘下来,然后将从库中的数据导入到MongoDB,同时数据双写到MySQL和消息队列。从库中的数据导入完成后,停止写入到MySQL,然后把消息队列中数据写入到MongoDB。示意图如下:

当将消息队列中的数据同步完成后就可以直接读写MongoDB了。
好的,那么关于数据库数据无缝迁移方案就讨论到这里。
文章转载自Alleria Windrunner,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




