作者:邱walz_297 | 来源:互联网 | 2024-11-14 18:12
无论是在迁移到云服务还是更换云服务商的过程中,数据迁移都是一个至关重要的环节。本文将探讨数据迁移中可能遇到的问题及解决方案,包括路径问题、速度问题和数据完整性等。
无论是初次迁移到云服务还是从现有云服务切换到其他平台,数据迁移都是一个关键步骤。在这个过程中可能会遇到以下问题:
1. 数据迁移文件路径问题。
2. 数据迁移过程中的速度问题。
3. 硬盘寄送后数据上传不完整。
针对这些问题,一个全面考虑的迁移系统尤为重要,特别是数据迁移的速度和安全性。首先,尽管七牛主要提供非结构化存储,但仍支持带有文件路径的上传,不会影响原有数据的访问规则;其次,数据迁移的速度主要受磁盘读写速度的影响,而非网络带宽;最后,七牛会自动检测数据迁移的完整性,通过镜像存储也可以补全未成功上传的数据。以下是几种常见场景的解决方案:
场景一:本地机房迁移到七牛且数据量较小
有两种方案可供选择:
1. 完全使用七牛镜像存储功能
利用七牛提供的镜像存储功能,可以轻松将源站的数据被动同步到七牛云存储中。被动同步意味着只有在资源被访问时,七牛才会从源站获取一次数据,之后对该资源的访问将直接从七牛获取。具体操作如下:
假设源站的所有图片都放在一个名为 img.example.com 的子域中。
1. 在七牛上创建一个镜像 bucket,设置源站为 img.example.com。假设镜像 bucket 名为 example-img,其对应的域名为 example-img.qiniudn.com。
2. 将所有对外使用的图片域名改为 example-img.qiniudn.com。
3. 如果网站数据是 UGC(用户生成内容),调整上传流程,上传到七牛的镜像 bucket。这样源站就变为只读。
如此即可完成整个迁移过程,此时 img.example.com 这个源站就可以停用了。
2. 使用七牛提供的数据迁移工具 qrsync 进行公网直传
qrsync 是一个基于七牛 API 实现的简易命令行辅助上传同步工具,支持断点续传和增量同步,可以将用户本地目录的文件同步到七牛,即使同步或上传几百 GB 甚至几 TB 的文件也毫无压力。
场景二:本地机房迁移到七牛且数据量较大
在这种情况下,用户可以先将数据备份到本地,然后将数据硬盘寄送给七牛,由七牛通过内网将数据同步到云端;或者由七牛寄送空数据硬盘,用户备份数据后再寄回七牛,由七牛通过内网上传。由于数据量巨大,需要考虑的因素更多,七牛会为这类客户提供定制化的数据迁移系统。
在寄送硬盘的过程中,为了确保新数据也能同步到七牛,可以使用镜像存储功能。
场景三:从任意云服务迁移到七牛且数据量较小
在这种情况下,有两种方案可以进行数据迁移:
1. 完全使用镜像存储,无缝将数据迁移到七牛的空间中,具体使用方式与场景一中的镜像存储部分相同。
2. 使用七牛数据迁移定制化工具,在七牛技术支持的帮助下,将数据同步到七牛。
场景四:从任意云服务迁移到七牛且数据量较大
如果想从某一云服务切换到七牛,可以先从当前使用的云服务备份数据到本地,通过磁盘/服务器的寄送,直接上传数据到七牛。
在数据导入过程中仍然可以使用镜像存储配合数据迁移,具体步骤如下:
• 开启镜像存储,并将用户对源站资源的访问切换到从七牛访问,同时在源站使用 prefetch 接口预取更新的资源。
• 将资源的上传行为从源站切换到七牛,这样用户对资源的修改会直接更新七牛中存储的内容,此时源站的资源数据已变为一个静态集合,因此可以取消对 prefetch 接口的使用。
• 安心地将源站的静态资源数据增量地导入七牛的存储,已存在的资源不再导入,只导入存储中不存在的资源(我们已有针对此类导入的成熟工具供您直接使用)。
• 关闭源站(开玩笑的 :P)
【数据迁移典型案例分析】
七牛客户陌陌的数据量非常大,如果采用常规的传输方法,整个迁移过程需要耗时半年,并且会严重影响线上业务。为此,七牛为陌陌制定了个性化的数据迁移方案。
在迁移过程中可能会遇到以下问题:
- 硬盘迁移过程中,网络传输中的数据错误。
- 传输过程中的速度问题。以陌陌为例,如果采用常规的传输方法,整个迁移过程需要耗时半年,并且会严重影响线上业务。
- 硬盘寄送过程及使用过程中的磁盘损坏。
- 存储数据文件对数据库的合并。如果按照传统的数据库写入方式,需要几天时间,会给客户数据库及云服务的数据库带来不必要的压力。
针对这些问题,一个全面考虑的迁移系统尤为重要:
- 根据客户的业务数据模型,定制数据格式,进行存储数据的导入。
- 数据库结构需要具有强扩展性,能够实现瞬间合并。
- 迁移系统充分考虑不可控因素,如硬盘损坏、断电等情况。
最终,七牛成为陌陌的重要合作伙伴,支持了他们近两亿用户的数据存储、访问加速和图片处理。