
# 库表数据恢复：恢复到指定时间点（PITR）
#### 操作场景
为了保证数据的完整性，以及降低对原实例的性能影响，会进行库表级时间点恢复。库表级恢复是为选择的某个库表恢复到指定时间点。在进行库表级时间点恢复备份时，会从OBS备份空间中选择一个该时间点最近的全量备份下载至临时实例上进行全量恢复，然后在临时实例上重放Binlog到指定时间点，完成之后将对应表的数据回写到原实例的目标表，恢复时长和实例的数据量有关，平均恢复速率为35MB/s。
由于需要对实例的所有数据进行备份及恢复操作，对于数据量较大的实例，所需时间较长，请耐心等待。通过库表级时间点恢复备份，将不会导致实例数据被覆盖，您可以根据需要恢复库表。
RDS for MySQL支持恢复单个实例的库表数据，以及批量恢复多个实例的库表数据。
#### 前提条件
由于该操作会在源实例上新生成恢复后的库表，请确保您的源实例磁盘空间充足。
#### 约束限制
表1约束限制 
| 类别          | 约束限制                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
|:---|:---|
| 允许恢复的库表个数限制 | - 表级时间点恢复，单个实例一次最多可恢复1000个库，2000张表。  - 库级时间点恢复，单个实例一次最多可恢复1000个库，20000张表。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| 不支持库表恢复的场景  | - 不支持带中文的库名和表名恢复。  - 不支持库名带"."字符的数据库恢复。  - 不支持含json虚拟列的库表进行库级和表级时间点恢复。  - 库级恢复过程中库中包含的冷表不会恢复；表级恢复不支持冷表恢复。  - 如果选择恢复的时间点不存在该表，则该表不会被恢复。  - 如果库表恢复中的表存在生成列（generated column），将无法对该表进行恢复。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| 极速恢复的限制     | - 如果当前实例和所选的要恢复到的时间点支持极速恢复，可在恢复模式中选择是否使用极速恢复。  - 极速恢复时，如果实例存在XA事务，会导致数据丢失，请选择普通恢复。  - 极速恢复时，如果重放的Binlog中有对目标表重命名的操作，那么目标表可能无法被恢复。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| 库表恢复中的限制    | - 执行表级恢复时，请谨慎，避免因操作不当导致实例或业务异常。  - 库表时间点恢复期间，不允许主备实例和只读实例做规格变更，重启，删除等操作。  - 库表时间点恢复，不支持恢复视图、存储过程、触发器等对象，如需恢复建议使用实例级恢复。  - 普通表级时间点恢复或极速表级时间点恢复带外键的表，会将外键表的外键删除，同时更改表结构。  - 库级时间点恢复过程中，如果创建同名库，可能会导致新创建库被覆盖，造成数据丢失。  - 表级时间点恢复过程中，如果创建同名表，可能会导致新创建表被覆盖，造成数据丢失。  - 创建二级分区表，修改二级分区表参数，可能会导致表级恢复的数据不兼容。  - 进行库表级时间点恢复时，要恢复的库、表信息是在**所选时间点前**最新一次全量备份中读取的。由于所选时间点可以是恢复时间区间内的任意时间点，所以库表级时间点恢复支持恢复到存在指定库、表信息的最早的一次全量备份时间点。  - 如果数据库实例超过2万张表，出于性能考虑，服务不会采集历史时间点的库表元数据信息，会从当前实例查找库表信息进行恢复。如果界面没有显示目标库表，而用户确认指定时间的库表存在，用户可以自行创建同名的空库表再进行库表恢复。   |
| 批量库表恢复的限制   | - 批量恢复多个实例的库表数据，必须选择同版本RDS for MySQL实例，且实例状态必须为"正常"。  - 一次性最多可以选择20个实例进行批量库表级时间点恢复。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
   
