---
title: 备份恢复问题-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于备份恢复问题相关的常见问题和使用技巧，帮助您快速解决备份恢复问题的难题。
image: https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*OSPzQ6GUQF4AAAAAQHAAAAgAeiGDAQ/original
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

划线反馈

# 备份恢复问题

更新时间：2026-08-25 02:41

## 问题现象

**触发场景**

公有云客户发起按表恢复（Table-Level Restore），在恢复到辅助租户（AUX Tenant）阶段时，恢复任务卡在 `RESTORE_TO_CONSISTENT_SCN` 状态。待恢复的数据量约为 100GB，但恢复任务已持续 12 小时仍未完成。

**具体表现**

- 恢复任务状态卡在 `WAIT_TENANT_RESTORE_FINISH`。
 - 辅助租户（`tenant_id=1010`）的状态为 `RESTORING`。
 - `RESTORE_PROGRESS` 显示为 0.00%，`FINISH_BYTES` 为 0。
 - Root Service（RS）日志中出现 `-4002`（OB_INVALID_ARGUMENT）错误。
 - Clog 日志中出现 `-4008`（piece id out of round range upper bound）错误。

**影响范围**

- 在曾进行过 AK/SK 非标轮转操作的集群上发起恢复时，此问题必然出现。
 - 初步统计有 **63 个集群** 存在类似风险，只是当前业务尚未发起恢复，影响被滞后。
 - 该问题的 SLA 紧急程度已从 MEDIUM 升级为 HIGH，影响程度从 S3 升级为 S2。

## 问题原因

### 根因分析

**直接原因**

恢复过程中，Clog 模块在拉取远程日志时，于 Round 1 中查找 piece 717。然而，piece 717 实际属于 Round 2。由于 Round 1 的 `max_piece_id` 为 692，piece 717 超出了 Round 1 的范围上限，从而触发 `-4008` 错误（piece id out of round range upper bound）。

**根本原因**

根本原因在于 2026-05-28 通过**非标手段**进行了 AK/SK 轮转操作，导致 Clog 归档出现了两个 Round。

轮转后的归档状态如下表所示：

| Round | 状态（内部表） | Piece 范围 | 起始时间 |
| --- | --- | --- | --- |
| Round 1 | STOP | 22 ~ 692 | 2024-07-05 |
| Round 2 | DOING | 693 ~ 721+ | 2026-05-28 |

**Round 切换失败的根因**

1. **内部表判断标准**：`CDB_OB_ARCHIVELOG_SUMMARY` 视图中显示 Round 1 的状态为 `STOP`。
 2. **备份介质判断标准**：恢复侧访问备份介质时，通过检查是否存在 `round_d1001r1_end.obarc` 文件来判断 Round 1 是否已 `STOP`。
 3. **状态不一致**：非标 AK/SK 轮转操作未在备份介质上生成 `round_d1001r1_end.obarc` 文件，导致恢复侧认为 Round 1 仍处于 `ACTIVE` 状态。
 4. **最终结果**：恢复侧在 Round 1 中查找本属于 Round 2 的 piece 717，触发 `-4008` 错误，导致 Round 无法正常切换，恢复任务卡住。

**技术原理说明**

- Clog 归档以 Round 为单位管理日志分片（piece），每个 Round 包含一组连续的 piece。
 - 恢复时需要按照 Round 顺序依次拉取日志。当 Round 1 的日志拉取完成后，需要切换到 Round 2。
 - Round 切换的前提是确认 Round 1 已结束（`STOP`），其判断依据是备份介质上存在 `round_end` 文件。
 - 非标 AK/SK 轮转操作破坏了 Round 结束标记的完整性，导致 Round 切换逻辑失效。

**是否为已知问题**

是产品设计缺陷。内部表和备份介质对 Round 状态的判断标准不一致，此逻辑可优化。

## 关键信息

**CLOG 日志（-4008 错误，核心问题日志）**

```
[2026-06-25 03:46:04.767220] WDIAG [CLOG] get_piece_meta_info_ (ob_log_archive_piece_mgr.cpp:985)
  [errcode=-4008] piece id out of round range upper bound
  (piece_id=717, round_context:{round_id:1, min_piece_id:22, max_piece_id:692},
   min_round_id:1, max_round_id:2)

[2026-06-25 03:46:04.767236] WDIAG [CLOG] get_cur_piece_info_ (ob_log_archive_piece_mgr.cpp:937)
  [errcode=-4008] get piece meta info failed(piece_id=717)

[2026-06-25 03:46:04.767239] WDIAG [CLOG] get_piece_ (ob_log_archive_piece_mgr.cpp:543)
  [errcode=-4008] switch piece if need

[2026-06-25 03:46:04.768329] WDIAG [CLOG] fetch_log_from_location_ (ob_remote_data_generator.cpp:412)
  [errcode=-4008] get precise file and offset failed

```

**诊断要点**

- `-4008` 错误表示 `piece_id` 超出了当前 round 的 piece 范围。
 - 日志中 `round_id:1, max_piece_id:692` 说明系统正在 Round 1 中查找 piece 717。
 - `min_round_id:1, max_round_id:2` 说明系统已知存在 2 个 round，但未能正确切换。

## 问题的风险及影响

NA

## 适用版本

客户版本为 OBServer 4.2.1 BP8 hf1 及其他版本。此问题与具体版本无关，与是否执行过 AK/SK 非标轮转操作有关。

## 解决方法

### 补齐 Round End 文件

在备份介质上为 Round 1 补齐 `round_d1001r1_end.obarc` 文件。此操作将使恢复侧能够正确识别 Round 1 已结束，从而顺利切换到 Round 2 继续恢复。

## 规避方式

### 预防措施

1. **避免非标 AK/SK 轮转**：AK/SK 轮转应通过标准流程（例如管控台或 OMS）进行，避免直接修改备份配置导致归档 Round 状态不一致。
 2. **轮转后验证**：执行 AK/SK 轮转后，应检查备份介质上的 Round 结束标记文件是否正常生成。

Previous

[OceanBase 数据库故障恢复相关问题 FAQ](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000003029993)

Next

[OceanBase 数据库预设资源监控点](https://www.oceanbase.com/knowledge-base/oceanbase-database-20000000187) ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
