
# 恢复ClickHouse业务数据
#### 操作场景
在用户意外修改、删除或需要找回数据时，集群用户对ClickHouse进行重大操作（如升级、重大数据调整等）后，系统数据出现异常或未达到预期结果，模块全部故障无法使用，或者迁移数据到新集群的场景中，需要对ClickHouse进行恢复数据操作。
集群用户可以通过FusionInsight Manager创建恢复ClickHouse业务数据任务，系统仅支持手动进行数据恢复。
ClickHouse备份恢复功能不支持识别用户的ClickHouse表、索引、视图等对象在业务和结构上存在的关联关系。用户在执行备份恢复任务时，需要根据业务场景管理统一的恢复点，防止影响业务正常运行。
MRS集群支持多种数据路径类型恢复ClickHouse业务数据：
- RemoteHDFS：表示从备集群的HDFS目录恢复数据。

- OBS：表示从OBS中恢复数据。
 
![](https://support.huaweicloud.com/usermanual-mrs/public_sys-resources/note_3.0-zh-cn.png)
当业务正常时需要恢复数据，建议手动备份最新管理数据后，再执行恢复数据操作。否则会丢失从备份时刻到恢复时刻之间的ClickHouse数据。
#### 约束与限制
- 该功能仅MRS 3.1.0及之后版本支持。
- 只支持进行数据备份时的系统版本与当前系统版本一致时的数据恢复。
- ClickHouse元数据恢复和业务数据恢复不能同时进行操作，否则会导致业务数据恢复失败。建议元数据恢复完成后再进行业务数据恢复。
- MRS 3.3.0-LTS.1及之后版本，支持将ClickHouse业务数据备份文件保存至OBS。
 
#### 对系统的影响
- 恢复过程中会停止用户认证，用户无法开始新的连接。
- 数据恢复后，会丢失从备份时刻到恢复时刻之间的数据。
- 数据恢复后，需要重新启动ClickHouse的上层应用。
 
#### 前提条件
- 如果需要从远端HDFS恢复数据，需要准备备集群，且已完成数据备份，详细操作请参见[备份ClickHouse业务数据](https://support.huaweicloud.com/usermanual-mrs/mrs_01_300052.html)。如果主备集群部署为安全模式，且主备集群不是由同一个FusionInsight Manager管理，则必须配置系统互信，请参见[配置MRS集群间互信](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0354.html)。如果主备集群部署为普通模式，则不需要配置互信。

- 主备集群上的时间必须一致，而且主备集群上的NTP服务必须使用同一个时间源。
- 规划好恢复数据保存表的数据库，数据表在HDFS的保存位置，以及访问恢复数据的用户清单。
- 检查ClickHouse备份文件保存路径。
- 停止ClickHouse的上层应用。
- 主备集群中，从远端HDFS恢复至本地时，需要确保ClickHouse的"HADOOP_RPC_PROTECTION"配置项与HDFS的"hadoop.rpc.protection"配置项的值保持一致。
- 若待恢复集群不存在备份业务数据的元数据信息时，恢复业务数据前需要恢复备份业务数据对应的备份元数据信息，或在恢复时配置备份元数据和备份业务数据同时恢复。
- 若待恢复数据非本集群数据，待恢复数据为MRS其他ClickHouse集群的备份数据，还需要满足如下要求：
  1. 备份数据集群与待恢复集群MRS版本一致。
  
  2. 备份数据集群与待恢复集群模式一致。
  
  3. 备份数据集群与待恢复集群ClickHouse拓扑一致，包括shard、副本。
  
  4. 待恢复集群ClickHouse磁盘分区数量与磁盘容量需大于等于备份数据集群。
   
 
#### 恢复ClickHouse业务数据
1. 登录MRS集群Manager界面。 
   登录集群Manager界面请参考[访问MRS集群Manager](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0128.html)。
   
   
2. 选择"运维 \> 备份恢复 \> 备份管理"。
3. 在任务列表指定任务的"操作"列，选择"更多 \> 查询历史"，打开备份任务执行历史记录。
   
   在弹出的窗口中，在指定一次执行成功记录的"备份路径"列，单击"查看"，打开此次任务执行的备份路径信息，查找以下信息：
   - "备份对象"表示备份的数据源。
   
   - "备份路径"表示备份文件保存的完整路径。 选择正确的项目，在"备份路径"手工选中备份文件的完整路径并复制。
     
   
   
   
   
4. 选择"运维 \> 备份恢复 \> 恢复管理"。
5. 单击"创建"。
6. 在"任务名称"填写恢复任务的名称。
7. 在"恢复对象"选择待操作的集群。
8. 在"恢复配置"的"业务数据"下，勾选"ClickHouse"。
9. 在"ClickHouse"的"路径类型"，选择一个备份目录的类型。 
   表1恢复数据 
   | 路径类型       | 配置参数             | 参数说明                                                                                                                                                                                       |
   |:---|:---|:---|
   | RemoteHDFS | 源端NameService名称  | 备份数据集群的NameService名称。可在备集群HDFS服务的"管理NameService"页面获取，例如"hacluster"。                                                                                                                        |
   | RemoteHDFS | IP 模式            | 目标IP的IP地址模式。系统会根据集群网络类型自动选择对应的IP模式，如IPv4或者IPv6。                                                                                                                                            |
   | RemoteHDFS | 源端主NameNode IP地址 | 备集群主NameNode业务平面IP地址。登录备集群的Manager界面，选择"集群 \> 服务 \> HDFS \> 实例"，即可查看主NameNode业务平面IP地址。 MRS 3.2.0及之后版本需要配置该参数。               |
   | RemoteHDFS | 源端备NameNode IP地址 | 备集群备NameNode业务平面IP地址。登录备集群的Manager界面，选择"集群 \> 服务 \> HDFS \> 实例"，即可查看备NameNode业务平面IP地址。 MRS 3.2.0及之后版本需要配置该参数。                 |
   | RemoteHDFS | 源端NameNode IP地址  | 备集群NameNode业务平面IP地址，支持主节点或备节点。登录备集群的Manager界面，选择"集群 \> 服务 \> HDFS \> 实例"，即可查看NameNode业务平面IP地址。 仅MRS 3.1.0和MRS 3.1.2版本需要配置该参数。 |
   | RemoteHDFS | 源端NameNode RPC端口 | 目的端集群HDFS基础配置"dfs.namenode.rpc.port"参数值。 MRS 3.2.0及之后版本需要配置该参数。                                                              |
   | RemoteHDFS | 源端路径             | 参考[步骤 3]中获取的"备份路径"，填写备集群保存备份数据的完整HDFS路径。例如，"*备份路径/备份任务名_数据源_任务创建时间/*"。                                                       |
   | RemoteHDFS | 最大map数           | 执行MapReduce任务的最大map数，默认值为"20"。 仅MRS 3.1.0和MRS 3.1.2版本需要配置该参数。                                                                  |
   | RemoteHDFS | 单个map的最大带宽(MB/s) | 单个map最大带宽，默认值为"100"。 仅MRS 3.1.0和MRS 3.1.2版本需要配置该参数。                                                                          |
   | RemoteHDFS | 恢复点列表            | 单击"刷新"，然后选择一个已备份的HDFS目录。 仅MRS 3.6.0及之后版本需要配置该参数。                                                                              |
   | RemoteHDFS | 并发线程数            | 填写备份数据的最大并发数，取值范围为1\~100。 仅MRS 3.6.0及之后版本需要配置该参数。                                                                           |
   | OBS        | 源端路径             | 备份文件在OBS中保存的完整路径。例如："*备份路径* */* *备份任务名_* *数据源_* *任务创建时间/* *版本号_* *数据源_* *任务执行时间.tar.gz*"。                                                                                                  |
   | OBS        | 恢复点列表            | 单击"刷新"，然后选择一个已备份的OBS目录。 仅MRS 3.6.0及之后版本需要配置该参数。                                                                               |
   | OBS        | 并发线程数            | 填写备份数据的最大并发数，取值范围为1\~100。 仅MRS 3.6.0及之后版本需要配置该参数。                                                                              |
      
   
   
10. 在"恢复内容"中，选择一个或多个需要恢复的ClickHouse表。 
    支持两种方式选择恢复数据：
    - 添加恢复数据文件 单击导航中某个数据库的名称，将展开显示此数据库中的所有表，勾选指定的表。
      1. 单击"添加"。
      
      2. 在"文件目录"框内选择要恢复的表，单击"添加"添加到"恢复内容"框内。
      
      3. 单击"确定"添加恢复数据文件。
       
    
    - 正则表达式筛选
      1. 单击"正则表达式输入"。
      
      2. 根据界面提示，在第一个输入框填入ClickHouse表所在的数据库，需要与当前存在的数据库完全匹配，例如"/default_cluster/database"。
      
      3. 在第二个框输入正则表达式，支持标准正则表达式。例如要筛选数据库中包含test关键字的所有的表，输入"test.\*"。
      
      4. 单击"刷新"，在"目录名称"查看筛选的表。
      
      5. 单击"同步"保存筛选结果。
      
      
      - 输入正则表达式时，可以使用![](https://support.huaweicloud.com/usermanual-mrs/zh-cn_image_0000002460764306.png "点击放大")和![](https://support.huaweicloud.com/usermanual-mrs/zh-cn_image_0000002460604698.png)增加或删除一条表达式。
      
      - 如果已选择的表或目录不正确，可以单击"清除选中节点"清除勾选。
       
    
    
    
    
11. 单击"校验"查看恢复任务的配置是否正确。(若恢复内容未配置，请跳过此步骤) 
    校验失败可能存在以下原因：
    - 目的端NameNode IP地址不正确。
    
    - 待备份的目录或表不存在。
    
    - NameService名称不正确。
    
    
    
    
12. 单击"确定"保存。
13. 在恢复任务列表已创建任务的"操作"列，单击"执行"，开始执行恢复任务。 
    - 恢复成功后进度显示为绿色。
    
    - 恢复成功后此恢复任务不支持再次执行。
    
    - 如果恢复任务在第一次执行时由于某些原因未执行成功，在排除错误原因后单击"重试"，重试恢复任务。
    
    
    
    
 
