---
title: "执行指定路径的恢复 - OceanBase 数据库 V4.2.1 | OceanBase 文档中心"
description: 执行指定路径的恢复 当数据备份集（backup_set）和日志归档（archivelog_piece）由于业务原因手动搬迁至其他路径后，可以通过加载对应的 backup_set 和 archivelog_piece 后再发起恢复命令的方式来恢复租户。 前提条件 请确认已获取待恢复的 backup_set 和 arch…
---
切换语言

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

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.2.1 LTS

# 执行指定路径的恢复

更新时间：2026-04-16 00:11:36

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.2.1/zh-CN/600.manage/600.backup-and-recovery/600.restore-data/260.initiate-the-specified-path-restore.md)  

当数据备份集（backup_set）和日志归档（archivelog_piece）由于业务原因手动搬迁至其他路径后，可以通过加载对应的 backup_set 和 archivelog_piece 后再发起恢复命令的方式来恢复租户。

## 前提条件

- 请确认已获取待恢复的 backup_set 和 archivelog_piece 的存放路径。
 - 请确认待恢复的 backup_set 和 archivelog_piece 属于同一租户，当前仅允许从同一个租户的backup_set 和 archivelog_piece 中恢复出新租户。
 - 请确认已完成恢复前准备，具体操作请参见 [恢复前准备](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000218384)。

## 使用限制

对于 V4.2.1 版本，从 V4.2.1 BP7 版本开始支持指定路径的恢复。

## 操作步骤

