
# MRS集群数据备份恢复简介
#### MRS集群数据备份恢复概述
Manager提供对集群内的用户数据及系统数据的备份恢复能力，备份功能按组件提供。系统支持备份Manager的数据、组件元数据及业务数据。
MRS 3.x及之后版本，备份功能支持将数据备份至本地磁盘（LocalDir）、本端HDFS（LocalHDFS）、远端HDFS（RemoteHDFS）、NAS（NFS/CIFS）、SFTP服务器（SFTP）、OBS（MRS 3.1.0及之后版本支持），具体操作请参考[备份MRS集群组件数据](https://support.huaweicloud.com/usermanual-mrs/admin_guide_000201.html)。
备份恢复任务的使用场景如下：
- 用于日常备份，确保系统及组件的数据安全。
- 当系统故障导致无法工作时，使用已备份的数据完成恢复操作。
- 当主集群完全故障，需要创建一个与主集群完全相同的镜像集群，可以使用已备份的数据完成恢复操作。
表1根据业务需要备份元数据（MRS 2.x及之前版本） 
| 备份类型       | 备份内容                              |
|:---|:---|
| OMS        | 默认备份集群管理系统中的数据库数据（不包含告警数据）以及配置数据。 |
| LdapServer | 备份用户信息，包括用户名、密码、密钥、密码策略、用户组信息。    |
| DBService  | 备份DBService管理的组件（Hive）的元数据。       |
| NameNode   | 备份HDFS元数据。                        |
   
表2根据业务需要备份Manager配置数据（MRS 3.x及之后版本） 
| 备份类型 | 备份内容                              | 备份目录类型                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
|:---|:---|:---|
| OMS  | 默认备份集群管理系统中的数据库数据（不包含告警数据）以及配置数据。 | - LocalDir  - LocalHDFS  - RemoteHDFS  - NFS  - CIFS  - SFTP  - OBS   |
   
表3根据业务需要备份组件元数据或其他数据（MRS 3.x及之后版本） 
| 备份类型                                                                                 | 备份内容                                                                        | 备份目录类型                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
|:---|:---|:---|
| DBService                                                                            | 备份DBService管理的组件（Loader、Hive、Spark、Oozie、Hue、CDL）的元数据。                      | - LocalDir  - LocalHDFS  - RemoteHDFS  - NFS  - CIFS  - SFTP  - OBS   |
| Flink （适用于MRS 3.2.0及以后版本） | Flink的元数据。                                                                  | - LocalDir  - LocalHDFS  - RemoteHDFS  - OBS（适用于MRS 3.5.0及之后版本）                                                                                                                                                                                                                                                                                                                                                                                                                  |
| Kafka                                                                                | Kafka的元数据。                                                                  | - LocalDir  - LocalHDFS  - RemoteHDFS  - NFS  - CIFS  - OBS                                                                                                                     |
| NameNode                                                                             | 备份HDFS元数据。添加多个NameService后，支持不同NameService的备份恢复功能且备份恢复操作与默认实例"hacluster"一致。 | - LocalDir  - RemoteHDFS  - NFS  - CIFS  - SFTP  - OBS                                                                                                                     |
| Yarn                                                                                 | 备份Yarn服务资源池相关信息。                                                            | - LocalDir  - RemoteHDFS  - NFS  - CIFS  - SFTP  - OBS                                                                                                                     |
| HBase                                                                                | HBase系统表的tableinfo文件和数据文件。                                                  | - LocalDir  - RemoteHDFS  - NFS  - CIFS  - SFTP  - OBS                                                                                                                     |
| IoTDB                                                                                | IoTDB的元数据。                                                                  | - LocalDir  - NFS  - RemoteHDFS  - CIFS  - SFTP                                                                                                                                                                                                                                                           |
| ClickHouse                                                                           | ClickHouse的元数据。                                                             | - LocalDir  - RemoteHDFS                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
   
表4根据业务需要备份特定组件业务数据（MRS 3.x及之后版本） 
| 备份类型       | 备份内容                                                                                                       | 备份目录类型                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
|:---|:---|:---|
| HBase      | 备份表级别的用户数据。                                                                                                | - RemoteHDFS  - NFS  - CIFS  - SFTP  - OBS（适用于MRS 3.5.0及之后版本）   |
| HDFS       | 备份用户业务对应的目录或文件。 加密目录不支持备份恢复。 | - RemoteHDFS  - NFS  - CIFS  - SFTP  - OBS（适用于MRS 3.5.0及之后版本）   |
| Hive       | 备份表级别的用户数据。                                                                                                | - RemoteHDFS  - NFS  - CIFS  - SFTP  - OBS（适用于MRS 3.5.0及之后版本）   |
| IoTDB      | 备份IoTDB业务数据。                                                                                               | RemoteHDFS                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| ClickHouse | 备份表级别的用户数据。                                                                                                | RemoteHDFS                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| Doris      | 备份Doris业务数据。适用于MRS 3.3.1及以后版本。                                                                             | - RemoteHDFS  - OBS                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
   
MRS 3.x及之后版本，需要特别说明的是，部分组件不提供单独的数据备份与恢复功能：
- Kafka支持副本特性，在创建主题时可指定多个副本来备份数据。
- 针对MRS 3.5.0及之后版本集群，Kafka作为消息通道，其数据并非永久存储，默认只保留最近7天的数据，不支持做单独的数据备份。
- CDL的数据存储在DBService与Kafka服务中，系统管理员可以通过创建备份DBService和Kafka的任务来备份数据。
- Mapreduce和Yarn的数据存放在HDFS上，故其依赖HDFS提供备份与恢复即可。
- ZooKeeper中存储的业务数据，其备份恢复能力由各上层组件按需独立实现。
 
#### MRS集群数据备份恢复原理
**任务**
在进行备份恢复之前，需要先创建备份恢复任务，并指定任务的参数，例如任务名称、备份数据源和备份文件保存的目录类型等等。通过执行备份恢复任务，用户可完成数据的备份恢复需求。在使用Manager执行恢复HDFS、HBase（MRS 3.x及之后版本）、Hive和NameNode数据时，无法访问集群。
每个备份任务可同时备份不同的数据源，每个数据源将生成独立的备份文件，每次备份的所有备份文件组成一个备份文件集，可用于恢复任务。备份任务支持将备份文件保存在Linux本地磁盘、本集群HDFS与备集群HDFS中。
- MRS 3.x及之后版本，备份任务提供全量备份或增量备份的策略，云数据备份任务不支持增量备份策略。如果备份的路径类型是NFS或CIFS，不建议使用增量备份功能。因为在NFS或CIFS备份时使用增量备份时，每次增量备份都会刷新最近一次全量备份的备份数据，所以不会产生新的恢复点。
- MRS 2.x及之前版本，备份任务提供全量备份或增量备份的策略，增量备份策略支持HDFS和Hive备份任务，OMS、LdapServer、DBService和NameNode备份任务默认只应用全量备份策略。
任务运行规则：
- 某个任务已经处于执行状态，则当前任务无法重复执行，其他任务也无法启动。
- 周期任务自动执行时，距离该任务上次执行的时间间隔需要在120秒以上，否则任务推迟到下个周期启动。手动启动任务无时间间隔限制。
- 周期任务自动执行时，当前时间不得晚于任务开始时间120秒以上，否则任务推迟到下个周期启动。
- 周期任务锁定时无法自动执行，需要手动解锁。
- OMS、LdapServer（MRS 2.x及之前版本）、DBService、Kafka（MRS 3.x及之后版本）和NameNode备份任务开始执行前，若主管理节点"LocalBackup"分区可用空间小于20GB，则无法开始执行。
- 用户在规划备份恢复任务时，请严格根据业务逻辑、数据存储结构、数据库或表关联关系，选择需要备份或者恢复的数据。
  - MRS 2.x及之前版本，系统默认创建了一个间隔为24小时的周期备份任务"default"，支持全量备份OMS、LdapServer、DBService和NameNode数据到Linux本地磁盘。
  
  - MRS 3.x及之后版本，系统默认创建间隔为1小时的周期备份任务"default-oms"、"default-*集群ID*"，支持全量备份OMS及集群的DBService、NameNode等元数据到本地磁盘。
   
**快照**（MRS 3.x及之后版本）
系统通过快照技术，快速备份数据。快照包含HBase快照、HDFS快照。
- HBase快照 HBase快照是HBase表在特定时间的一个备份，该备份文件不复制业务数据，不影响RegionServer。HBase快照主要复制表的元数据，包含table descriptor，region info和HFile的引用信息。通过这些元数据信息可以恢复快照时间点之前的数据。
  
- HDFS快照 HDFS快照是HDFS文件系统在特定时间点的只读备份副本，主要用于数据备份、用户误操作保护和灾难恢复的场景。
  任意HDFS目录均可以配置启用快照功能并创建对应的快照文件，为目录创建快照前系统会自动启用此目录的快照功能。创建快照不会对正常的HDFS操作有任何影响。每个HDFS目录最多可创建65536个快照。
  如果一个HDFS目录已创建快照，那么在快照完全删除以前，此目录无法删除或修改名称。该目录的上级目录或子目录也无法再创建快照。
  
**DistCp**（MRS 3.x及之后版本）
DistCp（distributed copy）是一个用于在本集群HDFS中或不同集群HDFS间进行大量数据复制的工具。在HBase、HDFS或Hive元数据的备份恢复任务中，如果选择将数据备份在备集群HDFS中，系统将调用DistCp完成操作。主备集群请选择安装相同版本的MRS软件版本并安装集群系统。
DistCp使用Mapreduce来影响数据的分布、异常处理及恢复和报告，此工具会把指定列表中包含的多个源文件和目录输入不同的Map任务，每个Map任务将复制列表中指定文件对应分区的数据。
使用DistCp在两个集群的HDFS间进行数据复制，集群双方需要分别配置互信（同一个FusionInsight Manager管理下的集群不需要配置互信）和启用集群间复制功能。集群数据备份到另一个集群的HDFS时，需要安装Yarn组件，否则备份失败。
**本地快速恢复**（MRS 3.x及之后版本）
使用DistCp将本集群HBase、HDFS和Hive数据备份在备集群HDFS中以后，本集群HDFS保留了备份数据的快照。用户可以通过创建本地快速恢复任务，直接从本集群HDFS的快照文件中恢复数据。
**NAS**（MRS 3.x及之后版本）
NAS（Network Attached Storage）是一种特殊的专用数据存储服务器，包括存储器件和内嵌系统软件，可提供跨平台文件共享功能。利用NFS（支持NFSv3、NFSv4）和CIFS（支持SMBv2、SMBv3）协议，用户可以连通MRS的业务平面与NAS服务器，将数据备份至NAS或从NAS恢复数据。
- 数据备份至NAS前，系统会自动将NAS共享地址挂载为备份任务执行节点的本地分区。在备份结束后，系统会卸载备份任务执行节点的NAS共享分区。
- 为防止备份恢复失败，数据备份及恢复期间，请勿访问NAS服务器挂载至本地的共享地址，如："/srv/BigData/LocalBackup/nas"。
- 业务数据备份至NAS时，会使用DistCp。
 
#### MRS集群数据备份恢复特性规格
表5备份恢复特性规格 
| 项目                    | 参数                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
|:---|:---|
| 备份或恢复任务最大数量（个）        | 100                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| 同一集群同时运行的任务数量（个）      | MRS 3.6.0-LTS及之前版本：1 MRS 3.6.0-LTS.1及之后版本：默认值为2，最大不超过8。 说明： - MRS 3.6.0-LTS.1及之后版本，该参数可通过以下操作进行修改： 1. 以**omm** 用户依次登录集群**主、备OMS节点** ，执行以下命令修改文件。 **vi $BIGDATA_HOME/om-server/om/etc/om/controller.properties** 根据需要修改"controller.conf.backup.task.parallel.num"参数值。   2. 在主OMS节点，执行以下命令重启controller生效。 **sh ${BIGDATA_HOME}/om-server/om/sbin/restart-controller.sh**     - 仅备份任务支持并发执行，恢复任务不支持并发执行。SFTP类型的业务数据，备份任务也不支持并发执行。   |
| 等待运行的任务最大数量（个）        | 199                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| Linux本地磁盘最大备份文件大小（GB） | 600                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
   
MRS 3.x及之后版本，若业务数据存储在ZooKeeper中的上层组件，在备份恢复这类数据时，需确保单个备份或恢复任务的znode数量不会过大，否则会造成任务失败，并影响Zookeeper的服务性能。可通过如下方法确认单个备份或恢复任务的znode数量：
- 单个备份或恢复任务的znode数量要少于操作系统的文件句柄限制。查看句柄限制的方式如下：
  1. 使用shell命令输入：**cat /proc/sys/fs/file-max**，用于查看系统级的最大限制。
  
  2. 使用shell命令输入：**ulimit -n**，用于查看用户级的限制。
   
- 对于父目录的znode数量超过上述限制的情形，可以通过其子目录进行批量备份与恢复。使用Zookeeper提供的客户端脚本查看znode数量的方式：
  1. 在Manager首页，选择"集群 \> 服务 \> Zookeeper \> 实例"，查看Zookeeper各角色的管理IP。 登录集群Manager具体操作，请参考[访问MRS集群Manager](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0128.html)。
     
  
  2. 登录客户端所在节点，配置环境变量并认证用户（未开启Kerberos认证的集群无需操作）后执行如下命令： **zkCli.sh -server** *ip* **:** *port*
     其中*ip* 可以为任意管理IP，*port*默认值是2181。
     
  
  3. 当看到如下输出信息时，表示已经成功连接上Zookeeper服务器。
     ```
     WatchedEvent state:SyncConnected type:None path:null
     [zk: ip:port(CONNECTED) 0]
     ```
     
  
  4. 使用getusage命令查看待备份目录的znode数量，例如： **getusage** */hbase/region*
     输出结果中"Node count=xxxxxx"即表示region目录下存储的znode数量。
     
   
表6"default"任务规格（MRS 2.x及之前版本） 
| 项目         | OMS  | LdapServer | DBService | NameNode |
|:---|:---|:---|:---|:---|
| 备份周期       | 1小时                                   ||||
| 最大备份数      | 2个                                    ||||
| 单个备份文件最大大小 | 10MB | 20MB       | 100MB     | 1.5GB    |
| 最大占用磁盘大小   | 20MB | 40MB       | 200MB     | 3GB      |
| 备份数据保存位置   | 主备管理节点"*数据存放路径*/LocalBackup/"         ||||
   
表7"default"任务规格（MRS 3.x及之后版本） 
| 项目         | OMS    | HBase   | Kafka | DBService | NameNode    |
|:---|:---|:---|:---|:---|:---|
| 备份周期       | 1小时                                            |||||
| 最大备份数      | 168个（7天历史数据）                      |||| 24个（1天历史数据） |
| 单个备份文件最大大小 | 10MB   | 10 MB   | 512MB | 100MB     | 20GB        |
| 最大占用磁盘大小   | 1.64GB | 1.64 GB | 84GB  | 16.41GB   | 480GB       |
| 备份数据保存位置   | 主备管理节点"*数据存放路径*/LocalBackup/"                  |||||
   
- 默认任务保存的备份数据，请管理员根据企业运维要求，定期转移并保存到集群外部。
- MRS 3.x及之后版本，管理员可直接创建DistCp备份任务将OMS、DBService和NameNode等的数据保存到外部集群。
- 集群数据的备份任务运行时长可根据要备份的数据量除以集群与备份设备之间的网络带宽来计算得出，在实际场景中，建议将计算得出的时长乘以1.5作为任务执行时长参考值。
- 执行数据备份任务会对集群的最大IO性能产生影响，建议备份任务运行时间与集群业务高峰错开。
 
