通过备份与恢复实现Elasticsearch集群跨账号/跨区域迁移
通过CSS服务的快照备份与恢复功能,结合OBS和OMS,实现Elasticsearch集群在跨账号或跨区域场景下的数据高效迁移,适用于大规模数据的容灾备份与资源转移。
应用场景
当您的Elasticsearch集群数据需要在不同账号或不同区域之间迁移时,例如企业组织架构调整后的资源转移、业务跨地域部署的容灾需求,直接复制数据的方式耗时长且对业务影响大。通过云搜索服务CSS的快照备份与恢复功能,结合对象存储服务OBS和对象存储迁移服务OMS,可以实现跨账号或跨区域的集群数据高效迁移。
典型应用场景:
- 跨区域迁移:将A区域的Elasticsearch集群数据迁移到B区域的Elasticsearch集群中,满足业务跨地域部署、容灾备份、就近接入等需求。
- 跨账号迁移:将A账号下的Elasticsearch集群数据迁移到B账号下的Elasticsearch集群中,适用于企业组织架构调整、项目间资源转移、多账号统一管理等场景。
- 跨版本迁移:将低版本Elasticsearch集群数据迁移到高版本集群中,实现集群版本升级。
- 集群合并:将多个Elasticsearch集群的索引数据合并到一个集群中,实现数据集中管理。
- 容灾恢复:将生产环境的Elasticsearch集群数据通过快照备份到异地,在灾难发生时快速恢复业务。
方案架构
迁移流程如下:
- 源集群开启快照:在源Elasticsearch集群上开启集群快照功能,配置OBS桶用于存储快照数据。
- 创建手动快照:对源Elasticsearch集群创建手动快照,将索引数据备份到源OBS桶中。
- 迁移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桶中。
- 目标集群配置快照仓库:在目标Elasticsearch集群(B区域/B账号)上创建快照仓库,关联到目标OBS桶。
- 目标集群恢复快照:将目标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桶的“存储类别”均需为“标准存储”。
- 以“.”开头的系统索引不建议通过快照备份恢复,避免引发业务异常。
资源和成本规划
| 资源 | 资源说明 | 数量 | 费用说明 |
|---|---|---|---|
| 云搜索服务CSS | 源Elasticsearch集群和目标Elasticsearch集群。 | 2 | 按需计费。 |
| 对象存储服务OBS | 源OBS桶和目标OBS桶,“存储类别”为“标准存储”,用于存储集群快照。 | 2 | 按存储量和时长计费。 |
| 对象存储迁移服务OMS | 迁移任务,在跨区域/跨账号场景下,用于迁移OBS桶中的快照数据。 | 1 | 数据迁移产生的流量费用。 |
步骤一:为源集群创建手动快照
在源Elasticsearch集群上开启快照功能,配置OBS桶,并创建手动快照将索引数据备份到源OBS桶中。
- 登录云搜索服务管理控制台。
- 在左侧导航栏,选择“集群管理 > Elasticsearch”。
- 在集群列表,单击目标集群名称,进入集群详情页。
- 选择“集群快照”页签,查看集群是否启用快照功能。
- 在集群快照页面,单击“开启快照”,在弹窗中完成集群快照配置。 图2 开启快照
表2 配置开启快照 参数
说明
OBS桶
在下拉框中选择用于存储快照数据的OBS桶。
备份路径
快照数据在OBS桶中的存储路径,例如“css_repository/es-source”。
最大备份速率(每秒)
每个节点的最大备份速率,可保持默认值也可根据业务需求调整。
最大恢复速率(每秒)
每个节点的最大恢复速率,可保持默认值也可根据业务需求调整。
IAM委托
选择IAM委托,授权当前账号访问和使用OBS的权限。可使用自动创建的委托“css_obs_agency”,也可选择自定义委托。
自动创建集群快照
取消勾选,集群迁移无需自动快照。
- 配置完成后,单击“确定”,启用集群快照功能。
此时集群快照页面会显示配置信息。
- 在集群快照页面,单击“手动创建快照”,在弹窗中完成备份策略配置。 图3 手动创建快照
表3 创建快照配置 参数
说明
快照名称
设置快照名称。可保持默认值,也可自定义。例如“snapshot-source”。
索引
指定备份的索引名称。
- 支持备份指定的索引,多个索引之间使用英文逗号隔开,例如“index1,index2,index3”。
- 支持使用“*”匹配多个索引,比如“index*”,表示备份名称前缀是index的所有索引。
如果不填写,则默认备份集群中所有索引。
快照描述
添加快照描述信息。
- 配置完成后,单击“确定”,开始创建快照。
当“快照任务状态”为“可用”时,表示备份完成。
- 查看数据是否备份成功。
在集群快照任务列表中,单击快照名称左侧的
,展开快照详情,获取备份的分片和索引信息,通过对比数据可以判断数据是否备份成功。图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桶,使目标集群能够读取迁移后的快照数据。
- 登录Kibana进入命令执行页面。
- 登录云搜索服务管理控制台。
- 在左侧导航栏,选择“集群管理 > Elasticsearch”。
- 在集群列表,选择目标集群,单击操作列的“Kibana”,登录Kibana。
- 在Kibana左侧导航栏选择“Dev Tools”,进入操作页面。
控制台左侧是命令输入框,其右侧的三角形图标为执行按钮,右侧区域则显示执行结果。
- 执行以下命令创建快照仓库,如“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
最大备份速率(每秒),可根据业务需求调整。
- 执行以下命令,确认快照仓库创建成功。
GET _snapshot
返回结果中包含“my_backup_all”仓库信息,表示创建成功。
- 执行以下命令,查看快照仓库中的快照列表,确认目标OBS桶中的快照数据可被目标集群识别。
GET _snapshot/my_backup_all/_all返回结果中包含步骤一:为源集群创建手动快照创建的快照信息“snapshot-source”,表示快照数据可正常识别。
步骤四:为目标集群恢复快照数据
从快照中恢复数据到目标集群。
- 根据需要选择以下方式恢复快照数据。
- 恢复某一快照中的所有索引:
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" }
- 恢复某一快照中的所有索引:
- 查看快照恢复进度。
# 查看所有快照的恢复结果 GET /_recovery # 查看指定索引的快照恢复结果 GET <索引名称>/_recovery
步骤五:验证数据完整性
确认目标集群中的数据与源集群一致。
- 在目标集群中查看恢复的索引列表。
GET _cat/indices?v
- 对比源集群和目标集群的索引文档数量。
# 源集群 GET _cat/count/<索引名称>?v # 目标集群 GET _cat/count/<索引名称>?v
- 抽样验证关键业务数据的查询结果是否一致。
步骤六:清理资源(可选)
迁移完成后,请及时删除不再使用的资源,节约成本。
- 删除OBS桶中的快照数据,释放存储资源。
- 删除源Elasticsearch集群,释放计算与存储资源。
相关文档
- 创建快照备份数据:了解CSS集群快照功能的详细使用方法。
- OBS数据复制:了解OBS数据复制方式。
- 华为云OBS之间迁移教程:了解通过OMS实现OBS之间跨账号、跨区域、以及同区域内的数据迁移方法。