文档首页/ 云搜索服务 CSS/ 最佳实践/ Elasticsearch数据迁移/ 通过备份与恢复实现华为云Elasticsearch集群间数据迁移
更新时间:2025-06-13 GMT+08:00

通过备份与恢复实现华为云Elasticsearch集群间数据迁移

CSS服务的Elasticsearch集群之间的数据迁移,可以通过备份与恢复集群快照功能实现。

应用场景

通过备份与恢复实现华为云Elasticsearch集群间数据迁移仅适用于源集群和目标集群都是CSS服务的集群,且依赖对象存储服务OBS。常用于以下场景:

  • 跨地域或跨账号迁移:将其他Region或账号下的Elasticsearch集群迁移到当前集群中。
  • 跨版本迁移:将低版本的Elasticsearch集群数据迁移到高版本的集群中。
  • 集群合并:将两个Elasticsearch集群的索引数据合并到一个集群中。

方案架构

图1 迁移流程

通过备份与恢复实现华为云Elasticsearch集群间数据迁移的迁移流程如图1所示。

  1. 源Elasticsearch集群创建快照,将快照存储在OBS桶中。
  2. 目标Elasticsearch集群恢复快照,从OBS桶中恢复快照。

方案优势

  • 易于操作和管理:在CSS服务控制台使用集群快照功能实现备份恢复,操作简单,且易于管理和自动化。
  • 适用于大规模数据迁移:快照备份适用于数据量大的场景,特别是当数据量达到GB、TB甚至PB级别时。
  • 支持跨地域和跨账号迁移:通过结合OBS的跨区域复制功能,可以实现跨地域和跨账号的数据迁移。
  • 恢复过程可控:在恢复数据时,可以选择恢复特定索引或全部索引,并且可以指定恢复到特定的集群状态。
  • 迁移时长可控:基于迁移时长评估公式可以配置数据迁移速率,理想状态下等于文件复制速率。

性能影响

使用备份与恢复迁移集群的核心在于直接复制数据存储层的文件以实现数据备份,该方案避免了对Elasticsearch外部读写接口的依赖,从而显著降低了对源集群性能的影响。对于对业务延迟要求不严苛的集群而言,此方法对性能的干扰几乎可以忽略。

约束限制

  • 目标集群的版本不能低于源集群的版本,版本兼容性分析请参见Snapshot version compatibility
  • 目标集群的节点数要大于源集群的节点数的一半,且不能小于源集群的shard副本数。
  • 目标集群的CPU、MEM和Disk配置不能低于源集群的配置。

迁移时长

迁移过程的耗时长短依赖于源集群和目标集群的节点个数或索引shard个数。迁移过程分为备份阶段和恢复阶段,备份阶段耗时由源集群决定,恢复阶段耗时由目标集群决定。迁移总时长的评估公式如下:

  • 当索引shard个数大于节点个数时

    总时长(s)= 集群迁移的数据量(GB)÷ 40MB ÷(源集群节点个数+目的集群节点个数)x 索引个数

  • 当索引shard个数小于节点个数时

    总时长(s)= 集群迁移的数据量(GB)÷ 40MB ÷(源集群索引shard个数+目的集群索引shard个数)x 索引个数

评估公式是基于理想状态下(即单节点以最快速度40MB/s传输)的迁移时长,实际迁移时长还会受到网络、资源等因素影响。

前提条件

  • 目标集群(Es-2)和源集群(Es-1)处于可用状态。建议在业务空闲期进行集群迁移。
  • 确认目标集群(Es-2)和源集群(Es-1)在同一个Region和账号下。

    如果集群跨地域或跨账号,请参考配置跨区域复制将源集群存储快照的OBS桶复制到目标集群存储快照的OBS桶中,迁移时在目标集群执行恢复操作。

