且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

oss迁移以及校验

更新时间:2022-04-30 06:07:30

oss迁移我采用的是阿里提供的ossimport2工具
迁移采用的方式是单机迁移的方式,这种工具配置简单,迁移效率高

ossimport2工具配置文件结构大概如下:
├── bin
│ └── ossimport2.jar 启动服务需要的jar
├── conf 配置文件位置
│ ├── local_job1.cfg 每一个cfg可以代表一个bucket
│ ├── local_job.cfg
│ └── sys.properties 配置任务运行的并发度以及资源分配
├── console.bat
├── console.sh
├── import.bat
├── import.sh 系统的导入脚本,不需要更改

工具中需要更改的文件是local_job.cfg:
其实在下载ossimport之后,里面的readme 会有详尽的配置项说明,此处我就不赘述了

(ossimport2支持多种源端迁移 此处是以源端目标端都为oss为例)

#源端的类型
srcType=oss

#源access key
srcAccessKey=xxxx
#源secrect key 
srcSecretKey=xxxx
#源endpoint,
srcDomain=http://xxxx
#源bucket名字 
srcBucket=xxx

#目的 access key
destAccessKey=xxx

#目的 secret key
destSecretKey=xxx

#目的endpoint(不要加上bucket的名字)
destDomain=http://xxx

##目的bucket,不需要加上"/"
destBucket=xxxx


#job名字,每个任务唯一,不同的bucket起不同的名字
jobName=local_testxx

sys.properties
一般不需要更改

命令行查看oss内容

ossutil

在oss帮助文档界面下载:ossutil

./ossutil64 ls   --config-file ossconfigfile oss://bucketname```  


# 启动

**声明变量**

export work_dir=/dir of ossimport



**启动进程**


nohup java  -jar  ${work_dir}/bin/ossimport2.jar  -c ${work_dir}/conf/sys.properties  start > ${work_dir}/logs/ossimport2.log 2>&1 &


**启动任务**

java -jar $work_dir/bin/ossimport2.jar -c $work_dir/conf/sys.properties submit $work_dir/conf/local_job1.cfg

java -jar $work_dir/bin/ossimport2.jar -c $work_dir/conf/sys.properties submit $work_dir/conf/local_job2.cfg (多个bucket多个cfg文件)






查看任务状态


java -jar $work_dir/bin/ossimport2.jar -c $work_dir/conf/sys.properties  stat  detail


#校验
> 迁移后需要对源端目标端的迁移数据进行校验,从数量以及内容两方面进行比对校验,确保迁移的一致性


文件数校验

./ossutil64 ls oss://bucketname --config-file ./ossconfigfile | sed '/^Last/d' | grep Object >count.txt`

内容校验比对
oss内容校验采用比对etag的方式
获取etag的方式如下:

./ossutil64 ls oss://bucketname --config-file ./ossconfigfile | sed '/^Last/d' | awk '{print $7}'  >etag.txt

数据量校验

./ossutil64 ls oss://bucketname --config-file ./ossconfigfile | sed '/^Last/d' | awk 'BEGIN {size=0} {size=size+$5} END{print "endsizeis",size/1024/1024,"M"}' >count_data.txt

校验中使用的ossconfigfile其实就是oss的鉴权信息,内容如下:

[Credentials]
language=EN
endpoint=http://ossxxxx.com
accessKeyID=xxxxx
accessKeySecret=xxxx