OssImport系列之四——最佳实践

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 介绍数据迁移工具OssImport在典型场景下的应用、典型需求的实现方法。

相关文章:OssImport系列之一——架构

本文主要介绍,OssImport在典型场景下应用,典型需求的实现。

单机与分布式

OssImport有 单机模式分布式模式 两种部署方式。对于小于 30TB 的小规模数据数据迁移,单机模式即可完成。对于大规模的数据迁移,请使用分布式模式。

分时限流

Worker有限流功能,通过修改配置文件sys.properties的配置项workerMaxThroughput(KB/s)实现,该配项不是动态生效的,修改后需要重启服务才能生效。分布式部署情况下,需要修改每个Worker的$OSS_IMPORT_WORK_DIR/conf下的sys.properties,然后重启服务。

分时限流,可通过 crontab 定时修改 sys.properties,然后重启服务生效。

添加Worker

Worker列表请在提交任务前确定,目前不支持动态添加。

只校验不迁移数据

OssImport支持只校验数据不迁移数据,任务配置文件 job.cfglocal_job.cfg 的配置项 jobType=audit 而不是 import,其它配置与数据迁相同。

从第三方存储服务无缝切换到OSS

以下步骤可以完成从其它存储到OSS的无缝切换:

  • 全量迁移数据,此时业务仍在第三方存储上,记下数据迁移的开始时间 T1,注意该时间为 Unix时间戳,即自1970年1月1日UTC零点以来的秒数,通过命令 date +%s 获取;
  • 打开OSS镜像回源功能,数据迁移完成后,请在 OSS控制台 设置服务 Bucket镜像回源功能,回源地址为第三方存储;
  • 读写切换到OSS,此时 T1 前的数据从OSS读取, T1 后的数据利用镜像回源从第三方服务读取,新数据完全写入OSS;
  • 增量数据迁移,增量数据迁移任务的配置文件( job.cfglocal_job.cfg )的配置项 importSince=T1 ,增量数据迁移完成的时间为 T2
  • 删除第三方存储, T2 后,您业务的所有的读写都在OSS上,第三方存储只是一份历史数据,您可以根据需要决定保留或删除。OssImport负责数据的迁移和校验,不会删除任何数据。

注意

  • 第四步增量数据迁移,并非数据迁移的增量模式

数据迁移增量模式

数据迁移增量模式,是指数据迁移任务启动后,先进行一次全量迁移,每隔一段时间自动的进行增量数据迁移。第一次数据迁移任务为全量迁移,提交任务后立即启动;后面的增量数据迁移每隔一个周期启动一次。增量模式有两个配置项:

  • job.cfg 中的 isIncremental ,是否打开增量迁移模式, true 表示打开增量模式, false 表示关闭增量模式,默认关闭。
  • job.cfg 中的 incrementalModeInterval,增量模式下的同步间隔,即增量数据迁移的间隔周期,单位秒。isIncremental=true 时有效。可配置的最小值为 900秒 ,不建议配置成小于 3600秒 的值,会浪费大量请求,造成额外的系统开销。

使用场景:

  • 数据备份;
  • 数据同步。

指定迁移文件的过滤条件

迁移文件的过滤条件,即只迁移满足特定的条件的文件。OssImport支持指定 前缀最后修改时间

  • job.cfg 中的 srcPrefix,指定迁移文件的前缀,默认为空。如果srcType=local,填写本地目录,需要完整路径,以 / 进行分割并且以 / 结尾,如 c:/example//data/example/srcTypeossqiniubosks3youpais3,则为待同步object的前缀,不包括bucket名称,如data/to/oss/迁移所有文件srcPrefix设置为空
  • job.cfg 中的 importSince,迁移文件的最后修改时间,整形,单位秒。如果文件的最后修改(LastModified Time)在 importSince 之前(包含)将被迁移,如果文件的最后修改(LastModified Time)在 importSince 之后将不被迁移;importSinceUnix时间戳,即自1970年1月1日UTC零点以来的秒数,通过命令date +%s获取;默认值0,表示迁移全部数据。增量模式下只对第一次全量迁移有效,非增量模式对整个迁移任务有效。

本地数据迁移到OSS

本地数据迁移到OSS的工具选择:

  • 对于小于 30TB 的数据从本地文件,或可以挂载到本地文件系统的情况,推荐使用 OssUtil,该工具简单方便,OssUtil支持 文件级别 的增量上传,通过 -u/--update--snapshot-path 选项实现,详细说明请使用 ossutil help cp 查看。
  • 大规模数据迁移,请使用分布式版本的OssImport