#### 恢复库表到指定时间点
- [恢复单个实例的库表数据]
  1. [登录RDS管理控制台](https://console.huaweicloud.com/rds/#/rds/management/list)。
  
  2. 单击管理控制台左上角的![](https://support.huaweicloud.com/usermanual-rds-mysql/zh-cn_image_0000002593882307.png)，选择区域。
  
  3. 在"实例管理"页面，选择目标实例，单击实例名称，进入实例的"概览"页签。
  
  4. 在左侧导航栏，选择"备份恢复"。
  
  5. 在页面右上方，选择"恢复到指定时间点 \> 库表级恢复"。
  
  6. 跳转到库表恢复页面，填选恢复信息，单击"下一步：确认恢复信息"。 
     - 为了方便您操作，所需恢复的数据库和表名支持搜索。
     
     - 系统会自动生成以时间戳为后缀的库表名，如果需要，您也可以自定义恢复后的库表名。
     
     - 库名须满足：名称长度在1\~64个字符之间，只能包含字母、数字、下划线、中划线或$，不能包含其他特殊字符。
     
     - 表名不能重复且满足：名称长度在1\~64个字符之间，只能包含字母、数字、下划线、中划线或$，不能包含其他特殊字符并且不能与同库下的表名重名。
     
     
     图1库表时间点恢复   
     ![](https://support.huaweicloud.com/usermanual-rds-mysql/zh-cn_image_0000002736544363.png "点击放大")
     
     
  
  7. 信息确认无误后，单击"立即恢复"。
  
  8. 在"实例管理"页面，可查看该实例状态为"恢复中"，恢复过程中该实例业务不中断。 
     - 恢复时长和实例的整体数据量有关，平均速度约为35MB/s。
     
     - 通过库表时间点恢复备份，不会影响新增数据。恢复出来是一个带有时间戳后缀的临时库表，用户可以根据实际情况对这个临时库表的数据进行处理。
     
     - 您可在"任务中心"页面，查看库表时间点恢复任务的执行进度及结果。
     
     
     
     
   
- [批量恢复多个实例的库表数据]
  1. [登录RDS管理控制台](https://console.huaweicloud.com/rds/#/rds/management/list)。
  
  2. 单击管理控制台左上角的![](https://support.huaweicloud.com/usermanual-rds-mysql/zh-cn_image_0000002593882307.png)，选择区域。
  
  3. 在"实例管理"页面，勾选多个实例，在实例列表上方，选择"更多 \> 库表时间点恢复"。
  
  4. 跳转到库表恢复页面，填选恢复信息，单击"下一步：确认恢复信息"。 
     - 为了方便您操作，所需恢复的实例名称、数据库名称和表名支持搜索。
     
     - 系统会自动生成以时间戳为后缀的库表名，如果需要，您也可以自定义恢复后的库表名。
     
     - 库名须满足：名称长度在1\~64个字符之间，只能包含字母、数字、下划线、中划线或$，不能包含其他特殊字符。
     
     - 表名不能重复且满足：名称长度在1\~64个字符之间，只能包含字母、数字、下划线、中划线或$，不能包含其他特殊字符并且不能与同库下的表名重名。
     
     
     图2批量库表时间点恢复   
     ![](https://support.huaweicloud.com/usermanual-rds-mysql/zh-cn_image_0000002706785336.png "点击放大")
     
     
  
  5. 信息确认无误后，单击"立即恢复"。
  
  6. 在"实例管理"页面，可查看实例状态为"恢复中"，恢复过程中实例业务不中断。 
     - 恢复时长和实例的整体数据量有关，平均速度约为35MB/s。
     
     - 通过库表时间点恢复备份，不会影响新增数据。恢复出来是一个带有时间戳后缀的临时库表，用户可以根据实际情况对这个临时库表的数据进行处理。
     
     - 您可在"任务中心"页面，查看库表时间点恢复任务的执行进度及结果。
     
     
     
     
   
#### 后续操作
恢复成功后可以[登录数据库实例](https://support.huaweicloud.com/usermanual-rds-mysql/rds_mysql_connect_02.html)进行验证。
#### 常见问题
[如果没有备份该怎么恢复数据](https://support.huaweicloud.com/usermanual-rds-mysql/rds_08_0023.html)
#### 相关API
- [表级时间点恢复（MySQL）](https://support.huaweicloud.com/api-rds/rds_09_0020.html)
- [库级时间点恢复](https://support.huaweicloud.com/api-rds/rds_09_0022.html)
- [查询实例是否能在库表恢复时使用极速恢复（MySQL）](https://support.huaweicloud.com/api-rds/rds_09_0019.html)
 
