社区版OB4.2.1 使用 兼容S3协议的存储 作为备份介质 access_id 和 access_key 分别填写AK 和 SK信息吗

【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】社区版OB4.2.1 S3介质
【 使用版本 】社区版4.21.
【问题描述】社区版OB4.2.1 使用 兼容S3协议的存储 作为备份介质, 配置命令中的 access_id 和 access_key 分别填写S3的 AK 和 SK信息吗
【复现路径】
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)

【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

3 个赞

根据文档库中的信息,OceanBase 数据库确实支持将兼容 S3 协议的对象存储作为备份的目的端。在配置备份介质时,access_idaccess_key 应分别对应您 S3 兼容存储服务的 AK(Access Key ID)和 SK(Secret Access Key)。 [1], [2], [3]

具体来说,您可以使用如下命令来动态设置备份目的端的 AK/SK:

ALTER SYSTEM change external_storage_dest PATH[=]'xxx?host=xxx' set ACCESS_INFO[=]'access_id=xxx&access_key=xxx';

这里 PATH 参数应替换为您具体的备份路径,而 access_idaccess_key 应替换为您的 S3 兼容存储服务所提供的 AK 和 SK。

请注意,如果您计划更新 AK/SK,建议的操作步骤如下:

  • 在变更前先停止正在进行的二次备份任务。
  • 更新设置对象存储的 AK/SK。
  • 建议在一个小时后再删除旧的 AK/SK。

如果在二次备份任务执行过程中修改了 AK/SK 并且发现任务出现卡住的情况,您需要强制取消当前的备份任务,并变更备份目录以继续进行二次备份任务。

以上信息适用于您提到的社区版 4.2.1 版本,尽管文档示例中未明确提及具体版本,但考虑到这是 OceanBase 的一项通用功能,应当适用于您正在使用的版本。如果在实际操作中遇到任何问题或异常情况,建议参考官方文档或联系 OceanBase 的技术支持获取进一步的帮助。

检索到的文档如下:

  1. OceanBase 数据库企业版 V2.2.77
  2. OceanBase 数据库企业版 V3.2.4
  3. OceanBase 数据库企业版 V3.2.3
  4. OceanBase 数据库社区版 V3.1.1
  5. OceanBase 数据库社区版 V3.1.5
3 个赞

就是填写AKSK密钥

2 个赞

给所有租户设置配置的话,配置命令结尾设置 TENANT=all 之后执行报 invalid tenant name specified in connecting string ,

2 个赞

您的问题可能是由于在执行配置更改时指定了无效的租户名称或者使用了不正确的语法导致的。从您提供的信息来看,您希望为所有租户设置配置项,但是遇到了错误提示 “invalid tenant name specified in connecting string”。

根据 OceanBase 文档中的描述,当您想要为所有用户租户设置配置项时,可以使用 TENANT=allTENANT=all_user 语法。需要注意的是,all 语法在未来可能会被废弃,建议使用 all_user[8]

正确的 SQL 语法如下:

ALTER SYSTEM [SET] parameter_name = expression [PARAM_OPTS] TENANT = all_user;

或者

ALTER SYSTEM [SET] parameter_name = expression [PARAM_OPTS] TENANT = all;

如果仍然遇到问题,请检查以下几点:

  1. 确保您是在系统租户(通常是 sys 租户)下执行此命令。
  2. 确认没有拼写错误或语法错误。
  3. 如果您正在使用 Oracle 兼容模式,请确保使用正确的语法。

如果问题依旧存在,建议您查看错误日志以获取更详细的错误信息,并根据错误信息进行相应的排查。此外,您也可以尝试直接在单个租户上设置配置项,以验证是否为全局设置的问题。

如果以上方法都不能解决问题,建议您联系 OceanBase 的技术支持团队,他们可以为您提供更专业的帮助和支持。

详情请参考:

  1. ACTIVATE STANDBY
  2. CANCEL DELETE BACKUP
  3. CANCEL BACKUP
  4. RECOVER STANDBY CANCEL
  5. SWITCHOVER
  6. ARCHIVELOG
  7. 物理恢复相关参数介绍
  8. 配置文件
  9. BACKUP KEY
  10. MAJOR 和 MINOR

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

2 个赞

是在sys租户执行的吗?将命令发下

2 个赞

ALTER SYSTEM SET DATA_BACKUP_DEST='s3://backut/?
host=****.obs.com
&access_id=AK信息
&access_key=SK信息’TENANT = all_user;

另外还有一个问题,我如果将TENANT = 后面换成真实的租户名 报 backup destination is not valid 错误 。

OB版本社区版4.2.1.8

2 个赞

参考小助手提供的先排查下看看

2 个赞

把这个命令写成一行,不要换行

2 个赞

我按照下面命令执行不行

ALTER SYSTEM SET DATA_BACKUP_DEST='s3://backut/?
host=****.obs.com
&access_id=AK信息
&access_key=SK信息’TENANT = all_user;

另外还有一个问题,我如果将TENANT = 后面换成真实的租户名 报 backup destination is not valid 错误 。

OB版本社区版4.2.1.8

2 个赞

换成一行后 tenant = all_user 还是报 invalid tenant name specified in connecting string ,

把 tenant = 换成真实租户名,报 invaild argument

1 个赞

路径里需要加一个&s3_region=xxx,xxx可以随便填,再试试,

2 个赞

加了还是刚才的报错,这个存储介质是符合S3协议的,存储桶名下需要创建备份路径吗?还是可以直接使用S3的根路径

2 个赞

在桶里面创建个路径看下

1 个赞

不加tenant参数报错吗?

1 个赞

不加tenant参数直接报 not support feature or function

语法 ALTER SYSTEM SET DATA_BACKUP_DEST=‘s3://shengchan/?host=obs.****.ctl.com&access_id=AK&access_key=SK’

1 个赞

在用户租户下执行呢?

1 个赞

和之前一样的报错
invaild argument

我看rootservice日志中出现
failed to parse uri(ret=-4002,uri=s3://桶名/)
failed to open s3 base(ret=-4002,uri=s3://桶名/)
failed to list files (ret=-4002,uri=s3://桶名/)
failed to list/dir scan (ret=-4002,uri=s3://桶名/)
fail to check dest is empty dirctory
报错

请教一下,桶下面是不是应该创建一个目录作为备份路径

1 个赞

目前没有看到这个要求,
1.可以创建个目录试试看
2.检查下账号权限,看下读写是否正常
3.麻烦提供下trace日志

a.开启 Trace 功能SET ob_enable_show_trace=ON;

b.执行SQL:ALTER SYSTEM SET DATA_BACKUP_DEST='s3://backut/?host=****.obs.com&access_id=AK信息&access_key=SK信息’ TENANT = 真实租户名;

c.获取SQL trace_idSELECT last_trace_id() FROM DUAL;

d.登录对应 OBServer 节点,进入到日志文件所在目录cd /home/admin/oceanbase/log

e.获取trace_id对应的日志

grep “xxxx” rootservice.log --填写第3步获取的trace_id

grep “xxxx” observer.log --填写第3步获取的trace_id

1 个赞

有ocp么,用ocp白屏化开s3备份试试

1 个赞