OCP备份任务失败

【 使用环境 】生产环境
【 OB or 其他组件 】
【 使用版本 】
【问题描述】
ocp 管理 ob435 集群,备份使用 nfs存储目录 由于(10.100.1.20)nfs 目录有限,目前磁盘满了,我更换了新的nfs(10.0.1.199) ,检测目录都通过了,全量备份时候 失败了。

跳过错误 还有错误:

start tenant:lph full data backup failed, ex=SQL [alter system backup tenant = ? description = ?]; SQL state [HY000]; error code [9040]; traceId [Y10B420A64016F-000643D713C44C11-0-0]; message [(conn=3221622488) backup can not start, because log archive status is not doing.]

日志如下:

2025-11-19 10:39:06.093 INFO 22267 — [manual-subtask-executor15,e80b3098cdba2f90,0717103e9b7e31c2] c.o.o.obsdk.connector.ObConnectorHolder : [obsdk] no ob connector found in holder, key=ObConnectorKey(connectionMode=direct, clusterName=ob435, obClusterId=1742289201, tenantName=sys, username=ocp_monitor, address=10.100.1.116, port=2881, database=oceanbase)

2025-11-19 10:39:06.097 INFO 22267 — [manual-subtask-executor15,e80b3098cdba2f90,0717103e9b7e31c2] c.o.o.obsdk.connector.ObConnectorHolder : [obsdk] no ob connector found in holder, key=ObConnectorKey(connectionMode=direct, clusterName=ob435, obClusterId=1742289201, tenantName=sys, username=ocp_monitor, address=10.100.1.115, port=2881, database=oceanbase)

2025-11-19 10:39:06.100 INFO 22267 — [manual-subtask-executor15,e80b3098cdba2f90,0717103e9b7e31c2] c.o.o.obsdk.connector.ObConnectorHolder : [obsdk] no ob connector found in holder, key=ObConnectorKey(connectionMode=direct, clusterName=ob435, obClusterId=1742289201, tenantName=sys, username=ocp_monitor, address=10.100.1.113, port=2881, database=oceanbase)

2025-11-19 10:39:06.109 INFO 22267 — [manual-subtask-executor15,e80b3098cdba2f90,0717103e9b7e31c2] c.o.o.obsdk.connector.ObConnectorHolder : [obsdk] no ob connector found in holder, key=ObConnectorKey(connectionMode=direct, clusterName=ob435, obClusterId=1742289201, tenantName=sys, username=ocp_monitor, address=10.100.1.116, port=2881, database=oceanbase)

2025-11-19 10:39:06.113 INFO 22267 — [manual-subtask-executor15,e80b3098cdba2f90,0717103e9b7e31c2] c.o.o.obsdk.connector.ObConnectorHolder : [obsdk] no ob connector found in holder, key=ObConnectorKey(connectionMode=direct, clusterName=ob435, obClusterId=1742289201, tenantName=sys, username=ocp_monitor, address=10.100.1.115, port=2881, database=oceanbase)

2025-11-19 10:39:06.116 INFO 22267 — [manual-subtask-executor15,e80b3098cdba2f90,0717103e9b7e31c2] c.o.o.obsdk.connector.ObConnectorHolder : [obsdk] no ob connector found in holder, key=ObConnectorKey(connectionMode=direct, clusterName=ob435, obClusterId=1742289201, tenantName=sys, username=ocp_monitor, address=10.100.1.113, port=2881, database=oceanbase)

2025-11-19 10:48:39.454 ERROR 22267 — [manual-subtask-executor15,e80b3098cdba2f90,0717103e9b7e31c2] c.o.o.c.t.e.c.w.subtask.SubtaskExecutor : Failed to start log backup. Error message: data backup pre-check failed, log backup not started.

com.oceanbase.ocp.core.exception.UnexpectedException: [OCP UnexpectedException]: status=500 INTERNAL_SERVER_ERROR, errorCode=BACKUP_START_LOG_BACKUP_FAILED, args=data backup pre-check failed, log backup not started
at com.oceanbase.ocp.backup.internal.operation.PhysicalBackupTaskService.waitLogBackupStarted(PhysicalBackupTaskService.java:292)
at com.oceanbase.ocp.backup.internal.task.schedule.StartLogBackupTask.run(StartLogBackupTask.java:54)
at com.oceanbase.ocp.core.task.engine.runner.JavaSubtaskRunner.execute(JavaSubtaskRunner.java:64)
at com.oceanbase.ocp.core.task.engine.runner.JavaSubtaskRunner.doRun(JavaSubtaskRunner.java:32)
at com.oceanbase.ocp.core.task.engine.runner.JavaSubtaskRunner.run(JavaSubtaskRunner.java:26)
at com.oceanbase.ocp.core.task.engine.runner.RunnerFactory.doRun(RunnerFactory.java:76)
at com.oceanbase.ocp.core.task.engine.coordinator.worker.subtask.SubtaskExecutor.doRun(SubtaskExecutor.java:207)
at com.oceanbase.ocp.core.task.engine.coordinator.worker.subtask.SubtaskExecutor.redirectConsoleOutput(SubtaskExecutor.java:201)
at com.oceanbase.ocp.core.task.engine.coordinator.worker.subtask.SubtaskExecutor.lambda$submit$2(SubtaskExecutor.java:137)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)

