# 通过备份与恢复实现华为云Elasticsearch集群间数据迁移
CSS服务的Elasticsearch集群之间的数据迁移，可以通过备份与恢复集群快照功能实现。
#### 应用场景
通过备份与恢复实现华为云Elasticsearch集群间数据迁移仅适用于源集群和目标集群都是CSS服务的集群，且依赖对象存储服务OBS。常用于以下场景：
- 跨地域或跨账号迁移：将其他Region或账号下的Elasticsearch集群迁移到当前集群中。
- 跨版本迁移：将低版本的Elasticsearch集群数据迁移到高版本的集群中。
- 集群合并：将两个Elasticsearch集群的索引数据合并到一个集群中。
 
#### 方案架构
图1迁移流程   
![](https://support.huaweicloud.com/bestpractice-css/figure/zh-cn_image_0000002006238545.png "点击放大")
通过备份与恢复实现华为云Elasticsearch集群间数据迁移的迁移流程如[图1]所示。
1. 源Elasticsearch集群创建快照，将快照存储在OBS桶中。
2. 源Elasticsearch集群将备份好的快照，恢复至目标Elasticsearch集群。
 
#### 方案优势
- 易于操作和管理：在CSS服务控制台使用集群快照功能实现备份恢复，操作简单，且易于管理和自动化。
- 适用于大规模数据迁移：快照备份适用于数据量大的场景，特别是当数据量达到GB、TB甚至PB级别时。
- 支持跨地域和跨账号迁移：通过结合OBS的跨区域复制功能，可以实现跨地域和跨账号的数据迁移。
- 恢复过程可控：在恢复数据时，可以选择恢复特定索引或全部索引，并且可以指定恢复到特定的集群状态。
- 迁移时长可控：基于迁移时长评估公式可以配置数据迁移速率，理想状态下等于文件复制速率。
 
#### 性能影响
使用备份与恢复迁移集群的核心在于直接复制数据存储层的文件以实现数据备份，该方案避免了对Elasticsearch外部读写接口的依赖，从而显著降低了对源集群性能的影响。对延迟敏感性较低的业务场景，此方法对集群性能的干扰几乎可以忽略。
#### 约束限制
- 目标集群的版本不能低于源集群的版本，版本兼容性分析请参见[Snapshot version compatibility](https://www.elastic.co/guide/en/elasticsearch/reference/7.17/snapshot-restore.html#snapshot-cluster-compatibility)。
- 建议目标集群的节点数大于源集群的分片副本数最大值，防止集群同一个分片的副本（Replica）与主分片（Primary）无法完全分配，导致集群状态处于Yellow状态。
- 建议目标集群的节点数大于源集群的节点数的一半，防止目标集群规模过小，导致单个节点承受的压力（CPU/IO）远超源集群。
- 建议目标集群的CPU、MEM和Disk配置大于或等于源集群的配置，防止目标集群性能降级，导致服务崩溃或响应变慢。
 
#### 迁移时长
迁移过程分为备份阶段和恢复阶段，备份阶段耗时由源集群决定，恢复阶段耗时由目标集群决定。
迁移总时长的评估公式：
- 当索引shard个数大于节点个数时 总时长（s）= 待迁移的数据量（GB）÷ 40MB ÷（源集群节点个数+目的集群节点个数）x 索引个数
  
- 当索引shard个数小于节点个数时 总时长（s）= 待迁移的数据量（GB）÷ 40MB ÷（源集群索引shard个数+目的集群索引shard个数）x 索引个数
  
上述评估公式基于理想状态下（即单节点以最快速度40MB/s传输）的迁移时长，实际迁移时长还会受到网络、OBS性能等因素影响。
#### 前提条件
- 目标集群（Es-2）和源集群（Es-1）处于可用状态。建议在业务空闲期进行集群迁移。
- 确认目标集群（Es-2）和源集群（Es-1）在同一个Region和账号下。 如果集群跨地域或跨账号，请参考[配置跨区域复制](https://support.huaweicloud.com/usermanual-obs/obs_03_0003.html)将源集群存储快照的OBS桶复制到目标集群存储快照的OBS桶中，迁移时在**目标集群**执行恢复操作。
  
- 确认已准备好用于存储快照的OBS桶。OBS桶必须和Elasticsearch集群位于同一"区域"，且"存储类别"为"标准存储"。
 
#### 操作步骤
1. 登录[云搜索服务管理控制台](https://console.huaweicloud.com/elasticsearch/)。
2. 在左侧导航栏，选择"集群管理 \> Elasticsearch"。
3. 在集群列表，单击源集群名称"Es-1"，进入集群详情页。
4. 选择"集群快照"页签，单击"开启快照"，在开启快照对话框中完成快照的基础配置。
   表1配置开启快照 
   | 参数         | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
   |:---|:---|
   | OBS桶         | 在下拉框中选择存储快照的OBS桶。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
   | 备份路径      | 设置快照在OBS桶中的存放路径。可以保持默认值。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
   | 最大备份速率（每秒） | 配置每个节点的最大备份速率，当集群快照的备份速率超过设定值时将触发限流机制，防止速率太大导致资源占用过高，影响集群稳定性。实际备份速率可能因OBS性能、磁盘IO等限制而无法达到设定值。可以保持默认值40MB。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
   | 最大恢复速率（每秒） | 配置每个节点的最大恢复速率，当集群快照的恢复速率超过设定值时将触发限流机制，防止速率太大导致资源占用过高，影响集群稳定性。实际恢复速率可能因OBS性能、磁盘IO等限制而无法达到设定值。建议配置为40MB。 对于版本高于7.6.2的Elasticsearch集群，实际最大恢复速率还受限于"indices.recovery.max_bytes_per_sec"参数。 - 当"最大恢复速率（每秒）"小于"indices.recovery.max_bytes_per_sec"时，实际限流值为"最大恢复速率（每秒）"。  - 当"最大恢复速率（每秒）"大于"indices.recovery.max_bytes_per_sec"时，实际限流值为"indices.recovery.max_bytes_per_sec"。   说明： - 当需要查看"indices.recovery.max_bytes_per_sec"参数值时，可以执行以下命令： ``` GET _cluster/settings ```   - 当需要修改"indices.recovery.max_bytes_per_sec"参数时，可以参考以下命令： ``` PUT _cluster/settings { "transient": { "indices.recovery.max_bytes_per_sec": "100mb" } } ```    |
   | IAM委托      | 选择IAM委托，授权当前账号访问和使用OBS的权限。快照数据存储到OBS桶中，需要OBS的操作权限。推荐使用"自动创建委托"所建的委托"css_obs_agency"，当已有自动创建的委托时，可以单击"委托一键授权"实现最小化权限。 警告： 委托名称必须仅包含字符a-z、A-Z、0-9、下划线（_）和短横线（-），否则会备份失败。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   | 自动创建集群快照    | 数据迁移不建议启用自动创建快照，避免占用存储资源。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
      
   
5. 配置完成后，单击"确定"，启用集群快照功能。
6. 在集群快照页面，单击"手动创建快照"，在弹窗中完成备份策略配置。
   表2创建快照配置 
   | 参数    | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
   |:---|:---|
   | 快照名称   | 设置快照名称。可以保持默认值。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
   | 索引    | 指定备份的索引名称。 - 支持备份指定的索引，多个索引之间使用英文逗号隔开，例如"index1,index2,index3"。  - 支持使用"\*"匹配多个索引，比如"index\*"，表示备份快照中名称前缀是index的所有索引。   如果不填写，则默认备份集群中所有索引。 索引名称不能包含空格、大写字母和特殊字符""\\\<\|\>/?"。 |
   | 快照描述 | 添加快照描述信息。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
      
   
7. 配置完成后，单击"确定"，开始为源集群创建快照。 当集群快照任务列表中"快照任务状态"为"可用"时，表示快照创建成功。
   
8. 查看数据是否备份成功。 在集群快照任务列表中，单击快照名称左侧的![](https://support.huaweicloud.com/bestpractice-css/figure/zh-cn_image_0000002507086571.png)，展开快照详情，获取备份的分片和索引信息，通过对比数据可以判断数据是否备份成功。
   图2查看详情   
   ![](https://support.huaweicloud.com/bestpractice-css/figure/zh-cn_image_0000002445990653.png "点击放大") 
9. 在集群快照任务列表中，选择需要恢复的快照，单击操作列的"恢复"，在恢复对话框中完成配置。
   ![](https://support.huaweicloud.com/bestpractice-css/public_sys-resources/note_3.0-zh-cn.png)
   - **保持原索引名恢复**
     在恢复快照时，如果恢复后的索引名称需要和源快照索引的名称保持一致，则只需要配置"索引"，指定需要恢复的索引名称即可。
     
   
   - **重命名索引恢复**
     在恢复快照时，如果需要重命名恢复后的索引名称，则需要同时配置"索引""索引名称匹配模式"和"索引名称替换模式"。
     
    
   表3恢复快照的配置 
   | 参数        | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
   |:---|:---|
   | 索引      | 指定需要恢复的索引名称。 - 支持0～1024个字符，不支持大写字母、空格以及字符""\\\<\|\>/?"。  - 恢复以".kibana"为前缀的索引时需要指定索引名称。  - ".opendistro_security"索引不允许恢复。    - 支持使用"\*"匹配多个索引，比如"index\*"，表示恢复快照中名称前缀是index的所有索引。使用"\*"匹配索引时，默认会过滤掉".opendistro_security"或以".kibana"为前缀的系统索引。  - 支持恢复指定的索引，比如"index1,index2,index3"。   默认为空，即不指定索引名称，表示恢复所有的索引数据。 |
   | 索引名称匹配模式 | 索引名称匹配规则。在恢复时，可以根据匹配模式定义的过滤条件去恢复符合条件的索引，过滤条件请使用正则表达式。 "索引名称匹配模式"和"索引名称替换模式"需要同时设置才会生效。 支持0～1024个字符，不支持大写字母、空格以及字符""\\\<\|\>/?,"。 例如"index_(.+)"表示所有index_开头的索引在恢复时会被重命名。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
   | 索引名称替换模式  | 索引重命名的规则。在恢复时，对满足索引名称匹配模式的索引按定义的规则进行重命名。 "索引名称匹配模式"和"索引名称替换模式"需要同时设置才会生效。 支持0～1024个字符，不支持大写字母、空格以及字符""\\\<\|\>/?,"。 例如"restored_index_$1"表示在所有恢复的满足匹配模式的索引名称前面加上"restored_"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
   | 集群         | 选择要恢复快照的目标集群，本案例选择"Es-2"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
   | 覆盖目标集群同名索引 | 选择是否覆盖目标集群同名索引。建议不勾选。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
      
   
10. 配置完成后，单击"确定"开始将数据恢复至目标集群"Es-2"。 在快照列表中，当"快照恢复状态"变更为"恢复成功"时表示集群数据迁移完成。
    
11. 数据迁移完毕，检查目标Elasticsearch集群"Es-2"和源集群"Es-1"数据的一致性。例如，分别在源集群和目标集群执行_cat/indices命令，对比两者的索引信息是否一致。
12. （可选）迁移完成后，如果不再使用OBS中的快照，请及时删除OBS桶，释放资源，节约成本。
 
