加入收藏 | 设为首页 | 会员中心 | 我要投稿 长春站长网 (https://www.0431zz.com.cn/)- 媒体智能、开发者工具、运维、低代码、办公协同!
当前位置: 首页 > 站长资讯 > 传媒 > 正文

数据库迁移,要停机发布么?

发布时间:2021-03-04 15:25:25 所属栏目:传媒 来源:互联网
导读:常见的数据迁移的一个流程。一开始,我们的应用都是读写旧的数据库,这个时候我们还没有开启数据迁移。紧接着,我们会有一个新的数据库,一般来说,这个时候,我们会开启双写,什么是双写呢?就是对数据库的写操作,我们既写到旧库,又写到新库。如果担心因

常见的数据迁移的一个流程。一开始,我们的应用都是读写旧的数据库,这个时候我们还没有开启数据迁移。紧接着,我们会有一个新的数据库,一般来说,这个时候,我们会开启双写,什么是双写呢?就是对数据库的写操作,我们既写到旧库,又写到新库。如果担心因为双写而造成的耗时增加,我们可以选择异步同步的模式,但是异步势必增加了系统的复杂性,我们需要把失败的日志记录下来,以便后期进行处理。

在第二步的时候,我们仍然是读取旧数据库的数据,这个时候对线上的业务几乎是没有影响的,接下来,我们可以准备读取新库的数据,为了减小影响,我们可以采用一定的灰度策略,先让部分流量读取新库,然后再慢慢扩大灰度范围,这个时候所有的写请求还是双写的,一旦发现有问题,可以回退到第二步甚至是第一步,减少对业务的影响。当服务稳定下来之后,我们可以去掉对旧库的写入,这样子就能完成一次数据迁
 

人会问,说的容易。那么对于历史数据,怎么迁移到新库呢?这里我们介绍两种常见的方法,一是懒惰迁移,二是主动迁移。什么是懒惰迁移呢?这个是从英文单词Lazy翻译过来的,就是如果这行数据没有被使用到,我们就不管他,如果它被使用到,那么我们就把它迁移过来。一般我们会使用一个key-value来记录下哪些key被懒惰迁移过,当我们更新旧表的时候,如果发现这个key没有被迁移,那么就顺路把他写到新表里面,并且更新下键值数据,表示这个key已经被迁移过了,后面双写的时候,直接双写即可,无需进行数据迁移。

另外一个是主动迁移,有些数据,可能在进行数据迁移的时候就没被访问过,例如用户可能几个月不登录,你不能因为数据迁移就把他抛弃了。所以我们需要对这些冷数据进行数据迁移,简单来说,就是扫取数据库中的存量数据,然后将他们写入新的数据库

(编辑:长春站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读