如何将线上的数据热迁移到七牛云?

最近更新时间:2017-08-30 17:45:37

想将线上的数据迁移到七牛云,如何在不影响现有服务的前提下进行热迁移?

方案一:完全使用七牛镜像存储功能

注意:此方法仅针对少量数据的网站,对于数据量比较大(尤其是 UGC -- 用户产生内容)的网站,建议用下面的方案二

利用七牛提供的镜像存储功能,可以非常简单地将源站的数据 被动 地同步到七牛云存储中,所谓 被动同步 即——只有在资源被访问时,七牛才会回源站获取一次,此后对该资源的访问都不会再发生回源动作,而是直接从七牛这里拿到数据。

有人可能会问,既然七牛对一个资源只会发生一次回源请求,后面的都不回源获取,那么如果源站的资源发生了变动,该如何将新的资源同步到七牛?这里我们提供两个方案:

  1. 调用七牛提供的 delete 接口,将变化的资源删除既可。这样七牛在下一次被访问的时候,会再次回源获取。如果资源变动数量很小,可以更加简单地在开发者后台的内容管理中,或者使用七牛提供的 qboxrsctl 命令行工具直接删除已变化的文件既可。

  2. 调用七牛提供的 prefetch 接口,该接口会比 delete 接口多做一个 预取 的操作,即在该接口调用时,七牛会立刻回源获取一次新的数据,而不是等到下一次访问的时候才去源站获取。

PS:

  1. 登录开发者后台开启镜像存储功能

  2. qrsctl 工具获取方式:http://developer.qiniu.com/docs/v6/tools/qboxrsctl.html#download

  3. delete 接口相关文档

  4. prefetch 接口相关文档

方案二:七牛镜像存储功能 + 一套迁移方案

方案一适用于将源站保留的前提下进行数据的热迁移,同时享受到七牛提供的加速和数据处理服务。如果您想将源站的数据完全一下子迁移到七牛,而源站的数据量又十分庞大,担心在数据迁移的过程中出现源站的资源被动态更新,但导入到七牛的数据还是老数据的情况,那么可以使用如下的数据迁移方案。

如何在不影响现有服务的前提下,将源站的数据完整地迁移到七牛呢?我们提供一套成熟的迁移方案供您参考:

  1. 第一步,开启镜像存储,并将用户对源站资源的访问切换到从七牛这里访问,同时在源站保持使用 prefetch 接口预取更新变化了的资源。

  2. 第二步,将资源的上传动作从源站切换到七牛,这样用户对资源的修改动作会直接更新七牛中存储的内容,此时源站的资源数据已经变成一个静态的集合,因此可以撤销第一步中对 prefetch 接口的使用。

  3. 第三步,放心地将源站的静态资源数据增量地导入七牛的存储,存储中已有的资源不再导入,只导入存储中还不存在的资源(我们已有针对此类导入的成熟工具提供您直接使用)。

如上几步的示意图如下:

数据热迁移示意图

以上内容是否对您有帮助?
  • 提交工单