使用数据迁移工具ossimport迁移OSS资源失败的解决方法
问题描述
使用阿里云对象存储OSS时,将任意地域的本地存储数据、第三方存储数据、对象存储OSS数据迁移至任意地域的OSS中可以使用ossimport工具。本文介绍运用数据迁移工具ossimport迁移OSS资源失败的报错原因及解决方案。
问题原因
使用ossimport迁移失败的常见原因有以下几个:
- 上传过程中源目录的文件发生了修改,log/audit.log里会提示
SIZE_NOT_MATCH
相关字样的错误,这种情况下老的文件已经上传成功,新的修改没有上传到OSS。 - 源文件在上传过程中被删除,导致迁移失败。
- 源文件名不符合OSS命名规范(不能以/开头,不能为空),导致上传到OSS失败。
- 因网络异常、账号权限不足等原因导致的下载数据源文件失败,可查看logs/ossimport2.log或logs/import.log确定错误原因。
- 程序异常退出,任务状态为Abort 。这种情况请联系阿里云技术支持。
解决方案
当迁移失败时,执行bash console.sh stat
命令查看迁移任务的状态,如果JobState为failed,则迁移任务失败,请查看迁移失败的日志,根据日志中的报错信息参见以下内容进行解决,您可以在解决这些问题后使用retry命令进行重试:
说明:OSS迁移失败的日志路径为
master/jobs/[$JobName]/failed_tasks/[$TaskName]/audit.log
。
- [$JobName]:任务名字,字符串。
- [$TaskName]:Task名称。
错误码 | 错误信息 | 报错原因 | 解决方案 |
AccessDenied | The bucket you are attempting to access must be addressed using the specified endpoint | srcDomain或destDomain填写错误。 |
请按照域名列表填写正确的Endpoint。 |
SignatureDoesNotMatch | The request signature we calculated does not match the signature you provided |
destAccessKey和destSecretKey有误。 |
请填写正确的AK信息。 |
无 | The bucket name “xxx/xx” is invalid |
配置项destBucket填写不正确。 |
检查配置项destBucket是否填写正确,Bucket名称是不带正斜线(/)以及路径的。 |
ConnectionTimeout | Connect to xxx.oss-cn-beijing-internal.aliyuncs.com:80 timed out |
这个是连接超时的报错,通常原因是迁移用的设备非ECS实例或不是与OSS同地域的ECS实例,但是配置文件使用了OSS的内网域名。OSS内网域名仅支持同地域ECS实例访问。 |
该问题可以通过以下方法解决:
|
InvalidBucketName | The specified bucket is not valid |
配置文件里的destDomian配置的域名是Bucket所在地域的Endpoint地址,而不是带Bucket名称的二级域名。 |
填写正确的Bucket所在地域的Endpoint地址,例如Bucket在华北2(北京),应填写oss-cn-beijing.aliyuncs.com。详情请参见配置文件示例。 |
RequestTimeTooSkewed | Unable to execute HTTP request: The Difference between … is too large |
该报错可能是以下情况导致:
|
该问题可以通过以下方法解决:
|
无 | The object key “/xxxxx.jpg” is invalid |
该报错可能是以下情况导致:
|
该问题可以通过以下方法解决:
|
无 | No route to host |
这种情况一般是本地防火墙或者iptables等原因导致网络不通。 |
通过ping命令测试迁移服务器到源端和目的端网络是否正常。
|
无 | Unknown http list file format |
使用HTTP模式迁移时,该问题是因为指定的HTTP列表文件格式不对或内容不符合规范。 |
该问题可以通过以下方法解决:
|
更多信息
部分文件迁移失败后反复重试都无法成功迁移的解决方案:
- 查看迁移失败文件列表
master/jobs/[$JobName]/failed_tasks/[$TaskName]/error.list
,获取失败文件的相对路径。 - 确认是否有这部分文件的权限访问、文件是否被删除、是否是软链接文件、文件名是否存在乱码等。
- 解决以上问题后,使用retry命令进行重试。
适用于
- 对象存储OSS
- ossimport