文档首页/ 云搜索服务 CSS/ 最佳实践/ Elasticsearch数据迁移/ 通过备份与恢复实现Elasticsearch集群跨账号/跨区域迁移
更新时间:2026-07-07 GMT+08:00
分享

通过备份与恢复实现Elasticsearch集群跨账号/跨区域迁移

通过CSS服务的快照备份与恢复功能,结合OBS和OMS,实现Elasticsearch集群在跨账号或跨区域场景下的数据高效迁移,适用于大规模数据的容灾备份与资源转移。

应用场景

当您的Elasticsearch集群数据需要在不同账号或不同区域之间迁移时,例如企业组织架构调整后的资源转移、业务跨地域部署的容灾需求,直接复制数据的方式耗时长且对业务影响大。通过云搜索服务CSS的快照备份与恢复功能,结合对象存储服务OBS和对象存储迁移服务OMS,可以实现跨账号或跨区域的集群数据高效迁移。

典型应用场景:

  • 跨区域迁移:将A区域的Elasticsearch集群数据迁移到B区域的Elasticsearch集群中,满足业务跨地域部署、容灾备份、就近接入等需求。
  • 跨账号迁移:将A账号下的Elasticsearch集群数据迁移到B账号下的Elasticsearch集群中,适用于企业组织架构调整、项目间资源转移、多账号统一管理等场景。
  • 跨版本迁移:将低版本Elasticsearch集群数据迁移到高版本集群中,实现集群版本升级。
  • 集群合并:将多个Elasticsearch集群的索引数据合并到一个集群中,实现数据集中管理。
  • 容灾恢复:将生产环境的Elasticsearch集群数据通过快照备份到异地,在灾难发生时快速恢复业务。

方案架构

图1 迁移流程

迁移流程如下:

  1. 源集群开启快照:在源Elasticsearch集群上开启集群快照功能,配置OBS桶用于存储快照数据。
  2. 创建手动快照:对源Elasticsearch集群创建手动快照,将索引数据备份到源OBS桶中。
  3. 迁移OBS数据:通过OBS的跨区域复制规则或OMS将源OBS桶的快照数据迁移到目标OBS桶。
    • 同账号跨区域场景:通过跨区域复制规则,将账号A在区域A的源OBS桶中的快照数据复制到账号A在区域B的目标OBS桶中。
    • 跨账号跨区域场景:通过OMS服务,将账号A在区域A的源OBS桶中的数据复制到账号B在区域B的目标OBS桶中。
    • 同账号同区域场景:通过OMS服务,将账号A在区域A的源OBS桶中的数据复制到账号A在区域A的目标OBS桶中。
    • 跨账号同区域场景:通过OMS服务,将账号A在区域A的源OBS桶中的数据复制到账号B在区域A的目标OBS桶中。
  4. 目标集群配置快照仓库:在目标Elasticsearch集群(B区域/B账号)上创建快照仓库,关联到目标OBS桶。
  5. 目标集群恢复快照:将目标OBS桶中的快照恢复到目标Elasticsearch集群。

方案优势

  • 操作简单,易于管理:在CSS服务控制台使用集群快照功能实现备份与恢复,操作简单直观,无需编写代码即可完成迁移。
  • 适用于大规模数据迁移:快照备份适用于数据量大的场景,当数据量达到GB、TB甚至PB级别时,快照方式是最优选择。
  • 支持跨区域和跨账号:通过结合OMS的跨区域/跨账号数据迁移能力,实现不同区域和不同账号之间的集群数据迁移。
  • 恢复过程可控:恢复数据时,可以选择恢复特定索引或全部索引,支持重命名索引恢复,避免索引名称冲突。
  • 迁移时长可控:基于迁移时长评估公式可以预估迁移耗时,通过配置最大备份/恢复速率控制迁移速率,降低对业务的影响。

性能影响

  • 源集群影响:快照备份直接复制数据存储层的文件实现备份,避免了对Elasticsearch外部读写接口的依赖,对延迟敏感性较低的业务场景,对集群性能的干扰几乎可以忽略。
  • 目标集群影响:快照恢复阶段会占用目标集群的CPU、内存和磁盘IO资源。建议在业务空闲期恢复,或通过配置“最大恢复速率(每秒)”参数限制恢复速率,降低对目标集群业务的影响。

迁移时长评估

迁移过程分为备份阶段、OMS数据迁移和恢复阶段。备份阶段耗时由源集群决定,恢复阶段耗时由目标集群决定,OMS数据迁移时长取决于数据量和网络带宽。

迁移时长评估公式:

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

    总时长(s) = 待迁移的数据量(GB) ÷ 40MB ÷(源集群节点个数 + 目的集群节点个数)× 索引个数 + 待迁移的数据量(GB) ÷ OMS迁移速率(MB/s)

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

    总时长(s) = 待迁移的数据量(GB) ÷ 40MB ÷(源集群索引shard个数 + 目的集群索引shard个数)× 索引个数 + 待迁移的数据量(GB) ÷ OMS迁移速率(MB/s)

