租户备份报OBE10002

【 使用环境 】生产环境
【 OB or 其他组件 】ocp
【 使用版本 】版本号: 4.3.4-20250217152442,OB版本4.2.35
【问题描述】备份任务失败
【复现路径】点击立即备份就报OBE10002
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

https://ask.oceanbase.com/t/topic/35605619

【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!
subtask_42701.log (8.8 KB)
微信图片_20250516094251

根据文档库中的信息,租户备份任务失败可能由多种原因引起。针对您提到的 OBE10002 错误码,虽然具体错误描述未在提供的文档片段中明确提及,但以下是一些可能的原因和解决方法:

1. 检查租户版本是否支持备份

2. 确认备份任务是否被暂停

  • 如果备份策略已被暂停,可能会导致立即备份操作失败。
  • 检查方法:
    • 登录 OCP。
    • 进入租户 概览 页面,在左侧导航栏选择 备份恢复
    • 确认右上角是否存在“暂停备份调度”的状态。如果是,请重新启用备份调度。

3. 检查定时调度的备份任务是否失败

  • 文档提到“定时调度的备份任务失败”可能导致类似问题(参考:定时调度的备份任务失败)。
  • 解决方法:
    • 查看 OCP 的告警日志,确认是否有其他备份任务失败的记录。
    • 如果存在失败任务,按照告警提示排查问题。

4. 检查集群或租户状态

  • 数据备份失败可能导致租户数据无法恢复(参考:数据备份失败可能导致租户数据无法恢复)。
  • 确保集群和租户处于正常运行状态:
    obclient [oceanbase]> SHOW TENANTS;
    obclient [oceanbase]> SELECT * FROM oceanbase.__all_zone WHERE zone_status != 'ACTIVE';
    
  • 如果发现异常状态,请修复后再尝试备份。

5. 检查日志恢复源配置

  • 如果主备租户的日志恢复源配置不正确,也可能导致备份失败(参考:为备库设置日志恢复源失败)。
  • 检查方法:
    • 登录主租户的 sys 租户。
    • 执行以下 SQL 查询日志流状态:
      obclient [oceanbase]> SELECT LS_ID, ACCESS_MODE FROM oceanbase.GV$OB_LOG_STAT WHERE TENANT_ID = user_tenant_id AND ROLE = 'LEADER';
      
      其中,user_tenant_id 替换为实际租户的 TENANT_ID
    • 如果某些日志流的 ACCESS_MODE 不为 RAW_WRITE,可能是日志流正在等待垃圾回收。待日志流被回收后,再重新执行备份任务。

6. 联系技术支持

  • 如果上述方法均无法解决问题,建议收集诊断信息并联系 OceanBase 技术支持团队。
  • 使用 obdiag 工具收集诊断信息:
    obdiag collect log -t all --start-time "2023-01-01 00:00:00" --end-time "2023-01-02 00:00:00"
    

总结

根据现有信息,OBE10002 错误可能与租户版本、备份策略状态、集群或租户状态、日志恢复源配置等因素相关。请逐一排查上述可能性。如果问题仍未解决,建议提供更多日志信息以便进一步分析。

检索到的文档如下:

  1. base_backup_fail 数据备份任务失败
  2. 其他问题
  3. 暂停备份调度
  4. 4500 ~ 4999
  5. 立即进行租户备份
  6. ob_tenant_operation_info OB 租户运维操作提醒
  7. base_backup_too_long_time_no_one_success_task 长时间无成功备份
  8. 编辑租户备份策略
  9. Switchover 或 Failover 相关问题
1 个赞

关闭归档后ALTER SYSTEM NOARCHIVELOG;
执行全量备份 现在又报BAK31001

归档关闭后 日志归档状态
SELECT * FROM oceanbase.DBA_OB_ARCHIVELOG;

STATUS 为’stop’ 而不是 DOING
直接修改成 DOING?

根据文档库中的信息,您提到的问题涉及关闭归档模式后执行全量备份时出现的错误 BAK31001,以及日志归档状态为 STOP 而非 DOING 的情况。以下是详细的分析和解决方案:


1. 关于错误 BAK31001

根据文档(入口:BACKUP → 使用限制及注意事项),发起数据备份前需要满足以下条件:

  • 必须开启归档模式
  • 归档任务的状态必须为 DOING

当前您的归档状态为 STOP,这表明归档模式已被关闭(通过 ALTER SYSTEM NOARCHIVELOG; 实现)。在这种情况下,直接执行全量备份会导致失败,并报错 BAK31001