提示

  • 本地数据的增量迁移时,文件系统某些操作不会修改文件的 最后修改时间 ,比如 Windowscpmv , Linuxmvrsync-t-a 选项,这些操作的数据修改都不会被检测到,也不会同步到OSS, 请知悉

OSS之间的数据迁移

什么时候使用OssImport:

  • 不同区域间的OSS数据同步,添加使用 跨区域复制 功能,该功能请在控制台上设置;
  • 由于政策或安全原因,没有没有开通 跨区域复制 的区域,可以使用OssImport迁移或备份数据;
  • 同一区域内,不同账号、不同Bucket的数据迁移;
  • OSS直接的数据迁移,推荐使用阿里云内网,即使用ECS、OSS的域名带 internal

OSS直接数据迁移收费:

  • 如果使用了带 internal 的域名,不会产生流量费用,只有请求和存储费用;
  • 如果没有带 internal 的域名,会产生流量费用,具体请参看 计费

不推荐使用场景:

  • 开通了 跨区域复制 服务的区域之间的数据同步;
  • 利用增量模式在OSS之间同步文件修改操作,OssImport只能同步文件的修改操作(put/apppend/multipart),不能同步读取和删除操作,数据同步的及时性没有具体的 SLA 保证, 请慎重选择;推荐使用 上传回调事件通知

ECS与流量

对于从云端(非本地)迁移到OSS,且带宽资源不是很充足的用户,建议够买按量付费的ECS进行迁移,购买地址。ECS配置:

  • 付费方式选择按量付费;
  • 地域选择OSS对应的区域;
  • 带宽峰值选100M;
  • 系统Linux/Windows随意;
  • 其他全部选择最低配置。

在配置迁移服务时,将 targetDomain 设为带 internal 的内网域名;如果源端也是OSS,将 srcDomain 也设为带 internal 的内网域名,可以省掉从OSS源端下载的流量费,仅收取OSS访问次数的费用。

HTTP数据迁移OSS

HTTP数据迁移任务需要配置的参数:

  • job.cfg 中的 srcType 配置为 srcType=http ,请注意字符大小写;
  • job.cfg 中的 httpListFilePath,指定的HTTP地址列表文件, 请使用绝对路径指定 ,如 c:/example/http.list/root/example/http.list 。一个完整的HTTP链接是 127.0.0.1/aa/bb.jpg,不同的切分方法最后会导致上传到oss的路径会不一样:

    http://127.0.0.1/aa/   bb.jpg      # 第一行
    http://127.0.0.1/      aa/bb.jpg   # 第二行
    第一行的文件导入到OSS后的的文件名为 `destPrefix + bb.jpg`,第二行的文件名为 `destPrefix + aa/bb.jpg`。 *httpPrefixColumn* 指定域名列,默认第一列,如上述的 `127.0.0.1/aa/` 或`127.0.0.1/`。 *relativePathColumn* 指定在OSS中文件名,如上述的 `bb.jpg` 或 `aa/bb.jpg`。
    如果文件中有多列,如下
    http://127.0.0.1/aa/   bb/cc dd/ee  ff.jpg
    配置应该如下: *httpPrefixColumn=1* , *relativePathColumn=4* 。
  • job.cfg 中的 destAccessKeydestSecretKeydestDomaindestBucket 等OSS的配置。

HTTP数据迁移子任务切分参数:

  • taskObjectCountLimit ,每个 Task 最大的文件数,默认10000;
  • taskObjectSizeLimit , 每个 Task 最大数据量, HTTP数据迁移时该参数无效 ,原因是 Master 切分 Task 时,如果每个HTTP文件都是源上获取文件大小,每个文件都有一次HTTP请求开销,会影响子任务分配的效率,进而影响子任务的并发执行,降低迁移的效率;
  • 域名 , httpListFilePath 指定的文件中第一列,连续相同的域名任务按照 taskObjectCountLimit 的限制切分,连续不同的域名切分成不同的 Task ,这种做法的目的是为了更好的复用连接。比如:

    http://mingdi-hz.oss-cn-hangzhou.aliyuncs.com/  import/test1.txt
    http://mingdi-hz.oss-cn-hangzhou.aliyuncs.com/  import/test2.txt
    http://mingdi-bj.oss-cn-beijing.aliyuncs.com/  import/test3.txt
    http://mingdi-bj.oss-cn-beijing.aliyuncs.com/  import/test4.txt
    `taskObjectCountLimit` 大于2的情况下,会切分成 ***2*** 个 *Task* , 而
    http://mingdi-hz.oss-cn-hangzhou.aliyuncs.com/  import/test1.txt
    http://mingdi-bj.oss-cn-beijing.aliyuncs.com/  import/test3.txt
    http://mingdi-hz.oss-cn-hangzhou.aliyuncs.com/  import/test2.txt
    http://mingdi-bj.oss-cn-beijing.aliyuncs.com/  import/test4.txt
    会切分成 ***4*** 个 *Task* , ***所以 `httpListFilePath` 指定的HTTP地址列表文件,请先按照域名排序*** 。
    

