---
title: "恢复指定的表 | OceanBase 文档中心"
description: 恢复指定的表 OceanBase 数据库支持物理恢复租户内指定的表。 操作步骤 使用 root 用户登录数据库的 sys 租户。 （可选）执行以下语句，停止日志备份。 obclient&gt; ALTER SYSTEM NOARCHIVELOG; 说明 由于 V2.2.7x 之前的版本不支持在日志备份的集群上发起恢复，如果…
image: https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*OSPzQ6GUQF4AAAAAQHAAAAgAeiGDAQ/original
---
切换语言

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

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

# 恢复指定的表

更新时间：2023-07-18 17:27:23

OceanBase 数据库支持物理恢复租户内指定的表。

## 操作步骤

1. 使用 `root` 用户登录数据库的 `sys` 租户。
 2. （可选）执行以下语句，停止日志备份。

   ```sql
   obclient> ALTER SYSTEM NOARCHIVELOG;

   ```

   > **说明**
   >
   >  
   >
   > 由于 V2.2.7x 之前的版本不支持在日志备份的集群上发起恢复，如果发起恢复，会导致日志备份断流，故建议 V2.2.7x 之前的版本在执行恢复前先停止日志备份。
 3. 创建 Unit（资源单元）。

   示例如下：

   ```sql
   obclient> CREATE RESOURCE UNIT box_16c96g max_cpu 16, max_memory 103079215104, max_iops 10240, max_disk_size 53687091200, max_session_num 64, MIN_CPU=16, MIN_MEMORY=103079215104, MIN_IOPS=10240;

   ```
 4. 创建 Resource Pool（资源池）。

   示例如下：

   ```sql
   obclient> CREATE RESOURCE POOL restore_pool unit = 'box_16c96g', unit_num = 1, zone_list = ('z1','z2','z3');

   ```
 5. 执行以下语句，设置加密信息。

   > **说明**
   >
   >  
   >
   > 如果未加密或恢复时可以访问原来的 KMS，则跳过本步骤。

   ```sql
   obclient> SET @kms_encrypt_info = '<加密string>';

   ```

   其中，`<加密string>` 为 `EXTERNAL_KMS_INFO` 的值，`EXTERNAL_KMS_INFO` 为租户级配置项。
 6. 打开恢复配置。

   检查 `restore_concurrency` 是否为 `0`，如果为 `0` ，则需要执行以下语句：

   ```sql
   obclient> ALTER SYSTEM SET restore_concurrency = 50;

   ```
 7. （可选）修改恢复的等待时间。

   默认恢复等待时间 `_restore_idle_time` 为 1 分钟，整个恢复期间会有 3 次等待，即 3 分钟的等待时间。对于测试恢复性能的场景，为了减少恢复的空闲时间，您可以执行以下语句将等待时间调整为 `10s`。

   ```sql
   obclient> ALTER SYSTEM SET _restore_idle_time = '10s';

   ```
 8. 根据现场需要，设置恢复的密码。

   ```sql
   obclient> SET DECRYPTION IDENTIFIED BY 'password';

   ```

   只有在备份时添加了密码的场景下才需要设置恢复的密码。同时如果全量备份+增量备份设置的密码不一样，则需要输入多个密码，密码之间使用逗号分隔。示例如下：

   ```sql
   obclient> SET DECRYPTION IDENTIFIED BY 'password1'，'password2';

   ```
 9. 执行以下语句，开始执行恢复任务。

   ```sql
   obclient> ALTER SYSTEM RESTORE  <table_name_list> FOR <dest_tenant_name>  FROM <source_tenant_name> AT 'uri'  UNTIL 'timestamp' WITH 'restore_option' ;

   ```

   部分参数说明如下表所示。

   | 参数 | 描述 |
   | --- | --- |
   | table_name_list | 指定待恢复的租户内的表，表名需要包含表所在的数据库名（MySQL 模式）或表所属的 Owner（Oracle 模式），多个表名之间中用英文逗号（,）连接。 单个表的表示方法：`database_name.table_name` 或 `user_name.table_name` 示例：`crm.sales,crm.products,hr.employees`   **说明**   数据库名或表名可能含有特殊字符，对于含特殊字符的数据库名或表名需要放在反引号（``）内。例如：`c&rm`.`s#ales` |
   | dest_tenant_name | 指恢复的新租户的名称。 |
   | source_tenant_name | 指源集群的租户名。 |
   | uri | 指备份时设置的 `backup_dest`。 |
   | recover_end_time | 指恢复的时间戳，需要大于等于最早备份的数据备份的 `CDB_OB_BACKUP_SET_DETAILS` 的 `START_TIME`，小于等于日志备份 `CDB_OB_BACKUP_ARCHIVELOG_SUMMARY` 的`MAX_NEXT_TIME`。 |
   | restore_options | 支持 `backup_cluster_name`、`backup_cluster_id`、`pool_list`、`locality`、`primary_zone`、`kms_encrypt`：    - `backup_cluster_name` 为必选项，填写源集群的名称。   - `backup_cluster_id` 为必选项，填写源集群的 `cluster_id`   - `pool_list` 为必选项，填写用户的资源池。多个资源池之间用英文逗号（,）分隔。   - `locality` 为可选项，填写新租户副本分布的 Locality 信息，需要满足与新租户所在集群的 `pool_list` 的 Zone 信息相匹配，默认使用源租户的 Locality。若填写的信息与新租户所在集群的 `pool_lis`t 的 Zone 信息不匹配，则系统会重置为缺省 Locality，即按 resource_pool 的 `zone_list` 为每个 Zone 设一个 F 副本。        例如，源租户的 Locality 为 `"F@z1,F@z2,F@z3"`，新租户所在集群的 Zone 分布为 `"z1,z2,z3,z4"`，则新租户的 Locality 使用源租户的 Locality。若源租户的 Locality为 `"F@z1,F@z2,F@z3,F@z4,F@z5"`，新租户所在集群的 Zone 分布为 `"z1,z2,z3"`，则新租户的 Locality 使用所在集群的全部的 Zone，即新租户的 Locality 为 `"F@z1,F@z2,F@z3"`。   - `primary_zone` 为可选项，填写新租户的 Leader 副本的偏好位置，需要满足与 `pool_list` 及`locality` 的匹配，即需要满足 Zone 信息匹配以及 `primary_region` 内至少有两个 Paxos 成员等限制，默认使用源租户的 Primary Zone。若填写的信息与新租户所在集群的 `pool_list` 及 `locality` 不匹配，则系统会将其重置为缺省 `primary_zone`，即按 `locality` 的 `zone_list` 将 Leader 随机分布在这些 Zone 中。        例如，源租户的 Locality 为 `"F@z1,F@z2,F@z3"`，Primary Zone 为 `z1`，新租户所在集群的 Zone 分布为 `"z1,z2,z3,z4"`，则新租户的 Primary Zone 也为 `z1`。若源租户的 Locality 为 `"F@z1,F@z2,F@z3,F@z4,F@z5"`，Primary Zone 为 `z1`，新租户所在集群的 Zone 分布是"z1,z2,z3"，则新租户的 Locality 为 `"F@z1,F@z2,F@z3"`， 同时 Primary Zone 为 `"z1,z2,z3"`。   - `kms_encrypt` 为可选项，为 `true` 则表示在恢复时需要使用步骤 5 指定的 `kms_encrypt_info`。 |

   以下示例表示从租户 `tenant1` 的备份中将表 `sales`、`products` 和 `orders` 恢复到 `new_tenant1` 中，恢复出来的数据版本为 `2021-02-28 08:59:45`。

   ```sql
   obclient> ALTER SYSTEM RESTORE crm.sales, crm.products, hr.employees FOR new_tenant1 FROM tenant1 AT 'oss://antsys-oceanbasebackup/backup_rd/?host=cn-hangzhou-alipay-b.oss-cdn.aliyun-inc.com&access_id=xxx&access_key=xxx' UNTIL '2021-02-28 08:59:45' WITH 'backup_cluster_name=ob20daily.backup&backup_cluster_id=1&pool_list=restore_pool';

   ```
 10. 恢复过程中，您可以通过 `CDB_OB_RESTORE_PROGRESS` 视图查看恢复进度。

    ```sql
    obclient> SELECT * FROM oceanbase.CDB_OB_RESTORE_PROGRESS;

    ```
 11. 恢复完成后，您可以通过 `CDB_OB_RESTORE_HISTORY` 视图查看恢复结果。

    ```sql
    obclient> SELECT * FROM oceanbase.CDB_OB_RESTORE_HISTORY;

    ```

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