[實戰]生產環境阿裏雲-OSS資源遷移
阿新 • • 發佈:2018-05-29
阿裏雲OSS遷移項目場景
需要將舊的阿裏雲賬號裏的OSS資源遷移至新的阿裏雲主賬號內的OSS。
使用工具OssImport
OssImport工具可以將本地、其它雲存儲的數據遷移到OSS,它有以下特點: 支持的豐富的數據源,有本地、七牛、百度BOS、AWS S3、Azure Blob、又拍雲、騰訊雲COS、金山KS3、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.properties
參照 官方文檔
local_job.cfg 數據遷移任務配置
/usr/local/ossimport/conf/sys.properties
參照 官方文檔
配置文件示例
根據實際項目選擇對應的job.cfg 官方文檔
需要用到能操作OSS資源的授權AccessKey
這裏僅僅以源OSS為例,目標OSS剛需要授權讀寫OSS權限。
以下配置為本次遷移的實際配置文件
遷移具體場景
從A賬號遷入B賬號
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
#這裏因為是2個不同的主賬號之間,VPC網絡肯定是不通的,只能使用外部訪問的方式了。消耗些流量了。
srcDomain=http://oss-cn-shenzhen.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
可以看到新賬號下的sili-pr 已經有數據存在了
遷移完成,刪除新創建的源OSS授權賬號
[實戰]生產環境阿裏雲-OSS資源遷移