[實戰]生產環境阿里雲-OSS資源遷移

項目場景

須要將舊的阿里雲帳號裏的OSS資源遷移至新的阿里雲主帳號內的OSS。html

使用工具OssImport

OssImport工具能夠將本地、其它雲存儲的數據遷移到OSS,它有如下特色:

支持的豐富的數據源,有本地、七牛、百度BOS、AWS S三、Azure Blob、又拍雲、騰訊雲COS、金山KS三、HTTP、OSS等,並可根據須要擴展;
支持斷點續傳;
支持流量控制;
支持遷移指定時間後的文件、特定前綴的文件;
支持並行數據下載、上傳;
支持單機模式和分佈式模式,單機模式部署簡單使用方便,分佈式模式適合大規模數據遷移。

OssImport有 單機模式 和 分佈式模式 兩種部署方式。

對於小於 30TB 的小規模數據遷移,單機模式便可完成。
對於大規模的數據遷移,請使用分佈式模式。

運行環境

java version "1.8.0_162"

CentOS Linux release 7.4.1708 (Core)
內核版本    3.10.0-693.2.2.el7.x86_64

下載安裝工具

# wget http://gosspublic.alicdn.com/ossimport/standalone/ossimport-2.3.1.zip?spm=a2c4g.11186623.2.4.Y7BlCt&file=ossimport-2.3.1.zip
# cd /usr/local && mkdir ossimport
# unzip ossimport-2.3.1.zip -d ossimport/

單機模式下文件結構以下:

ossimport
├── bin
│ └── ossimport2.jar  # 包括Master、Worker、Tracker、Console四個模塊的總jar
├── conf
│ ├── local_job.cfg   # 單機Job配置文件
│ └── sys.properties  # 系統運行參數配置文件
├── console.bat         # Windows命令行,能夠分佈執行調入任務
├── console.sh          # Linux命令行,能夠分佈執行調入任務
├── import.bat          # Windows一鍵導入,執行配置文件爲conf/local_job.cfg配置的數據遷移任務,包括啓動、遷移、校驗、重試
├── import.sh           # Linux一鍵導入,執行配置文件爲conf/local_job.cfg配置的數據遷移任務,包括啓動、遷移、校驗、重試
├── logs                # 日誌目錄
└── README.md           # 說明文檔,強烈建議使用前仔細閱讀

其中:

Job:用戶經過提交的數據遷移任務,對用戶來講一個任務對應一個配置文件job.cfg。
Task:Job按照 「數據大小」 和 「文件個數」 能夠分紅多個 Task ,每一個 Task 遷移部分文件。Job切分紅Task的最小單位是文件,同一個文件不會切分到多個Task中。

注意:
執行命令時請保證工做目錄爲 `import.sh` 的同級目錄,即直接執行 bash import.sh

sys.properties 系統運行參數

/usr/local/ossimport/conf/sys.propertiesjava

參照 官方文檔七牛雲存儲

local_job.cfg 數據遷移任務配置

/usr/local/ossimport/conf/sys.propertiesbash

參照 官方文檔網絡

配置文件示例

根據實際項目選擇對應的job.cfg 官方文檔併發

須要用到能操做OSS資源的受權AccessKey

這裏僅僅以源OSS爲例,目標OSS剛須要受權讀寫OSS權限。
image分佈式

image

如下配置爲本次遷移的實際配置文件

遷移具體場景
從A帳號遷入B帳號ide

A 帳號下的OSS Bucket爲wdbox >> B 帳號下的OSS Bucket爲sili-pr工具

#是否打開增量模式
isIncremental=false

#同步源類型
srcType=oss

#源access key,能夠在阿里雲-訪問控制-用戶管理  新創建一個用戶並建立AccessKey,並受權對OSS只讀便可。這裏填寫AccessKey ID
srcAccessKey=L**********m

#源secrect key,這裏填寫AccessKeySecret
srcSecretKey=9****************7

#源endpoint
#1.oss: 從控制檯獲取域名(非帶bucket前綴的二級域名),域名列表參考https://help.aliyun.com/document_detail/31834.html; 例:"srcDomain=http://oss-cn-hangzhou-internal.aliyuncs.com"; 若是用阿里雲ecs虛擬機作遷移的,請使用internal域名,不計費且不受虛擬機帶寬限制(非虛擬機沒法使用);例:http://oss-cn-hangzhou-internal.aliyuncs.com  
#內網流量不計費。
srcDomain=http://oss-cn-shenzhen-internal.aliyuncs.com

#源bucket名字,不須要加上"/"
srcBucket=wdbox

