关于OB使用S3存储进行备份的问题

根据您提供的信息和图片,看起来您在 OCP 创建备份策略时遇到了问题。具体来说,当您尝试测试存储配置时,收到了“存储配置测试失败,请确保配置目录 s3://bucket/目录/可访问!”的错误提示。此外,您在黑屏环境中执行 ALTER SYSTEM SET DATA_BACKUP_DEST 语句时也遇到了错误 ERROR 9026 (HY000): backup destination is not valid

问题排查步骤

  1. 检查 S3 存储权限配置

    • 确保您提供的 S3 存储路径 s3://obbackup/fhxt 是正确的,并且 OceanBase 集群中的每台 OBServer 都有权限访问该路径。
    • 检查 S3 存储的访问密钥(Access Key ID 和 Access Key Secret)是否正确,并且具有足够的权限进行读写操作。
  2. 验证 S3 存储路径和配置

    • 确认 S3 存储路径 s3://obbackup/fhxt 是否存在,并且可以被访问。
    • 检查 host 参数是否正确,确保 http://oss1.local.cloud.scp 是正确的 S3 存储端点。
  3. 检查网络连接

    • 确保 OBServer 能够通过网络访问 S3 存储端点 http://oss1.local.cloud.scp
    • 检查是否有防火墙或安全组规则限制了 OBServer 与 S3 存储的通信。
  4. 检查 OCP 配置

    • 在 OCP 中,确保您填写的 S3 存储配置信息(包括 Bucket 名称、路径、Access Key ID 和 Access Key Secret)是正确的。
    • 确认 OCP 版本 4.3.1 是否支持您当前使用的 S3 存储配置。

具体操作步骤

  1. 验证 S3 存储路径和权限

    s3cmd ls s3://obbackup/fhxt
    

    如果路径存在且可以访问,应该会列出该路径下的文件或目录。

  2. 检查网络连接

    curl -I http://oss1.local.cloud.scp
    

    确认是否可以成功访问 S3 存储端点。

  3. 重新配置 OCP 备份策略

    • 在 OCP 中,重新创建备份策略,确保所有配置信息正确无误。
    • 再次点击“测试”按钮,检查是否仍然出现相同的错误。

参考文档

  • 文档片段 3 提到了类似的问题,建议检查对应 IP 的机器是否能正常访问备份的存储目录,以及 AK/SK 是否正确。 [3]

如果以上步骤仍然无法解决问题,建议您联系 OceanBase 的技术支持团队,提供详细的日志信息以便进一步诊断。您可以使用 obdiag 工具收集诊断信息,具体命令如下:

obdiag gather scene run --scene=observer.backup

希望这些信息对您有所帮助!

具体信息可参考以下文档:

  1. 查看 SQL 详情
  2. 配置自定义监控
  3. 备份 OceanBase 集群
  4. OCP V3.3.0
  5. 软件包常见问题
  6. 上传安装包
  7. 验证软件包
  8. 复制告警通道
  9. 复制告警规则

(小助手的答复已结束,如未能解决您的问题,请继续提问并等待其他同学的回复,谢谢!)

1 个赞

参考小助手提供的方法这个可以访问么
http://oss1.local.cloud.scp

1 个赞

你好,关于测试存储地址,验证了以下信息
s3cmd ls s3://obbackup/fhxt和
curl -I http://oss1.local.cloud.scp:12000这两个都通过,但是ocp测试还是失败

1 个赞

你好,有可能是不兼容的情况吗,因为从信息验证来看,没有异常的地方。

在黑屏执行,这个命令写成了一行还是多行?

ALTER SYSTEM SET DATA_BACKUP_DEST='s3://bucket/目录/?
host=http://oss1.local.cloud.xxx
&access_id=xxx
&access_key=xxxx
’ TENANT = xxxx;

另外ocp上配置失败,你参考下这个帖子

你好,命令是多行的格式,刚刚调整了下格式,报错有变化,具体如下

看的不太清楚,如果没有写成一行,写成一行再看下

你好,黑屏执行,写成一行后执行报错返回 timeout

请按如下步骤提供下日志
1.开启 Trace 功能
SET ob_enable_show_trace=ON;
2.执行SQL设置s3 备份
3.获取SQL trace_id
SELECT last_trace_id() FROM DUAL;
4.登录对应 OBServer 节点,进入到日志文件所在目录
cd /home/admin/oceanbase/log
5.获取trace_id对应的日志
grep xxxxxxx observer.log --填写第3步获取的trace_id
grep xxxxxxx rootservice.log --填写第3步获取的trace_id

1 个赞

trace_log.zip (5.1 KB)
你好,日志已获取

fail to check dest is empty dirctory (ret=-9105) S3路径设置问题
host后边不跟端口试试呢

http和https,加端口和不加端口都测试过,报错为timeout

在observer上测试存储路径,xxx改成你真实的存储路径
curl -v http://xxx


老师,帮忙再看下

你这里测试是通的,域名+端口的方式还没遇到过,不过理论上应该是可以的,这个问题我咨询下内核的老师,有进展回复你

测试一下bucket域名, 注意,这里bucket也是host的一部分,e.g:
curl -v http://s3-49999-long-data-all-test.s3.cn-north-1.amazonaws.com.cn

curl -v bucket-name.host

老师,是这样吗

好的谢谢

要看你创建的bucket名字是什么了?如果是这个,你这里不通是有问题的