上述评估公式基于理想状态下(即单节点以最快速度40MB/s传输)的迁移时长,实际迁移时长还会受到网络、OBS性能、OMS迁移速率等因素影响。OMS迁移速率可达到几十MB/s至数百MB/s,且支持流量控制,可在业务高峰期限制迁移速率。

约束限制

  • 目标集群的版本不能低于源集群的版本,版本兼容性分析请参见Snapshot version compatibility
  • 建议目标集群的节点数大于源集群的分片副本数最大值,防止集群同一个分片的副本(Replica)与主分片(Primary)无法完全分配,导致集群状态处于Yellow状态。
  • 建议目标集群的节点数大于源集群的节点数的一半,防止目标集群规模过小,导致单个节点承受的压力(CPU/IO)远超源集群。
  • 建议目标集群的CPU、MEM和Disk配置大于或等于源集群的配置,防止目标集群性能降级,导致服务崩溃或响应变慢。
  • 快照备份与恢复不支持动态增量数据同步,建议停止数据更新后再备份,或在业务低峰期操作。
  • 跨区域迁移时,源OBS桶和目标OBS桶位于不同区域,需要通过OMS服务进行数据迁移,此时OMS迁移任务中的“元数据迁移方式”必须选择“保留元数据”,否则快照数据恢复会异常。
  • 跨账号迁移时,需要确保目标账号具有访问目标OBS桶的权限,且OBS桶与目标集群位于同一区域。
  • 源OBS桶和目标OBS桶的“存储类别”均需为“标准存储”
  • “.”开头的系统索引不建议通过快照备份恢复,避免引发业务异常。

资源和成本规划

表1 资源和成本规划

资源

资源说明

数量

费用说明

云搜索服务CSS

源Elasticsearch集群和目标Elasticsearch集群。

2

按需计费。

对象存储服务OBS

源OBS桶和目标OBS桶,“存储类别”“标准存储”,用于存储集群快照。

2

按存储量和时长计费。

对象存储迁移服务OMS

迁移任务,在跨区域/跨账号场景下,用于迁移OBS桶中的快照数据。

1

数据迁移产生的流量费用。

步骤一:为源集群创建手动快照

在源Elasticsearch集群上开启快照功能,配置OBS桶,并创建手动快照将索引数据备份到源OBS桶中。

  1. 登录云搜索服务管理控制台
  2. 在左侧导航栏,选择“集群管理 > Elasticsearch”
  3. 在集群列表,单击目标集群名称,进入集群详情页。
  4. 选择“集群快照”页签,查看集群是否启用快照功能。
    • 是,则执行7
    • 否,则执行5
  5. 在集群快照页面,单击“开启快照”,在弹窗中完成集群快照配置。
    图2 开启快照
    表2 配置开启快照

    参数

    说明

    OBS桶

    在下拉框中选择用于存储快照数据的OBS桶。

    备份路径

    快照数据在OBS桶中的存储路径,例如“css_repository/es-source”

    最大备份速率(每秒)

    每个节点的最大备份速率,可保持默认值也可根据业务需求调整。

    最大恢复速率(每秒)

    每个节点的最大恢复速率,可保持默认值也可根据业务需求调整。

    IAM委托

    选择IAM委托,授权当前账号访问和使用OBS的权限。可使用自动创建的委托“css_obs_agency”,也可选择自定义委托。

    自动创建集群快照

    取消勾选,集群迁移无需自动快照。

  6. 配置完成后,单击“确定”,启用集群快照功能。

    此时集群快照页面会显示配置信息。

  7. 在集群快照页面,单击“手动创建快照”,在弹窗中完成备份策略配置。
    图3 手动创建快照
    表3 创建快照配置

    参数

    说明

    快照名称

    设置快照名称。可保持默认值,也可自定义。例如“snapshot-source”

    索引

    指定备份的索引名称。

    • 支持备份指定的索引,多个索引之间使用英文逗号隔开,例如“index1,index2,index3”
    • 支持使用“*”匹配多个索引,比如“index*”,表示备份名称前缀是index的所有索引。

    如果不填写,则默认备份集群中所有索引。

    快照描述

    添加快照描述信息。

  8. 配置完成后,单击“确定”,开始创建快照。

    “快照任务状态”“可用”时,表示备份完成。

  9. 查看数据是否备份成功。

    在集群快照任务列表中,单击快照名称左侧的,展开快照详情,获取备份的分片和索引信息,通过对比数据可以判断数据是否备份成功。

    图4 查看详情

步骤二:迁移OBS快照数据

