CTI論壇(ctiforum)2月11日消息(記者 李文杰): 無(wú)論是計劃擁抱云服務(wù)還是打算從正在使用的云服務(wù)切換到另外一家,這其中數據的遷移是很關(guān)鍵的一步。針對各種可能出現的問(wèn)題,七牛提出多種數據遷移解決方案,助力企業(yè)順利完成數據遷移。在遷移過(guò)程中可能遇到以下問(wèn)題:
1.數據遷移文件路徑問(wèn)題。
2.數據遷移過(guò)程中的速率問(wèn)題。
3.寄送磁盤(pán)后的遷移過(guò)程中,上傳數據不完整。
針對這些問(wèn)題,一個(gè)考慮全面的遷移系統就顯得尤為重要,尤其是數據遷移的速度和安全性。首先七牛雖然為非結構化存儲,但是仍然支持帶文件路徑進(jìn)行上傳,不影響原先數據的訪(fǎng)問(wèn)規則;其次,數據遷移的速率基本不受網(wǎng)絡(luò )帶寬影響,主要受到磁盤(pán)讀寫(xiě)速度的限制;上傳數據不完整,七牛會(huì )主動(dòng)檢測數據遷移的完整性,通過(guò)鏡像存儲也可以補全未上傳成功的數據。一般場(chǎng)景有以下幾種:
場(chǎng)景一:自有機房遷移到七牛且數據少量
有兩種方案可以選擇:
一、完全使用七牛鏡像存儲功能
利用七牛提供的鏡像存儲功能,可以非常簡(jiǎn)單地將源站的數據被動(dòng)地同步到七牛云存儲中,所謂被動(dòng)同步即 -- 只有在資源被訪(fǎng)問(wèn)時(shí),七牛才會(huì )回源站獲取一次,此后對該資源的訪(fǎng)問(wèn)都不會(huì )再發(fā)生回源動(dòng)作,而是直接從七牛這里拿到數據。鏡像存儲使用方式如下:
假設源站所有的圖片,放在一個(gè)叫 img.example.com 子域里。
1.在七牛上建立一個(gè)鏡像bucket,設定源站為 img.example.com。假設鏡像 bucket是example-img,鏡像 bucket 對應的域名為 example-img.qiniudn.com。
2.將所有對外使用的圖片的域名改為 example-img.qiniudn.com。
3.如果網(wǎng)站數據是 UGC(用戶(hù)產(chǎn)生內容)的,調整上傳流程,傳到七牛的鏡像 bucket。這樣源站就變成只讀。
如此就完成整個(gè)遷移過(guò)程。此時(shí) img.example.com 這個(gè)源站就可以廢棄不用了。
二、借助七牛提供的數據遷移工具qrsync公網(wǎng)間直傳
qrsync 是一個(gè)根據七牛API實(shí)現的簡(jiǎn)易命令行輔助上傳同步工具,支持斷點(diǎn)續上傳,增量同步,它可將用戶(hù)本地的某目錄的文件同步到七牛,同步或上傳幾百GB甚至上TB的文件毫無(wú)壓力。
場(chǎng)景二:自有機房遷移到七牛但數據總量大
在場(chǎng)景二下,用戶(hù)可以將數據先備份到本地,然后寄送數據硬盤(pán)給七牛,由七牛通過(guò)內網(wǎng)將數據同步到七牛云端;或者七牛寄送空數據硬盤(pán),客戶(hù)備份數據后寄回七牛,并由七牛通過(guò)內網(wǎng)上傳。這其中,由于數據量巨大,考慮因素需要更多,七牛也會(huì )專(zhuān)為該類(lèi)客戶(hù)定制化數據遷移系統。
在寄硬盤(pán)的過(guò)程中,為了保持新數據也被存到七牛上面,以及試用七牛的服務(wù),可以使用鏡像存儲。
場(chǎng)景三:從任意云服務(wù)遷移到七牛且數據少量
在場(chǎng)景三下,可以有兩種方案進(jìn)行數據的遷移工作。
一、完全使用鏡像存儲,無(wú)縫將數據遷移到七牛的空間中,具體使用方式和場(chǎng)景一中鏡像存儲描述部分一致。
二、使用七牛數據遷移定制化工具,在七牛的技術(shù)支持的協(xié)助下,用工具將數據同步到七牛。
場(chǎng)景四:從任意云服務(wù)遷移到七牛但數據總量大
如果想從某一云服務(wù)切換到七牛,可以先從正在使用的云服務(wù)備份數據到本地,通過(guò)磁盤(pán)/服務(wù)器的遞送,直接上傳數據到七牛。
數據導入的同時(shí)依然可以使用鏡像存儲配合數據的遷移,具體步驟如下:
1.開(kāi)啟鏡像存儲,并將用戶(hù)對源站資源的訪(fǎng)問(wèn)切換到從七牛這里訪(fǎng)問(wèn),同時(shí)在源站保持使用 prefetch 接口預取更新變化了的資源。
2.將資源的上傳動(dòng)作從源站切換到七牛,這樣用戶(hù)對資源的修改動(dòng)作會(huì )直接更新七牛中存儲的內容,此時(shí)源站的資源數據已經(jīng)變成一個(gè)靜態(tài)的集合,因此可以撤銷(xiāo)第一步中對 prefetch 接口的使用。
3.放心地將源站的靜態(tài)資源數據增量地導入七牛的存儲,存儲中已有的資源不再導入,只導入存儲中還不存在的資源(七牛已有針對此類(lèi)導入的成熟工具提供用戶(hù)直接使用)。
4.關(guān)閉源站
使用鏡像存儲配合數據的遷移步驟圖
[數據遷移典型案例剖析]
七牛客戶(hù)陌陌的數據量非常大,如果采用常用的傳輸辦法,整個(gè)遷移過(guò)程要耗時(shí)半年,并且會(huì )嚴重影響線(xiàn)上的業(yè)務(wù)。為此,七牛為陌陌制定了個(gè)性化的數據遷移方案。
在遷移過(guò)程中可能遇到以下問(wèn)題:
1.硬盤(pán)遷移過(guò)程中,網(wǎng)絡(luò )傳輸中的數據出錯。
2.傳輸過(guò)程中的速率問(wèn)題。拿陌陌舉例,如果采用常用的傳輸辦法,整個(gè)遷移過(guò)程要耗時(shí)半年,并且會(huì )嚴重影響線(xiàn)上的業(yè)務(wù)。
3.硬盤(pán)寄送過(guò)程以及使用過(guò)程中的磁盤(pán)損壞。
4.存儲數據文件對數據庫的合并。如果按照傳統的數據庫寫(xiě)入方式,需要若干天,會(huì )給客戶(hù)數據庫以及云服務(wù)的數據庫帶來(lái)不必要的巨大壓力。
針對這些問(wèn)題,一個(gè)考慮全面的遷移系統就顯得尤為重要:
1.針對客戶(hù)的業(yè)務(wù)數據模型,定制數據格式,進(jìn)行存儲數據的導入。
2.數據庫結構需要有強擴展性,可以實(shí)現瞬時(shí)合并。
3.遷移系統充分考慮不可控因素,比如硬盤(pán)損壞,斷電等情況。
至此,七牛已經(jīng)成為陌陌非常好的合作伙伴,支撐了他們近兩億用戶(hù)的數據存儲,訪(fǎng)問(wèn)加速與圖片處理。