1. 使用 `root` 用户登录待恢复的租户所在集群的 `sys` 租户。
 2. （可选）执行 `ALTER SYSTEM RESTORE...PREVIEW` 命令，指定原始数据备份路径和日志归档路径及期望恢复的时间。

   语句如下：

   ```sql
   ALTER SYSTEM RESTORE FROM 'uri' UNTIL { TIME='timestamp' | SCN=scn } PREVIEW;

   ```

   相关参数说明如下：

      - `uri`：指定原始数据备份路径和日志归档的路径，使用英文逗号分隔。
      - `TIME='timestamp' | SCN=scn`：指定期望恢复的时间戳或 SCN。执行该语句时，必须显式指定时间。

   示例如下：

       OSS   NFS
      - 指定原始数据备份路径和日志归档路径，并且期望恢复到恢复到指定 scn `1712650554000909004`。

       ```shell
       obclient [oceanbase]> ALTER SYSTEM RESTORE FROM 'oss://test_bucket/data?host=***&access_id=****&access_key=****, oss://test_bucket/archive?host=***&access_id=****&access_key=****' UNTIL SCN = 1712650554000909004 PREVIEW;

       ```
      - 指定原始数据备份路径和日志归档路径，并且期望恢复到指定时间戳 `2024-04-09 16:15:54`。

       ```shell
       obclient [oceanbase]> ALTER SYSTEM RESTORE FROM 'oss://test_bucket/data?host=***&access_id=****&access_key=****, oss://test_bucket/archive?host=***&access_id=****&access_key=****' UNTIL TIME = '2024-04-09 16:15:54' PREVIEW;

       ```
      - 指定原始数据备份路径和日志归档路径，并且期望恢复到恢复到指定 scn `1712650554000909004`。

       ```shell
       obclient [oceanbase]> ALTER SYSTEM RESTORE FROM 'file:///ob_backup/data, file:///ob_backup/archive' UNTIL SCN = 1712650554000909004 PREVIEW;

       ```shell
       obclient [oceanbase]> ALTER SYSTEM RESTORE FROM 'file:///ob_backup/data, file:///ob_backup/archive' UNTIL TIME = '2024-04-09 16:15:54' PREVIEW;

       ```
 3. （可选）执行 `SHOW RESTORE PREVIEW` 命令，展示恢复到指定时间所需的 backup_set 和 archivelog_piece。

   #### 注意

   必须在 `ALTER SYSTEM RESTORE...PREVIEW` 命令执行成功后，再执行 `SHOW RESTORE PREVIEW` 命令，否则无法获取所需的结果。

   ```shell
   obclient [oceanbase]> SHOW RESTORE PREVIEW;

   ```

   例如，结果如下：

   ```shell
   +--------------+-----------+--------------------------------------------------------------------------------+------------------------------------------------------------------------------+
   | backup_type  | backup_id | backup_dest                                                                    | description                                                                  |
   +--------------+-----------+--------------------------------------------------------------------------------+------------------------------------------------------------------------------+
   | BACKUP_SET   |         1 | file:///ob_backup/data/backup_set_1_full                                       |                                                                              |
   | BACKUP_PIECE |         1 | file:///ob_backup/archive/piece_d1002r1p1                                      | start_scn_display: 20240409T155954, checkpoint_scn_display: 20240409T160154. |
   | BACKUP_PIECE |         2 | file:///ob_backup/archive/piece_d1002r1p2                                      | start_scn_display: 20240409T160154, checkpoint_scn_display: 20240409T160353. |
   | BACKUP_PIECE |         3 | file:///ob_backup/archive/piece_d1002r1p3                                      | start_scn_display: 20240409T160354, checkpoint_scn_display: 20240409T160553. |
   | BACKUP_PIECE |         4 | file:///ob_backup/archive/piece_d1002r1p4                                      | start_scn_display: 20240409T160554, checkpoint_scn_display: 20240409T160754. |
   | BACKUP_PIECE |         5 | file:///ob_backup/archive/piece_d1002r1p5                                      | start_scn_display: 20240409T160754, checkpoint_scn_display: 20240409T160953. |
   | BACKUP_PIECE |         6 | file:///ob_backup/archive/piece_d1002r1p6                                      | start_scn_display: 20240409T160954, checkpoint_scn_display: 20240409T161154. |
   | BACKUP_PIECE |         7 | file:///ob_backup/archive/piece_d1002r1p7                                      | start_scn_display: 20240409T161154, checkpoint_scn_display: 20240409T161354. |
   | BACKUP_PIECE |         8 | file:///ob_backup/archive/piece_d1002r1p8                                      | start_scn_display: 20240409T161354, checkpoint_scn_display: 20240409T161554. |
   +--------------+-----------+--------------------------------------------------------------------------------+------------------------------------------------------------------------------+
   9 rows in set

   ```

   查询结果中展示了恢复到指定时间所需的所有 backup_set 和 archivelog_piece，以及这些文件在原始数据备份和日志归档目的端下的存放路径。如果因为业务需要，您已将部分或所有文件手动转移到其他路径或存储介质上，则需要您根据实际情况，自行维护好每个 backup_set 和 archivelog_piece 从原始路径到当前路径之间的映射关系。

   例如，上述查询结果中，需要使用 `BACKUP_PIECE` 为 `1` 的 archivelog_piece 进行恢复，而该文件已经被手动转移到 `oss://test_bucket/archive/piece_1` 上，则在使用 `ADD RESTORE SOURCE` 命令加载备份路径时，需要选择新的存放路径 `oss://test_bucket/archive/piece_1`。
 4. 执行 `ADD RESTORE SOURCE` 命令，分别加载恢复所需的 backup_set 和 archivelog_piece。

   加载路径的语句如下：

   ```sql
   ALTER SYSTEM ADD RESTORE SOURCE 'restore_path';

   ```

   语句使用说明：

      - `restore_path`：填写待加载的 backup_set 或 archivelog_piece 的路径。可以是一个路径，也可以是多个路径。

       #### 注意

       如果待加载的 backup_set 或 archivelog_piece 存放在对象存储上，则要求每个 backup_set 或 archivelog_piece 路径中的 `host`、`access_id` 以及 `access_key` 等参数信息均相同。
      - 该语句在同一个会话中可以连续多次执行。在同一会话中多次执行时，系统会增量添加到恢复源列表中。

   示例如下：

      1. 加载待恢复的 backup_set。

        ```shell
        obclient [oceanbase]> ALTER SYSTEM ADD RESTORE SOURCE 'file:///ob_backup/data/backup_set_1_full';

        ```
      2. 加载待恢复的 archivelog_piece。

        ```shell
        obclient [oceanbase]> ALTER SYSTEM ADD RESTORE SOURCE 'file:///ob_backup/archive/piece_d1002r1p1,file:///ob_backup/archive/piece_d1002r1p2';

        ```

        ```shell
        obclient [oceanbase]> ALTER SYSTEM ADD RESTORE SOURCE 'oss://test_bucket/archive/piece_1?host=***&access_id=x****&access_key=****';

        ```
 5. （可选）加载 backup_set 或 archivelog_piece 过程中，如果发现输入了错误的路径，可以执行以下语句来撤销之前的输入后，再重新加载正确的恢复路径。

   ```shell
   obclient [oceanbase]> ALTER SYSTEM CLEAR RESTORE SOURCE;

   ```
 6. 所有路径加载成功后，调用恢复命令。

   #### 注意

      - 执行恢复命令时，要求与执行 `ADD RESTORE SOURCE` 命令的会话是同一个会话，如果不是同一个会话（原先的会话中断或者使用了新的会话），之前加载的恢复源列表就会被清空。
      - 执行 `ADD RESTORE SOURCE` 命令后，在同一会话中不允许再通过指定备份目的端的恢复命令来恢复租户。
      - 执行恢复命令后，无论是否恢复成功，之前加载的恢复源列表均会被清空。如果您需要重新调用恢复命令，则需要重新加载恢复所需的 backup_set 和 archivelog_piece。  

   执行以下语句：

   ```sql
   ALTER SYSTEM RESTORE restore_tenant_name [UNTIL {TIME='timestamp' | SCN=scn} ] WITH 'restore_option';

   ```

   部分参数说明如下：

      - `restore_tenant_name`：待恢复的新租户的名称。
      - `UNTIL {TIME='timestamp' | SCN=scn}`：指定恢复的时间。

            - `timestamp`：指定恢复到的时间戳。
            - `scn`：指定恢复到的 SCN。
            - 如果不指定 `UNTIL TIME='timestamp'` 或 `UNTIL SCN=scn`，则默认恢复到能恢复的最新位点。
      - `restore_option`：支持指定 `pool_list`、`locality`、`primary_zone`、`concurrency`，不同参数之间通过 `&` 分隔。在指定 `locality` 和 `primary_zone` 时，建议尽量与源租户保持同构。如果不同构，待租户恢复后激活为主租户可能会产生负载均衡操作，影响性能。

            - `pool_list`：必选，填写为待恢复的新租户创建的资源池。多个资源池之间用英文逗号（,）分隔。
            - `Locality`：指定新租户副本分布的 Locality 信息，需要与新租户所在集群的 `pool_list` 的 Zone 信息相匹配。与源租户保持同构时，建议新租户与源租户的 F 副本个数相同。
            - `primary_zone`：指定新租户的 Leader 副本的偏好位置，需要与 `pool_list` 及 `locality` 相匹配。与源租户保持同构时，建议新租户与源租户的第一优先级的 Primary Zone 个数相同。
            - `concurrency`：指定数据恢复的并发度。如果不指定，则默认等于该租户被分配的 MAX_CPU 数。例如，本文档中，系统租户为待恢复的租户分配的 MAX_CPU 为 16。

       有关各参数的详细说明请参见 [物理恢复相关参数介绍](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000218386)。

   调用恢复命令的示例如下：

      - 从指定路径恢复租户 `mysql` 到指定 scn `1658285759724047000`, 并指定资源池为 `restore_pool`。

       ```shell
       obclient [oceanbase]> ALTER SYSTEM RESTORE mysql UNTIL SCN = 1712650554000909004 WITH 'pool_list=restore_pool';

       ```
      - 从指定路径恢复租户 `mysql` 到指定时间戳 `2024-04-09 16:15:54`, 并指定资源池为 `restore_pool`。

       ```shell
       obclient [oceanbase]> ALTER SYSTEM RESTORE mysql UNTIL TIME = '2024-04-09 16:15:54' WITH 'pool_list=restore_pool';

       ```

## 后续操作

- 发起恢复任务后，您可以通过视图查看恢复的进度和结果，具体操作请参见 [查看恢复进度](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000218387)。
 - 恢复任务完成后，如果您是从低版本的备份数据恢复到高版本集群中的场景，还需要对恢复出来的租户进行升级，具体操作请参见 [恢复完成后升级租户](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000218389)。
 - 物理恢复流程与物理备库统一，物理恢复后的租户为备租户，后续该租户可作为备租户提供相关服务，也可转为主租户提供服务。作为备租户继续日志归档从源租户回放日志的详细操作参见 [备租户分段回放日志](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000218388)；将备租户转为主租户的详细操作请参见 [备租户转为主租户](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000218385)。

## 相关文档

更多恢复相关的介绍，请参见 [恢复架构](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000219006)。

 上一篇 下一篇 ![有帮助](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) 咨询热线
