如何将线上的数据热迁移到七牛云?
想将线上的数据迁移到七牛云,如何在不影响现有服务的前提下进行热迁移?
方案一:完全使用七牛镜像存储功能
注意:此方法仅针对少量数据的网站,对于数据量比较大(尤其是 UGC -- 用户产生内容)的网站,建议用下面的方案二
利用七牛提供的镜像存储功能,可以非常简单地将源站的数据 被动 地同步到七牛云存储中,所谓 被动同步 即——只有在资源被访问时,七牛才会回源站获取一次,此后对该资源的访问都不会再发生回源动作,而是直接从七牛这里拿到数据。
有人可能会问,既然七牛对一个资源只会发生一次回源请求,后面的都不回源获取,那么如果源站的资源发生了变动,该如何将新的资源同步到七牛?这里我们提供两个方案:
调用七牛提供的
delete
接口,将变化的资源删除既可。这样七牛在下一次被访问的时候,会再次回源获取。如果资源变动数量很小,可以更加简单地在开发者后台的内容管理中,或者使用七牛提供的 qboxrsctl 命令行工具直接删除已变化的文件既可。调用七牛提供的
prefetch
接口,该接口会比delete
接口多做一个 预取 的操作,即在该接口调用时,七牛会立刻回源获取一次新的数据,而不是等到下一次访问的时候才去源站获取。
PS:
登录开发者后台开启镜像存储功能
qrsctl 工具获取方式:http://developer.qiniu.com/docs/v6/tools/qboxrsctl.html#download
delete
接口相关文档prefetch
接口相关文档
方案二:七牛镜像存储功能 + 一套迁移方案
方案一适用于将源站保留的前提下进行数据的热迁移,同时享受到七牛提供的加速和数据处理服务。如果您想将源站的数据完全一下子迁移到七牛,而源站的数据量又十分庞大,担心在数据迁移的过程中出现源站的资源被动态更新,但导入到七牛的数据还是老数据的情况,那么可以使用如下的数据迁移方案。
如何在不影响现有服务的前提下,将源站的数据完整地迁移到七牛呢?我们提供一套成熟的迁移方案供您参考:
第一步,开启镜像存储,并将用户对源站资源的访问切换到从七牛这里访问,同时在源站保持使用
prefetch
接口预取更新变化了的资源。第二步,将资源的上传动作从源站切换到七牛,这样用户对资源的修改动作会直接更新七牛中存储的内容,此时源站的资源数据已经变成一个静态的集合,因此可以撤销第一步中对
prefetch
接口的使用。第三步,放心地将源站的静态资源数据增量地导入七牛的存储,存储中已有的资源不再导入,只导入存储中还不存在的资源。