解决方法:

在执行全量备份之前,必须重新开启归档模式并将状态调整为 DOING。具体步骤如下:

  1. 重新开启归档模式

    ALTER SYSTEM ARCHIVELOG;
    
  2. 确认归档状态已变为 DOING

    SELECT STATUS FROM oceanbase.DBA_OB_ARCHIVELOG;
    

    如果状态仍未变为 DOING,请等待一段时间或检查是否有其他异常导致状态未更新。

  3. 执行全量备份
    确认归档状态为 DOING 后,再执行全量备份命令:

    BACKUP DATABASE PLUS ARCHIVELOG;
    

2. 是否可以直接修改 STATUSDOING

不建议直接修改系统视图中的 STATUS 字段值。原因如下:

  • 系统视图的字段值由内部机制控制oceanbase.DBA_OB_ARCHIVELOG 视图中的 STATUS 字段反映了实际的日志归档任务状态,直接修改可能会导致数据库内部状态不一致,进而引发更严重的问题。
  • 潜在风险:手动修改可能导致归档任务无法正常运行,甚至影响数据一致性。

正确的做法:

如果需要将归档状态从 STOP 修改为 DOING,应通过官方提供的 SQL 命令重新开启归档模式(如上文所述)。


3. 综合解决步骤

以下是完整的解决步骤,确保问题能够被彻底解决:

  1. 确认当前归档状态

    SELECT STATUS FROM oceanbase.DBA_OB_ARCHIVELOG;
    

    如果状态为 STOP,继续下一步。

  2. 重新开启归档模式

    ALTER SYSTEM ARCHIVELOG;
    
  3. 等待状态变为 DOING
    执行以下查询,确认状态已更新为 DOING

    SELECT STATUS FROM oceanbase.DBA_OB_ARCHIVELOG;
    
  4. 执行全量备份
    确认状态为 DOING 后,执行全量备份命令:

    BACKUP DATABASE PLUS ARCHIVELOG;
    
  5. 验证备份结果
    检查备份任务是否成功完成,可以通过 OCP 或者以下 SQL 查询备份进度:

    SHOW BACKUP SCHEDULE;
    

4. 注意事项

  • 不要直接修改系统视图:如前所述,直接修改 oceanbase.DBA_OB_ARCHIVELOG 中的 STATUS 字段可能导致不可预见的问题。
  • 确保归档目的端配置正确:如果归档目的端配置不正确,也可能导致状态无法正常切换为 DOING。可以通过以下命令检查目的端配置:
    SHOW PARAMETERS LIKE 'log_archive_dest%';
    

总结

根据文档库中的信息,错误 BAK31001 是由于归档状态为 STOP 而非 DOING 引起的。正确的解决方法是重新开启归档模式并等待状态切换为 DOING,然后再执行全量备份。切勿直接修改系统视图中的字段值,以免引发更严重的问题。如果问题仍未解决,请提供更多日志信息以便进一步分析。

更多信息请查看:

  1. NOARCHIVELOG
  2. 日志归档概述
  3. ARCHIVELOG
  4. 暂停归档
  5. BACKUP
  6. 更改归档目的端
  7. SET LOG_ARCHIVE_DEST_STATE
  8. 使用 BACKUP DATABASE PLUS ARCHIVELOG 功能创建备租户

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

如何清理历史所有备份 另外重新建立新的备份

执行无数据

备份介质是什么呢?OB版本上面发的没太看出来,可以如下方式查下

集群架构是什么样的?

show variables like '%version_comment%';

备份介质是NFS
version_comment OceanBase_CE 4.2.5.2 (r102010012025022610-ddf7890a67af5c4ffa2bf1a2577b41e140905250) (Built Feb 26 2025 10:52:47)

是标准挂载吗?所有节点都挂载了吗

mount | grep nfs

sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime)
192.168.18.50:/databak on /home/databak type nfs (rw,relatime,vers=3,rsize=8192,wsize=8192,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.18.50,mountvers=3,mountport=1058,mountproto=udp,local_lock=none,addr=192.168.18.50)
nfs挂载没有问题 以前也备份成功 只是今天把nfs的数据删除了 然后重建了备份策略 然后就这样了

SELECT * FROM oceanbase.DBA_OB_ARCHIVELOG;查看的status是 stop

ALTER SYSTEM NOARCHIVELOG;

ALTER SYSTEM ARCHIVELOG; 执行了还是这样