三机集群其中一台OBServer服务器重启后租户备份失败

OceanBase分布式V4.2.1,生产环境
之前集群中有一台服务器意外重启,之后所有的租户备份任务都失败
备份任务的失败原因中显示重启的那一台服务器result: -9011(cannot find backup file)
但可以从那台服务器直接访问挂载的NFS盘上备份的存储目录

rootserver.log中记录
[2026-09-07 09:50:23.724126] INFO get_file_length (ob_storage.cpp:585) [2995309][T1005_BackupDat][T1005][YB42AC1300C1-000643A9AAC38856-0-0] [lt=26] cannot get file length for not exist file(ret=-9011, uri=file:///obbackup/QDPJ/1730785732/tenant_incarnation_1/1006/data/backup_set_309_full/logstream_1001/meta_info_turn_1_retry_0/ls_meta_info.obbak)
实际查询后发现/obbackup/QDPJ/1730785732/tenant_incarnation_1/1006/data/backup_set_309_full/目录下仅有logstream_1子目录而不存在logstream_1001子目录

1 个赞

@论坛小助手

根据您提供的信息,备份任务失败的原因是无法找到指定的备份文件(错误码 -9011),且在日志中指出某个特定路径下的文件不存在。这与文档片段 3 中提到的情况较为相似,即备份信息缺失或不一致的问题。

分析

  • 错误现象:集群中某台服务器重启后,租户备份任务失败,错误码为 -9011 (cannot find backup file)。
  • 日志信息:尝试访问一个不存在的目录 logstream_1001,但实际上该目录并不存在,仅存在 logstream_1 子目录。

可能的原因及解决方法

  1. 备份文件路径错误:

    • 检查备份任务配置,确认是否正确指定了备份文件的路径。确保备份文件路径与实际存在的路径一致。
    • 根据您的描述,logstream_1001 目录不存在,但 logstream_1 存在。可能是备份任务配置中的路径写错了。
  2. 备份文件丢失:

    • 确认备份文件是否确实丢失。检查 NFS 挂载点上的其他备份文件是否完整,是否存在其他类似的路径错误。
    • 如果备份文件确实丢失,需要恢复丢失的备份文件或重新执行备份任务。
  3. 日志归档问题:

    • 根据文档片段 2,如果是 OBServer 节点的日志归档报错,通常不需要人工介入。但如果是 Root Service 的日志,建议联系 OceanBase 技术支持人员进行排查。
  4. NFS 挂载问题:

    • 根据文档片段 10,可能存在 OBServer 节点与备份介质(如 NFS)之间的连接问题。确保所有节点都能正确访问 NFS 挂载点,并且有正确的权限。

解决步骤

  1. 检查备份配置:

    • 确认备份任务配置中的路径是否正确,特别是 logstream_1001 是否应该为 logstream_1。
    • 修改备份任务配置,确保路径正确。
  2. 验证备份文件:

    • 检查 NFS 挂载点上的备份文件是否完整,是否存在其他路径错误。
    • 如果备份文件丢失,需要恢复丢失的文件或重新执行备份任务。
  3. 联系技术支持:

    • 如果上述步骤无法解决问题,建议联系 OceanBase 技术支持人员,提供详细的日志信息和备份配置,以便进一步排查问题。

参考文档

  • 备份信息不存在
    • 错误原因:备份信息不存在。
    • 解决方式:请联系 OceanBase 技术支持人员协助排查。
  • OSS 遇到未知错误
    • 错误原因:OSS 遇到未知错误。
    • 解决方式:联系 OSS 技术支持人员,排查具体原因。

希望这些信息对您有所帮助。如果问题仍然存在,请联系 OceanBase 的技术支持以获取进一步的帮助。

检索到的文档如下:

  1. 9000 ~ 9499
  2. 4000 ~ 4499
  3. 6000 ~ 6999
  4. 4500 ~ 4999
  5. OceanBase 数据库 TPC-H 测试

相同时间下的observer.log的日志 有么? ob的具体版本查一下

– Step 1: 备份 Job 状态
SELECT JOB_ID, BACKUP_SET_ID, STATUS, RESULT, COMMENT
FROM oceanbase.CDB_OB_BACKUP_JOBS
WHERE TENANT_ID = 1006 AND BACKUP_SET_ID = 309;

– Step 2: 备份集 Task 状态(看卡在哪个阶段)
SELECT TASK_ID, STATUS, RESULT, META_TURN_ID, COMMENT, PATH
FROM oceanbase.CDB_OB_BACKUP_TASKS
WHERE TENANT_ID = 1006 AND BACKUP_SET_ID = 309;

– Step 3: 各 LogStream 任务详情(核心)
SELECT ls_id, task_type, status, result, turn_id, retry_id,
svr_ip, svr_port, comment
FROM oceanbase.__all_virtual_backup_ls_task
WHERE tenant_id = 1006 AND backup_set_id = 309
ORDER BY ls_id;

– Step 4: 若任务已结束,查历史
SELECT ls_id, task_type, status, result, turn_id, retry_id,
svr_ip, svr_port, comment
FROM oceanbase.__all_virtual_backup_ls_task_history
WHERE tenant_id = 1006 AND backup_set_id = 309
ORDER BY ls_id;