将源OBS桶中的快照数据迁移到目标OBS桶中。

  • 同账号跨区域场景:通过跨区域复制规则,将账号A在区域A的源OBS桶中的快照数据复制到账号A在区域B的目标OBS桶中。
  • 跨账号跨区域场景:通过OMS服务,将账号A在区域A的源OBS桶中的数据复制到账号B在区域B的目标OBS桶中。
  • 同账号同区域场景:通过OMS服务,将账号A在区域A的源OBS桶中的数据复制到账号A在区域A的目标OBS桶中。
  • 跨账号同区域场景:通过OMS服务,将账号A在区域A的源OBS桶中的数据复制到账号B在区域A的目标OBS桶中。

具体操作请参见OBS数据复制

通过OMS服务迁移OBS快照数据时,迁移任务的“元数据迁移方式”必须选择“保留元数据”,否则快照数据恢复会异常。

等待OMS迁移任务完成,确认迁移任务状态为“迁移成功”

步骤三:为目标集群配置快照仓库

在目标Elasticsearch集群上通过Kibana创建快照仓库,关联到目标OBS桶,使目标集群能够读取迁移后的快照数据。

  1. 登录Kibana进入命令执行页面。
    1. 登录云搜索服务管理控制台
    2. 在左侧导航栏,选择“集群管理 > Elasticsearch”
    3. 在集群列表,选择目标集群,单击操作列的“Kibana”,登录Kibana。
    4. 在Kibana左侧导航栏选择“Dev Tools”,进入操作页面。

      控制台左侧是命令输入框,其右侧的三角形图标为执行按钮,右侧区域则显示执行结果。

  2. 执行以下命令创建快照仓库,如“my_backup_all”,并关联到目标OBS桶。
    PUT _snapshot/my_backup_all/
    {
      "type" : "obs",
      "settings" : {
        "endpoint" : "obs.<目标区域>.example.com",
        "region" : "<目标区域>",
        "access_key": "<目标账号AK>",
        "secret_key": "<目标账号SK>",
        "bucket" : "<目标OBS桶名>",
        "compress" : "false",
        "chunk_size" : "1g",
        "base_path" : "<备份路径>",
        "max_restore_bytes_per_sec": "100mb",
        "max_snapshot_bytes_per_sec": "100mb"
      }
    }
    表4 快照仓库参数说明

    参数

    说明

    endpoint

    OBS域名地址,格式为“obs.<目标区域>.example.com”。

    region

    目标集群所在的区域,如cn-north-4。

    access_key

    目标账号的Access Key ID,获取方法请参见如何获取访问密钥AK/SK

    secret_key

    目标账号的Secret Access Key,获取方法请参见如何获取访问密钥AK/SK

    bucket

    存储快照数据的目标OBS桶名称。

    base_path

    需要与源集群快照的备份路径一致。例如,源集群使用的备份路径是“css_repository/es-source”,则此处填写与源集群相同的路径。

    max_restore_bytes_per_sec

    最大恢复速率(每秒),可根据业务需求调整。

    max_snapshot_bytes_per_sec

    最大备份速率(每秒),可根据业务需求调整。

  3. 执行以下命令,确认快照仓库创建成功。
    GET _snapshot 

    返回结果中包含“my_backup_all”仓库信息,表示创建成功。

  4. 执行以下命令,查看快照仓库中的快照列表,确认目标OBS桶中的快照数据可被目标集群识别。
    GET _snapshot/my_backup_all/_all 

    返回结果中包含步骤一:为源集群创建手动快照创建的快照信息“snapshot-source”,表示快照数据可正常识别。

步骤四:为目标集群恢复快照数据

从快照中恢复数据到目标集群。

  1. 根据需要选择以下方式恢复快照数据。
    • 恢复某一快照中的所有索引:
      POST _snapshot/my_backup_all/<快照名称>/_restore?wait_for_completion=true 
    • 恢复某一快照中的部分索引(排除系统索引):
      POST _snapshot/my_backup_all/<快照名称>/_restore
      {
        "indices": "*,-.monitoring*,-.security*,-.kibana*",
        "ignore_unavailable": "true"
      }
    • 恢复指定索引并重命名:
      POST _snapshot/my_backup_all/<快照名称>/_restore
      {
        "indices": "index_1,index_2",
        "rename_pattern": "index_(.+)",
        "rename_replacement": "restored_index_$1"
      }
  2. 查看快照恢复进度。
    # 查看所有快照的恢复结果 
    GET /_recovery
    
    # 查看指定索引的快照恢复结果 
    GET <索引名称>/_recovery 

步骤五:验证数据完整性

确认目标集群中的数据与源集群一致。

  1. 在目标集群中查看恢复的索引列表。
    GET _cat/indices?v 
  2. 对比源集群和目标集群的索引文档数量。
    # 源集群
    GET _cat/count/<索引名称>?v  
    
    # 目标集群
    GET _cat/count/<索引名称>?v 
  3. 抽样验证关键业务数据的查询结果是否一致。

步骤六:清理资源(可选)

迁移完成后,请及时删除不再使用的资源,节约成本。

  1. 删除OBS桶中的快照数据,释放存储资源。
  2. 删除源Elasticsearch集群,释放计算与存储资源。

相关文档

相关文档