网络流量与参数配置

以下参数的配置与网络流量有关:

  • sys.properties 中的 workerTaskThreadNum ,表示 Worker 并发执行的任务数量,如果网络较差、并发大,会出现大量超时错误,此时应该降低并发量,修改该配置项,并重启服务;
  • sys.properties 中的 workerMaxThroughput(KB/s) , 表示 Worker 流量的上限,如果业务需要限流,比如源端流控控制、网络限制等情况。该参数的值应该小于机器的最大网络流量,并根据业务需要评估。
  • job.cfg 中的 taskObjectCountLimit ,每个 Task 最大的文件数,默认10000。该参数会影响 Task 的数量,数量过小无法实现有效的并发。
  • job.cfg 中的 taskObjectSizeLimit , 每个 Task 最大数据量,默认1GB。该参数会影响 Task 的数量,数量过小无法实现有效的并发。

提示

  • 配置文件参数请尽量在启动迁移前确定
  • sys.properties 中的参数修改后,重启迁移服务器后才能生效;
  • job.cfg 任务提交后,任务的配置参数无法更改。

相关文章:OssImport系列之一——架构

相关实践学习
基于函数计算快速搭建Hexo博客系统
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
目录
相关文章
|
1月前
|
SQL 分布式计算 关系型数据库
阿里云E-MapReduce Trino专属集群外连引擎及权限控制踩坑实践
本文以云厂商售后技术支持的角度,从客户的需求出发,对于阿里云EMR-Trino集群的选型,外连多引擎的场景、Ldap以及Kerberos鉴权等问题进行了简要的实践和记录,模拟客户已有的业务场景,满足客户需求的同时对过程中的问题点进行解决、记录和分析,包括但不限于Mysql、ODPS、Hive connector的配置,Hive、Delta及Hudi等不同表格式读取的兼容,aws s3、阿里云 oss协议访问异常的解决等。
|
14天前
|
运维 Serverless PHP
Serverless 应用引擎产品使用合集之在部署Laravel时,如何处理伪静态
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
15天前
|
机器学习/深度学习 分布式计算 大数据
MaxCompute产品使用合集之官方的调优文档在哪里看
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
15天前
|
存储 SQL 分布式计算
MaxCompute产品使用合集之作业性能优化的规范包括哪些
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
1月前
|
监控 数据可视化 安全
「译文」CMDB 最佳实践技术指南 -1-CMDB 可视化 - 最佳实践与示例
「译文」CMDB 最佳实践技术指南 -1-CMDB 可视化 - 最佳实践与示例
|
存储 运维 数据库
【C#编程最佳实践 十五】DTC使用最佳实践
【C#编程最佳实践 十五】DTC使用最佳实践
103 0
|
存储 分布式计算 运维
【大数据开发运维解决方案】Solr5.1案例文档导入
1、创建内核 [root@hadoop exampledocs]# cd /hadoop/solr/ [root@hadoop solr]# ./bin/solr create -c jcg -d basic_configs Setup new core instance directory: /hadoop/solr/server/solr/jcg Creating new core 'jc...
【大数据开发运维解决方案】Solr5.1案例文档导入
|
弹性计算 运维 监控
【最佳实践】《微服务架构日志采集运维管理》手把手实操步骤与常见问题
根据阿里云《微服务架构日志采集运维管理》最佳实践文档实践步骤复现应用搭建的过程,同时总结归纳部分在应用搭载过程中遇见的问题与解决方案。
|
设计模式 前端开发 测试技术
软件测试面试题:如何在项目中构建对象存储库?
软件测试面试题:如何在项目中构建对象存储库?
81 0
|
存储 弹性计算 运维
迁云工具介绍及最佳实践 | 学习笔记
快速学习迁云工具介绍及最佳实践,云服务器ECS(Elastic Computing Service)是每个阿里云用户上云的“第一步”。
迁云工具介绍及最佳实践 | 学习笔记