Set state for subtask: 187029, operation:EXECUTE, state: FAILED

当在 OCP 环境中更换了 NFS 存储目录后,需要重新配置归档和备份路径,并重新发起全量备份。以下是完整的操作步骤,仅供参考。

1. 确保新的 NFS 目录已正确挂载

确保所有 OBServer 节点都已将新的 NFS 目录挂载到相同路径
推荐使用 NFS V4.1 或更高版本 启动日志备份状态长时间处于 BEGINING 状态
验证挂载是否成功:df -h | grep nfs

2. 设置正确的目录权限

确保所有 OBServer 节点对新的 NFS 目录具有读写权限:

在每个 OBServer 节点上执行(假设新目录为 /obbackup)

chmod -R 777 /obbackup
chown -R admin:admin /obbackup # 根据实际运行用户调整
参考文档:backup_storage_capacity_timeout_or_interrupted 备份恢复目录容量获取超时或线程被中断

3. 重新设置日志归档目录

方法一:通过 OCP 界面操作(推荐)

  1. 登录 OCP 控制台
  2. 进入目标租户的"备份恢复"页面
  3. 停止当前的日志归档(如果正在运行)
  4. 编辑日志归档配置,更新 LOG_ARCHIVE_DEST 路径为新的 NFS 目录

方法二:通过 SQL 命令行操作

– 删除旧的归档配置
ALTER SYSTEM SET LOG_ARCHIVE_DEST=’’ TENANT = ‘your_tenant_name’;

– 设置新的归档目录
ALTER SYSTEM SET LOG_ARCHIVE_DEST=‘LOCATION=file:///new_nfs_path/archive BINDING=Optional PIECE_SWITCH_INTERVAL=1d’ TENANT = ‘your_tenant_name’;

– 开启日志归档
ALTER SYSTEM SET archivelog tenant=‘your_tenant_name’;

参考文档:清理 OMS 依赖的全部归档日志

4. 更新备份存储配置

通过 OCP 修改备份策略:

  1. 登录 OCP
  2. 进入 集群 → 选择目标集群 → 备份恢复
  3. 点击 更多 > 编辑备份策略
  4. 在"存储配置"部分:
    更新备份路径为新的 NFS 目录
    确保存储类型选择为"NFS"
    点击"测试连接"验证配置有效性

参考文档:编辑集群级备份策略

5. 清理旧的备份元数据(重要)

更换存储路径后,建议清理旧的备份记录:

– 清空之前的 backup_dest 配置
ALTER SYSTEM SET backup_dest=’’;

参考文档:OCP V4.1.0

6. 发起新的全量备份

方法一:立即备份(推荐)

  1. 在 OCP 中进入租户或集群的"备份恢复"页面
  2. 点击 立即备份
  3. 系统会自动识别备份对象、OB 版本、备份方式,并填充新的存储配置
  4. 确认无误后启动备份

参考文档:立即备份

方法二:手工黑屏发起备份

– 设置新的备份路径
ALTER SYSTEM SET backup_dest=‘file:///new_nfs_path/backup’;

– 验证设置
SHOW PARAMETERS LIKE ‘backup_dest’;

– 发起全量备份
ALTER SYSTEM BACKUP DATABASE;

参考文档:如何手工黑屏发起一次集群备份(全量备份+增量备份)

7. 验证备份状态

在 OCP 的"备份恢复"页面查看备份任务状态
检查新的 NFS 目录中是否生成了备份文件
使用以下命令检查备份进度:

SELECT * FROM oceanbase.CDB_OB_BACKUP_JOBS ORDER BY START_TIME DESC;
SELECT * FROM oceanbase.CDB_OB_BACKUP_TASKS ORDER BY START_TIME DESC;

注意事项

  1. 目录清空:建议使用新的空目录进行备份,避免与旧备份文件冲突
  2. 权限一致性:确保所有 OBServer 节点对 NFS 目录的权限一致
  3. 网络连通性:确认 OCP 与备份服务器之间的网络正常 backup_storage_capacity_timeout_or_interrupted
  4. 监控告警:关注备份过程中的任何错误或警告信息

完成以上步骤后,您的 OceanBase 集群将在新的 NFS 目录上正常进行归档和全量备份。

你好,我使用的是 ob4.3.5免费版,并不是企业版,下面的SQL 我也试着查询了,全都报错了,貌似企业版和免费版还是有区别的。

另外,我检查了 挂在目录,是有权限写入的 。

清空目录 重新执行备份也报错

OceanBase 社区已接收您的帖子,正在跟进中。

这个问题的原因是 备份归档目录不会通过ocp删除备份策略任务删除导致的。需要手动删除

alter system set log_archive_dest= ‘’ tenant=x x x;

alter system set data_backup_dest= ‘’ tenant=xxx;