操作步骤

  1. 登录云搜索服务管理控制台。
  2. “集群管理 > Elasticsearch”页面,单击源端集群名称“Es-1”进入集群基本信息页面。
  3. 在左侧导航栏选择“集群快照”,打开集群快照开关,设置快照的基础配置。
    表1 集群快照基础配置

    参数

    说明

    OBS桶

    选择存储集群快照的OBS桶。

    备份路径

    集群快照在OBS桶中的存放路径。可以保持默认值。

    最大备份速率(每秒)

    配置每个节点的最大备份速率。可以保持默认值40MB。

    最大恢复速率(每秒)

    配置每个节点的最大恢复速率。可以配置为40MB。

    OpenSearch集群和版本高于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委托

    快照数据存储到OBS桶中,需要OBS的操作权限。选择IAM委托,授权当前账号访问和使用OBS的权限。
    • 当首次配置委托时,可以单击“自动创建委托”新建委托“css_obs_agency”直接使用。
    • 当已有自动创建的委托时,可以单击“委托一键授权”,自动删除委托中OBS Administrator系统策略的权限,并自动新增如下自定义策略授权委托到最小化权限。
      "obs:bucket:GetBucketLocation",
      "obs:object:GetObjectVersion",
      "obs:object:GetObject",
      "obs:object:DeleteObject",
      "obs:bucket:HeadBucket",
      "obs:bucket:GetBucketStoragePolicy",
      "obs:object:DeleteObjectVersion",
      "obs:bucket:ListBucketVersions",
      "obs:bucket:ListBucket",
      "obs:object:PutObject"
    • 当OBS桶使用SSE-KMS加密模式时,委托中需要包含KMS的权限,“自动创建委托”“委托一键授权”会自动增加如下自定义策略授权委托到最小化权限。
      "kms:cmk:create",
      "kms:dek:create",
      "kms:cmk:get",
      "kms:dek:decrypt",
      "kms:cmk:list"
    • 执行“自动创建委托”“委托一键授权”的用户需要如下最小权限。
      "iam:agencies:listAgencies",
      "iam:roles:listRoles",
      "iam:agencies:getAgency",
      "iam:agencies:createAgency",
      "iam:permissions:listRolesForAgency",
      "iam:permissions:grantRoleToAgency",
      "iam:permissions:listRolesForAgencyOnProject",
      "iam:permissions:revokeRoleFromAgency",
      "iam:roles:createRole"
    • 使用委托的用户需要如下最小权限。
      "iam:agencies:listAgencies",
      "iam:agencies:getAgency",
      "iam:permissions:listRolesForAgencyOnProject",
      "iam:permissions:listRolesForAgency"
    说明:

    委托名称必须仅包含字符a-z、A-Z、0-9、下划线(_)和短横线(-),否则会备份失败。

  4. 完成基础配置后,单击“创建快照”,在弹窗中完成参数配置,单击“确定”启动手动创建快照。
    表2 创建快照的配置

    参数

    说明

    快照名称

    自定义快照名称,可以保持默认值。

    索引

    填写索引名称,支持选择索引进行备份。索引名称不能包含空格和大写字母,且不能包含“"\<|>/?”特殊字符,多个索引之间使用英文逗号隔开。如果不填写,则默认备份集群中所有索引。支持使用“*”匹配多个索引,例如“index*”,表示备份名称前缀是index的所有索引的数据。

    说明:

    在Kibana中使用GET /_cat/indices命令,可以查询集群中所有索引的名称。

    快照描述

    描述快照信息。

    在快照管理列表中,当“快照状态”“可用”时表示快照创建成功。

  5. 快照创建成功后,在快照管理列表,单击快照操作列的“恢复”,配置恢复参数将数据恢复至目标集群“Es-2”
    表3 恢复快照的配置

    参数

    说明

    索引

    指定需要进行恢复的索引名称。

    约束限制:

    • 支持0~1024个字符,不支持大写字母、空格以及字符“"\<|>/?”
    • 恢复以“.kibana”为前缀的索引时需要指定索引名称。
    • “.opendistro_security”索引不允许恢复。

    取值范围:

    • 支持使用“*”匹配多个索引,比如“index*”,表示恢复快照中名称前缀是index的所有索引。使用“*”匹配索引时,默认会过滤掉“.opendistro_security”或以“.kibana”为前缀的系统索引。
    • 支持恢复指定的索引,比如“index1,index2,index3”

    默认取值:

    默认为空,即不指定索引名称,表示恢复所有的索引数据。

    索引名称匹配模式

    索引名称匹配规则。在恢复时,可以根据文本框中定义的过滤条件去恢复符合条件的索引,过滤条件请使用正则表达式。默认值“index_(.+)”表示所有的索引。支持0~1024个字符,不支持大写字母、空格以及字符“"\<|>/?,”

    说明:

    “索引名称匹配模式”“索引名称替换模式”需要同时设置才会生效。

    索引名称替换模式

    索引重命名的规则。默认值“restored_index_$1”表示在所有恢复的索引名称前面加上“restored_”。支持0~1024个字符,不支持大写字母、空格以及字符“"\<|>/?,”

    说明:

    “索引名称匹配模式”“索引名称替换模式”需要同时设置才会生效。

    集群

    选择要恢复快照的目标集群,本案例选择“Es-2”

    选择“是否覆盖目标集群同名索引”,默认不覆盖,即不勾选。通过快照恢复数据是以覆盖快照文件的形式进行数据恢复,当目标集群存在同名索引时,需要勾选覆盖才能恢复同shard结构的索引,不同shard结构的索引不支持恢复。请谨慎勾选操作。

    在快照管理列表中,当“任务状态”变更为“恢复成功”时表示集群数据迁移完成。

  6. 数据迁移完毕,检查目标Elasticsearch集群“Es-2”和源集群“Es-1”数据的一致性。例如,分别在源集群和目标集群执行_cat/indices命令,对比两者的索引信息是否一致。