本文向您介紹如何使用OssImport將數據從第三方儲存(或OSS)遷移到OSS。

工具選擇:單機模式和分布式模式

OssImport有單機模式和分布式模式兩種部署方式。一般建議使用分布式模式。您參考OssImport官網指導文檔,即可完成遷移過程。本文介紹您在整體遷移方案中可能會關注的內容,以及可以參考的官網文檔資源。

遷移方案(從第三方儲存遷移到OSS)

以下步驟可以完成從其它儲存到OSS的無縫切換(參考官網支援的第三方儲存類型OssImport 架構及配置):



具體步驟如下:
  1. 全量遷移T1前的曆史數據,請參考:OssImport 架構及配置
    • 記錄遷移開始時間T1(注意為Unix時間戳記,即自1970年1月1日UTC零點以來的秒數,通過命令date +%s獲取)。
    • 遷移指導說明參考OssImport官網文檔,請參考遷移工具-分布式
  2. 開啟OSS鏡像回源,並將讀寫切換到OSS,遷移源不再新增數據。
    • 步驟1遷移完成後,在OSS控制台開啟OSS鏡像回源功能,回源地址為遷移源(第三方儲存)。
    • 在業務系統讀寫切換到OSS,假設業務系統修改好的時間為T2。
    • 此時T1前的數據從OSS讀取,T1後的數據,OSS利用鏡像回源從第三方服務讀取,而新數據完全寫入OSS。
  3. 快速遷移T1~T2到數據。
    • 在步驟2完成後,第三方儲存不會再新增數據,數據讀寫已切到OSS。
    • 修改設定檔job.cfg的配置項importSince=T1,新發起遷移job,遷移T1~T2數據。
  4. 步驟3完成後,即完成遷移全過程。
    • 步驟3完成後,您業務的所有的讀寫都在OSS上,第三方儲存只是一份曆史數據,您可以根據需要決定保留或刪除。
    • OssImport負責數據的遷移和校驗,不會刪除任何數據。
遷移成本

遷移過程涉及到成本一般有ECS費用、流量費用、儲存費用、時間成本。其中,多數情況下,比如數據超過TB等級,儲存成本和遷移時間成正比,而ECS費用相對流量、儲存費用較小。

環境準備

假設您有如下遷移需求:

需求項 需求情況
遷移源 AWS S3東京
遷移目的 OSS香港
數據量 500TB
遷移時間要求 1周內完成遷移

您需要準備的環境:

環境項 說明
開通OSS 開通OSS步驟如下:
  1. 使用您的帳號建立香港地域的OSS Bucket。
  2. 在RAM控制台建立子帳號,並授權該子帳號可訪問OSS。保存AccessKeyID和AccessKeySecret。
購買ECS 購買OSS同區域(香港)的ECS,一般普通的2核4G機型即可,如果遷移後ECS需釋放,建議按需購買ECS。正式遷移時的ECS數量,請參考關於遷移用的ECS數量
配置OssImport
说明
destDomain參數,即OSS目的endpoint,建議設定為OSS內網的endpoint,避免從ECS數據上傳到OSS時產生外網流量費用。具體的endpoint,請參考訪問網域名稱和資料中心
遷移過程
  1. 在ECS上搭建OssImport分布式環境。
  2. 使用OssImport從東京AWS S3下載數據到ECS(香港),建議使用外網。
  3. 使用OssImport從ECS(香港)將數據上傳到OSS(香港),建議使用內網。
關於遷移用的ECS數量

您需根據遷移需求,計算您需要用來做遷移的ECS數量:

  • 假設您需要遷移的數據量是X TB,要求遷移完成時間Y天,單台遷移速度Z Mbps(每天遷移約Z/100 TB數據)。

  • 則正式遷移時,ECS大致需要X/Y/(Z/100)台。

假設單台ECS遷移速度達到200Mbps(即每天約遷移2TB數據)。則上面Case中,ECS約需36台(500/7/2)。

OssImport遷移步驟

配置參考

您可以閱讀官網指導文檔,了解配置定義OssImport 架構及配置、操作步驟分布式部署,在開始前請關注如下資訊:

  • OssImport下載:在Master下載OssImport分布式版,且master、workers都使用同樣的ssh帳號、密碼。(worker上不用單獨下載OssImport,運行deploy命令時,OssImport會分發到worker上,請參考分布式部署。)

  • Java環境:確認Master和worker都已安裝。

    说明
    作為worker的ECS也需要安裝Java。
  • 設定workdir:通過conf/sys.properties的配置項workingDir指定,請參考分布式部署
    说明
    workdir的設定請參考官網文檔,不要設定成OssImport包所在的路徑,同時盡量不要設定為已有內容的目錄。
  • 並發控制:conf/job.cfg的配置項taskObjectCountLimitconf/sys.properties的配置項workerTaskThreadNum,請參考OssImport 架構及配置

    如果小檔案比較多,單台ECS遷移速度上不去且CPU load不高,可以參考調高workerTaskThreadNum、調低taskObjectCountLimit查看效果。

  • 其他動作過程遇到問題,一般都是配置問題,請參考分布式部署,並可以查看master和worker上workdir/Logs的記錄檔。
前期測試

建議您先搭建小型環境(比如2~3台ECS),遷移少量數據以驗證配置正確與否。單台ECS遷移頻寬能否達到預期,比如200Mbps,如您對遷移時間明確無要求,可不關注。

頻寬查看:您可使用 iftopNload(需先安裝,如 yum install ***),ECS控制台頻寬統計有延時。
说明
如果測試時檔案數目較少,可能無法驗證並發性,可以減少參數taskObjectCountLimit,比如減少到:檔案數/workerTaskThreadNum/worker總數。

遷移步驟

  1. 遷移曆史數據。
    • 清任務、清配置。
    • 操作過程請參考分布式部署
    • 開始遷移。
    • 您可在OSS控制台OSS Bucket中查看實際遷移完成的數據。
  2. 設定鏡像回源,客戶業務系統讀寫切到OSS。
    • OSS控制台開啟OSS鏡像回源,回源地址為遷移源(第三方儲存)。
    • 客戶業務系統讀寫切換到OSS,假設業務系統修改好的時間為T2,則T2後不再有新數據寫到遷移源。
  3. 遷移剩餘的數據。

    修改job.cfg配置項importSince=T1,請參考OssImport 架構及配置,遷移剩餘數據(T1~T2)特殊情況下,也可以使用job.cfgimportSince = 0, isSkipExistFile=true進行再次遷移,請參考OssImport 架構及配置

關於遷移速度
  • 單台遷移速度:如單台遷移速度不理想(比如小於200Mbps、且CPU load不高時),可參考官網文檔和上文,優化並發控制參數,即conf/job.cfg的配置項taskObjectCountLimitconf/sys.properties的配置項workerTaskThreadNum

  • 遷移ECS數量:參考ECS數量估算(相對於流量、儲存、時間成本,ECS費用,在遷移總成本中佔比較少)。加大ECS數量,會減少遷移時間。

OssImport分布式相關官網文檔

序號 官網文檔
1 OssImport 分布式部署
2 OssImport 架構及配置
3 OssImport 最佳實踐
4 OssImport 常見問題