#源前綴,默認爲空,若是srcType=local,則此目錄是本地目錄,若是是其餘類型,則是源Bucket裏須要同步的Object的前綴,注意若是是本地目錄,須要完整目錄路徑(以'/'進行分割而且以'/'結尾,例: c:/example/)
destPrefix=

##############################################################同步目的端設置################################################################
#目的 access key
destAccessKey=L*************P

#目的 AccessKeySecret
destSecretKey=n***********************e

#目的endpoint,請根據您的實際oss區域填寫,默認爲杭州的域名,若是用阿里雲ecs虛擬機作遷移的,請使用internal域名,不計費且不受虛擬機帶寬限制(非虛擬機沒法使用);例:http://oss-cn-hangzhou-internal.aliyuncs.com
#注意:域名裏不要帶上bucket前綴,oss域名幫助頁面:https://help.aliyun.com/document_detail/31837.html  這裏是採用了目標OSS所在的VPC網絡內的ECS主機,因此,採用內部地址則免流量。
destDomain=http://oss-cn-shenzhen-internal.aliyuncs.com

#目的bucket,不須要加上"/"
destBucket=sili-pr

#目標前綴,默認爲空,直接放在bucket下(若是要將數據同步到oss的某個目錄下,請以'/'結尾),注意:oss不支持以 '/' 做爲文件的開頭,因此destPrefix請不要配置以'/'作爲開頭
#一個本地文件路徑爲 srcPrefix + relativePath的文件,遷移到oss的路徑爲destDomain/destBucket/destPrefix + relativePath
#一個雲端文件路徑爲 srcDomain/srcBucket/srcPrefix + relativePath的文件,遷移到oss的路徑爲destDomain/destBucket/destPrefix + relativePath
destPrefix=

##############################################################任務配置,沒有特殊需求不須要修改#################################################
#job名字,每一個任務惟一,單機模式下請不要修改此項
jobName=local_test

#job類型(import/audit),import爲同步數據到oss,audit爲校驗源端數據和oss數據是否一致
jobType=import

#只導入源文件最後修改時間大於該時間的數據,默認爲0,這個時間爲unix時間戳(秒數)
importSince=0

#在校驗時,若是文件的最後修改時間大於該值,則跳過此文件的校驗,默認值0爲關閉該功能,全部文件都須要校驗,這個時間爲unix時間戳(秒數),jobType爲audit時此項不生效
lastModify=0

#數據遷移時,是否跳過已經存在的文件。當設置爲true時,根據文件的size和LastModifedTime判斷是否跳過;爲false時,老是覆蓋OSS上已有文件。jobType爲audit時此項不生效。
isSkipExistFile=false

# 每一個子任務最大的文件個數限制,這個會影響到任務執行的並行度,通常配置爲總的文件數/120
taskObjectCountLimit=4

#每一個子任務下載的最大文件大小限制(bytes)
taskObjectSizeLimit=1000000000

#並行掃描文件列表的線程數,隻影響掃描文件的效率,沒有特殊需求不要修改
scanThreadCount=1

#最大容許並行掃描目錄的深度,默認爲1就是隻能在頂級目錄間並行掃描,沒有特殊需求不要修改,隨意配置的過大會致使任務沒法正常運行
maxMultiThreadScanDepth=1

#單個大文件分片上傳併發數,默認超過150MB爲大文件,分片爲50MB,srcType=local時有效,其它狀況該配置項無效
uploadThreadNumPerLargeFile=3

#大於該值的文件使用分片上傳,不然使用普通上傳,請配置大於1MB以上;有效配置值如:50m/1024m/5g
multipartUploadThreshold=150m

#分配上傳時分片大小,請配置大於100k的數據,不然無效,採用默認值50MB;有效配置值如:500k/50m/2g
multipartUploadPartSize=50m

#存儲在OSS上的數據否加密,默認不加密
isServerSideEncryption=false

#local模式時,連接文件是否上傳,默認不上傳
isAllowSymbolicLink=false

# 七牛雲存儲獲取Meta的方式,有效值head和stat,默認使用stat;head經過HTTP HEAD請求獲取,stat經過BucketManager.stat
getObjectMetaMode=stat

#數據遷移後是否進行數據的正確性校驗,默認校驗
isAuditAfterImport=true 

#數據校驗方式,有效值爲simple/general/detailed,默認值general;simple只校驗文件的size,general校驗文件的size/lastModify/header,detailed檢驗文件的CRC或MD5,開發中
auditMode=general

運行任務

# bash import.sh

image

能夠看到新帳號下的sili-pr 已經有數據存在了

image

image

遷移完成,刪除新建立的源OSS受權帳號

計量項和計費項

https://help.aliyun.com/document_detail/59636.html?spm=a2c4g.11186623.2.3.vXRqXS
相關文章
相關標籤/搜索