从S3快照恢复AWS DB实例报Incompatible-restore错误如何解决
S3恢复gz.parquet格式DB快照报'Incompatible-restore'错误排查方案
异常触发场景:从S3存储恢复默认格式为
gz.parquet的DB快照时,DB实例进入Incompatible-restore状态,实例事件日志报错为「无法提取GZ类型的备份文件,请验证指定路径下的备份文件为有效格式」。
按优先级排查
- 校验文件真实格式
不要以文件后缀作为格式判断依据,先从S3下载对应路径下的备份文件,执行命令校验真实文件类型:file 本地存储路径/你的备份文件名.gz.parquet
符合要求的备份文件返回结果必须包含gzip compressed data标识:- 如果返回
Parquet document(未压缩parquet),说明文件被错误添加.gz后缀,直接重命名去掉.gz后缀后重新触发恢复即可 - 如果返回
Zip archive data、Snappy compressed data等其他压缩格式标识,需要先解压为原始parquet文件,再用标准gzip格式重新压缩 - 如果返回
data(无格式标识),说明文件上传S3过程中出现截断、损坏,需要重新上传MD5校验一致的完整文件
- 如果返回
- 校验S3路径与访问权限
- 确认恢复任务填写的S3路径精确到备份文件所在目录层级,路径中不存在未转义的特殊字符、中文
- 确认DB服务关联角色拥有对应S3桶的
s3:ListBucket、对应路径下s3:GetObject权限,未被桶策略、IAM权限边界拦截 - 确认备份文件存储类型为S3标准存储,未转入Glacier归档层;如果是服务端加密文件,确认DB角色拥有加密密钥的解密权限
- 校验gzip压缩规范
高频触发原因:备份文件是将parquet文件放入文件夹后整体打gz包,这种压缩包解压后为目录结构,DB引擎无法直接读取内部parquet文件,会直接报GZ提取失败。
本地验证方式:先执行gzip -t 备份文件名.gz.parquet做压缩包完整性校验,再执行gzip -d 备份文件名.gz.parquet解压,确认解压后直接得到parquet文件,不存在嵌套目录。 - 校验版本兼容性
确认导出该快照的DB引擎大版本、备份工具版本和当前恢复目标实例的大版本一致,跨大版本导出的快照可能存在gzip压缩元数据不兼容问题,这种情况需要先用同版本实例恢复快照,再通过逻辑迁移的方式同步到目标版本实例。
快速修复操作
如果确认文件本身无损坏、权限路径配置均正确,可本地批量重压缩备份文件后重新上传恢复:
# 解压原备份文件 gzip -d *.gz.parquet # 对解压得到的parquet文件做标准gzip压缩,不加自定义压缩参数 gzip -n *.parquet # 将重压缩生成的gz.parquet文件上传到S3对应路径,覆盖原有文件后重新发起恢复任务
内容的提问来源于stack exchange,提问作者user19544332
相关产品推荐
相关产品推荐

