
# TaurusDB库表数据恢复：恢复到指定时间点（PITR）
#### 操作场景
为了保证数据的完整性，以及降低对原实例的性能影响，在进行表级时间点恢复备份时，首先将选中时间点的全量数据和增量数据在后台恢复至一个临时实例，然后自动导出用户需要恢复的表，再将这些表恢复至原实例。由于需要对实例的所有数据进行备份及恢复操作，对于数据量较大的实例，所需时间较长，请耐心等待。通过表级时间点恢复备份，将不会导致实例数据被覆盖，您可以根据需要恢复库表。
#### 约束限制
- 表级时间点恢复不支持恢复带触发器的表。
- 为避免恢复失败和对原数据产生影响，表级恢复会去除外键约束。
- 如果选择恢复的时间点不存在该表，则该表不会被恢复。
- 表级时间点恢复期间不允许对实例做规格变更，重启，删除等操作。
- 实例中的总表数量小于等于20000张，才能执行恢复库表操作。
- 当需要恢复的表数量超过2000张时，建议您使用[TaurusDB全量数据恢复：恢复到指定时间点（PITR）](https://support.huaweicloud.com/usermanual-taurusdb/taurusdb_03_0060.html)进行恢复。
- 待恢复的原表名如果存在字母、数字、下划线、中划线之外的特殊字符或中文字符，会导致恢复任务失败。
- 修改内核参数rds_extended_partitions_enabled，可能会带来表级恢复的兼容性问题，修改前请联系客服确认。
 
#### 表级时间点恢复
1. [登录TaurusDB管理控制台](https://console.huaweicloud.com/gaussdbformysql/#/management/list)。
2. 单击管理控制台左上角的![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000002671347251.png)，选择区域。
3. 在"实例管理"页面，选择目标实例，单击实例名称，进入实例概览页签。
4. 在左侧导航栏，单击"备份恢复"，在"全量备份"子页签下，单击"表级时间点恢复"。 
   图1表级时间点恢复   
   ![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000002358888164.png "点击放大")
   
   
   
5. 跳转至"表级时间点恢复"页面，填选恢复日期、可恢复的时间区间、要恢复到的时间点和选择恢复库表。 
   图2设置恢复信息   
   ![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000002392571217.png "点击放大")
   
   - 为了方便您操作，所需恢复的数据库和表名支持搜索。
   
   - 系统会自动生成以时间戳为后缀的库表名，如果需要，您也可以自定义恢复后的库表名。表名不能重复且满足：名称长度在1\~64个字符之间，只能包含字母、数字、下划线、中划线或$，不能包含其他特殊字符。
   
   - 恢复时间点库表是将选择的恢复时间点前最新一次全量备份中的库表数据恢复到某一个时间点，"最新库表"是将当前时间点存在的库表数据恢复到某一个时间点。
   
   - 如果是恢复的时间点前最新一次全量备份之后创建的库表，默认无法选中，可选择"最新库表"获取最新库表信息。
   
   - 如果需要恢复的库表已不存在或被误删，需要先登录数据库并创建同名库表，然后在"最新库表"中选择该库表进行恢复。
   
   - 库表恢复只会恢复指定的表，操作时请确认已选中所有需要恢复的表。
   
   
   
   
6. 单击"下一步：确认恢复信息"，核对需要恢复的库表信息，确认无误后，单击"立即恢复"。 
   如需修改恢复选项信息，单击"上一步：库表选择"进行修改。
   
   
7. 在"实例管理"页面，可查看该实例状态为"恢复中"，恢复过程中该实例业务不中断。 
   同时，您可在"任务中心"页面，查看"表级时间点恢复"任务的执行进度及结果。
   恢复成功后，您可根据实际情况对表进行数据处理。
   
   
 
#### 常见问题
#### 修改以下参数可能会导致表级恢复失败
表1参数说明 
| 参数名称                                                                                   | 场景                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | 原因                                                                                                                   | 解决方案                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
|:---|:---|:---|:---|
| rds_extended_partitions_enabled                                                        | 如果 rds_extended_partitions_enabled 为 OFF，且存在二级分区表，则会导致表级恢复失败。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | 二级分区参数关闭后，恢复过程中无法创建二级分区表，无法写入数据。                                                                                     | 需删除二级分区表，或修改实例参数 rds_extended_partitions_enabled为ON后，再重新下发表级时间点恢复。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| sql_mode                                                                               | 如果 sql_mode 设置为 NO_ZERO_IN_DATE、NO_ZERO_DATE，但表中存在时间字段为全0的数据。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | 修改sql_mode不会对已有数据做校验，但在表级恢复过程中历史数据重新写入表时，会根据规则进行校验。NO_ZERO_DATE，日期中不允许使用 "0000-00-00"。NO_ZERO_IN_DATE 日期中年、月或日不允许为0。 | 删除sql_mode中的 NO_ZERO_IN_DATE,NO_ZERO_DATE 后重新下发表级时间点恢复。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| innodb_default_row_format   | 如果内核参数innodb_default_row_format 由 DYNAMIC/COMPRESSED 修改为 COMPACT 后，下发重建表操作。 重建表操作包括如下SQL语句： - ALTER TABLE *table_name*ALGORITHM = COPY;  - ALGORITHM = INPLACE;  - OPTIMIZE TABLE;   | 数据库仅对新写入的数据执行校验，而不会对存量数据进行校验。这一机制可能导致表级恢复时，历史数据重新写入目标表的过程中，因部分数据行大小超出最大限制而引发恢复失败。                                    | 修改源实例内核参数 innodb_default_row_format为dynamic后重新下发表级时间点恢复。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| innodb_default_row_format   | 单独执行如下SQL： ALTER TABLE *table_name*ROW_FORMAT=COMPACT;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | 数据库仅对新写入的数据执行校验，而不会对存量数据进行校验。这一机制可能导致表级恢复时，历史数据重新写入目标表的过程中，因部分数据行大小超出最大限制而引发恢复失败。                                    | 1. 修改源实例表的行格式，以下两种方式二选一。 - ALTER TABLE *table_name*ROW_FORMAT = DYNAMIC;    - ALTER TABLE *table_name*ROW_FORMAT = COMPRESSED;    2. 重新选择修改行格式后的时间点进行表级时间点恢复。   |
   
#### varchar字段的default默认值为中文，可能导致恢复失败
- 场景 varchar字段默认值为中文，可能导致恢复失败，报错：Invalid default value for 'xxx'。
  
- 解决方案 MySQL数据库不建议使用中文作为默认值，建议将默认值改为英文字符。
  
 
#### 相关API
- [表级时间点恢复](https://support.huaweicloud.com/api-taurusdb/CreateRestoreTables.html)
- [查询表级时间点恢复可选表](https://support.huaweicloud.com/api-taurusdb/ShowRestoreAvailableTables.html)
 
