通过备份与恢复实现华为云Elasticsearch集群间数据迁移
CSS服务的Elasticsearch集群之间的数据迁移,可以通过备份与恢复集群快照功能实现。
应用场景
通过备份与恢复实现华为云Elasticsearch集群间数据迁移仅适用于源集群和目标集群都是CSS服务的集群,且依赖对象存储服务OBS。常用于以下场景:
- 跨地域或跨账号迁移:将其他Region或账号下的Elasticsearch集群迁移到当前集群中。
- 跨版本迁移:将低版本的Elasticsearch集群数据迁移到高版本的集群中。
- 集群合并:将两个Elasticsearch集群的索引数据合并到一个集群中。
方案架构
通过备份与恢复实现华为云Elasticsearch集群间数据迁移的迁移流程如图1所示。
- 源Elasticsearch集群创建快照,将快照存储在OBS桶中。
- 源Elasticsearch集群将备份好的快照,恢复至目标Elasticsearch集群。
方案优势
- 易于操作和管理:在CSS服务控制台使用集群快照功能实现备份恢复,操作简单,且易于管理和自动化。
- 适用于大规模数据迁移:快照备份适用于数据量大的场景,特别是当数据量达到GB、TB甚至PB级别时。
- 支持跨地域和跨账号迁移:通过结合OBS的跨区域复制功能,可以实现跨地域和跨账号的数据迁移。
- 恢复过程可控:在恢复数据时,可以选择恢复特定索引或全部索引,并且可以指定恢复到特定的集群状态。
- 迁移时长可控:基于迁移时长评估公式可以配置数据迁移速率,理想状态下等于文件复制速率。
性能影响
使用备份与恢复迁移集群的核心在于直接复制数据存储层的文件以实现数据备份,该方案避免了对Elasticsearch外部读写接口的依赖,从而显著降低了对源集群性能的影响。对延迟敏感性较低的业务场景,此方法对集群性能的干扰几乎可以忽略。
约束限制
- 目标集群的版本不能低于源集群的版本,版本兼容性分析请参见Snapshot version compatibility。
- 目标集群的节点数要大于源集群的节点数的一半,且不能小于源集群的shard副本数。
- 目标集群的CPU、MEM和Disk配置不能低于源集群的配置。
迁移时长
迁移过程的耗时长短依赖于源集群和目标集群的节点个数或索引shard个数。迁移过程分为备份阶段和恢复阶段,备份阶段耗时由源集群决定,恢复阶段耗时由目标集群决定。迁移总时长的评估公式如下:

评估公式是基于理想状态下(即单节点以最快速度40MB/s传输)的迁移时长,实际迁移时长还会受到网络、资源等因素影响。
前提条件
- 目标集群(Es-2)和源集群(Es-1)处于可用状态。建议在业务空闲期进行集群迁移。
- 确认目标集群(Es-2)和源集群(Es-1)在同一个Region和账号下。
如果集群跨地域或跨账号,请参考配置跨区域复制将源集群存储快照的OBS桶复制到目标集群存储快照的OBS桶中,迁移时在目标集群执行恢复操作。
- 确认已准备好用于存储快照的OBS桶。OBS桶必须和Elasticsearch集群位于同一“区域”,且“存储类别”为“标准存储”。
操作步骤
- 登录云搜索服务管理控制台。
- 在左侧导航栏,选择“集群管理 > Elasticsearch”。
- 在集群列表,单击源集群名称“Es-1”,进入集群详情页。
- 选择“集群快照”页签,单击“开启快照”,在开启快照对话框中完成快照的基础配置。
表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、下划线(_)和短横线(-),否则会备份失败。
自动创建集群快照
数据迁移不建议启用自动创建快照,避免暂用存储资源。
- 配置完成后,单击“确定”,启用集群快照功能。
- 在集群快照页面,单击“手动创建快照”,在弹窗中完成备份策略配置。
表2 创建快照配置 参数
说明
快照名称
设置快照名称。可以保持默认值。
索引
指定备份的索引名称。
- 支持恢复指定的索引,多个索引之间使用英文逗号隔开,例如“index1,index2,index3”。
- 支持使用“*”匹配多个索引,比如“index*”,表示恢复快照中名称前缀是index的所有索引。
如果不填写,则默认备份集群中所有索引。
索引名称不能包含空格、大写字母和特殊字符“"\<|>/?”。
快照描述
添加快照描述信息。
- 配置完成后,单击“确定”,开始为源集群创建快照。
当集群快照任务列表中“快照状态”为“可用”时,表示快照创建成功。
- 在集群快照任务列表中,选择需要恢复的快照,单击操作列的“恢复”,在恢复对话框中完成配置。
表3 恢复快照的配置 参数
说明
索引
指定需要进行恢复的索引名称。
约束限制:
- 支持0~1024个字符,不支持大写字母、空格以及字符“"\<|>/?”。
- 恢复以“.kibana”为前缀的索引时需要指定索引名称。
- “.opendistro_security”索引不允许恢复。
取值范围:
- 支持使用“*”匹配多个索引,比如“index*”,表示恢复快照中名称前缀是index的所有索引。使用“*”匹配索引时,默认会过滤掉“.opendistro_security”或以“.kibana”为前缀的系统索引。
- 支持恢复指定的索引,比如“index1,index2,index3”。
默认取值:
默认为空,即不指定索引名称,表示恢复所有的索引数据。
索引名称匹配模式
索引名称匹配规则。在恢复时,可以根据文本框中定义的过滤条件去恢复符合条件的索引,过滤条件请使用正则表达式。
“索引名称匹配模式”和“索引名称替换模式”需要同时设置才会生效。
支持0~1024个字符,不支持大写字母、空格以及字符“"\<|>/?,”。
默认值为“index_(.+)”表示所有的索引。
索引名称替换模式
索引重命名的规则。
“索引名称匹配模式”和“索引名称替换模式”需要同时设置才会生效。
支持0~1024个字符,不支持大写字母、空格以及字符“"\<|>/?,”。
默认值“restored_index_$1”表示在所有恢复的索引名称前面加上“restored_”。
集群
选择要恢复快照的目标集群,本案例选择“Es-2”。
覆盖目标集群同名索引
选择是否覆盖目标集群同名索引。建议不勾选。
- 配置完成后,单击“确定”开始将数据恢复至目标集群“Es-2”。
在快照列表中,当“任务状态”变更为“恢复成功”时表示集群数据迁移完成。
- 数据迁移完毕,检查目标Elasticsearch集群“Es-2”和源集群“Es-1”数据的一致性。例如,分别在源集群和目标集群执行_cat/indices命令,对比两者的索引信息是否一致。