计算
弹性云服务器 ECS
Flexus云服务
裸金属服务器 BMS
弹性伸缩 AS
镜像服务 IMS
专属主机 DeH
函数工作流 FunctionGraph
云手机服务器 CPH
Huawei Cloud EulerOS
网络
虚拟私有云 VPC
弹性公网IP EIP
虚拟专用网络 VPN
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
VPC终端节点 VPCEP
云连接 CC
企业路由器 ER
企业交换机 ESW
全球加速 GA
安全与合规
安全技术与应用
Web应用防火墙 WAF
企业主机安全 HSS
云防火墙 CFW
安全云脑 SecMaster
DDoS防护 AAD
数据加密服务 DEW
数据库安全服务 DBSS
云堡垒机 CBH
数据安全中心 DSC
云证书管理服务 CCM
边缘安全 EdgeSec
CDN与智能边缘
内容分发网络 CDN
CloudPond云服务
智能边缘云 IEC
迁移
主机迁移服务 SMS
对象存储迁移服务 OMS
云数据迁移 CDM
迁移中心 MGC
大数据
MapReduce服务 MRS
数据湖探索 DLI
表格存储服务 CloudTable
云搜索服务 CSS
数据接入服务 DIS
数据仓库服务 GaussDB(DWS)
数据治理中心 DataArts Studio
数据可视化 DLV
数据湖工厂 DLF
湖仓构建 LakeFormation
企业应用
云桌面 Workspace
应用与数据集成平台 ROMA Connect
云解析服务 DNS
专属云
专属计算集群 DCC
IoT物联网
IoT物联网
设备接入 IoTDA
智能边缘平台 IEF
用户服务
账号中心
费用中心
成本中心
资源中心
企业管理
工单管理
国际站常见问题
ICP备案
我的凭证
支持计划
客户运营能力
合作伙伴支持计划
专业服务
区块链
区块链服务 BCS
Web3节点引擎服务 NES
解决方案
SAP
高性能计算 HPC
视频
视频直播 Live
视频点播 VOD
媒体处理 MPC
实时音视频 SparkRTC
数字内容生产线 MetaStudio
存储
对象存储服务 OBS
云硬盘 EVS
云备份 CBR
存储容灾服务 SDRS
高性能弹性文件服务 SFS Turbo
弹性文件服务 SFS
云硬盘备份 VBS
云服务器备份 CSBS
数据快递服务 DES
专属分布式存储服务 DSS
容器
云容器引擎 CCE
容器镜像服务 SWR
应用服务网格 ASM
华为云UCS
云容器实例 CCI
管理与监管
云监控服务 CES
统一身份认证服务 IAM
资源编排服务 RFS
云审计服务 CTS
标签管理服务 TMS
云日志服务 LTS
配置审计 Config
资源访问管理 RAM
消息通知服务 SMN
应用运维管理 AOM
应用性能管理 APM
组织 Organizations
优化顾问 OA
IAM 身份中心
云运维中心 COC
资源治理中心 RGC
应用身份管理服务 OneAccess
数据库
云数据库 RDS
文档数据库服务 DDS
数据管理服务 DAS
数据复制服务 DRS
云数据库 GeminiDB
云数据库 GaussDB
分布式数据库中间件 DDM
数据库和应用迁移 UGO
云数据库 TaurusDB
人工智能
人脸识别服务 FRS
图引擎服务 GES
图像识别 Image
内容审核 Moderation
文字识别 OCR
AI开发平台ModelArts
图像搜索 ImageSearch
对话机器人服务 CBS
华为HiLens
视频智能分析服务 VIAS
语音交互服务 SIS
应用中间件
分布式缓存服务 DCS
API网关 APIG
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
分布式消息服务RocketMQ版
多活高可用服务 MAS
事件网格 EG
企业协同
华为云会议 Meeting
云通信
消息&短信 MSGSMS
云生态
合作伙伴中心
云商店
开发者工具
SDK开发指南
API签名指南
Terraform
华为云命令行工具服务 KooCLI
其他
产品价格详情
系统权限
管理控制台
客户关联华为云合作伙伴须知
消息中心
公共问题
开发与运维
应用管理与运维平台 ServiceStage
软件开发生产线 CodeArts
需求管理 CodeArts Req
部署 CodeArts Deploy
性能测试 CodeArts PerfTest
编译构建 CodeArts Build
流水线 CodeArts Pipeline
制品仓库 CodeArts Artifact
测试计划 CodeArts TestPlan
代码检查 CodeArts Check
代码托管 CodeArts Repo
云应用引擎 CAE
开天aPaaS
云消息服务 KooMessage
云手机服务 KooPhone
云空间服务 KooDrive
文档首页/ 云搜索服务 CSS/ 最佳实践/ Elasticsearch数据迁移/ 通过ESM实现Elasticsearch集群间数据迁移

通过ESM实现Elasticsearch集群间数据迁移

更新时间:2024-11-22 GMT+08:00

应用场景

ESM(Elasticsearch Migration Tool)是一个开源的Elasticsearch集群迁移工具。它支持不同版本的Elasticsearch之间的数据迁移,并且可以通过配置Scroll API的参数来控制迁移速率,以适应不同的网络环境和业务需求。以下是ESM实现Elasticsearch集群间数据迁移的一些应用场景:

  • 跨版本迁移:在Elasticsearch集群需要升级到新版本时,ESM可以帮助平滑迁移数据,确保升级过程中数据的完整性和可用性。
  • 集群合并:当企业需要将多个Elasticsearch集群的数据整合到一个集群中以简化管理时,ESM可以高效地完成这一任务。
  • 服务迁移上云:企业可以将自建的Elasticsearch服务迁移至云平台,以利用云服务的弹性扩展、简化维护和成本效益。
  • 变更服务提供商:如果企业当前使用的是第三方Elasticsearch服务,但出于成本、性能或其他战略考虑,希望更换服务提供商至华为云。

方案架构

图1 迁移流程

通过Reindex API实现Elasticsearch集群间数据迁移的迁移流程如图1所示。

  1. 在Linux虚拟机上安装ESM迁移工具。
  2. 通过ESM迁移命令,将源集群的索引数据迁移至目标集群。

方案优势

  • 跨版本兼容性:ESM支持不同版本的Elasticsearch集群间的数据迁移,包括从老版本迁移到新版本。
  • 简化操作:ESM使用简单方便,使用Go语言开发,只需下载编译包安装即可使用。
  • 性能控制:在迁移过程中,可以通过配置Scroll API的参数来控制迁移速率,优化迁移性能。
  • 灵活的迁移方案:ESM提供了灵活的迁移方案,包括全量迁移和增量迁移,以适应不同的业务需求。
  • 开源免费:作为一个开源工具,ESM代码托管在GitHub上,用户可以免费使用。

性能影响

ESM迁移集群的工作原理基于Scroll API,此API能够高效地从源集群查找索引数据,并批量同步至目标集群。这一过程可能会对源集群性能产生影响,具体影响程度取决于目标集群对源集群的读取速度,而读取速度取决于Scroll API的size和slice参数配置。参数配置的详细指导可参考Reindex API文档。

由于ESM能够迅速从源集群读取数据,可能会对源集群的性能产生影响。因此,建议在业务低峰时段进行数据迁移,以监控源集群CPU和内存的性能指标变化。通过调整迁移速度和选择适宜的迁移时间窗口,可以有效控制性能影响。对于涉及大量数据迁移或资源占用较高的集群,特别推荐在业务低峰期执行数据迁移,以确保源端业务操作不受影响。

约束限制

集群迁移过程中,源集群的索引数据不能增删改,否则会导致迁移失败,或是迁移后的源集群数据和目标集群数据内容不一致。

前提条件

  • 源Elasticsearch集群和目标Elasticsearch集群处于可用状态。
  • 集群间需要保证网络连通。
    • 如果源集群和目标集群在不同VPC,则需要先打通VPC网络建立对等连接。具体操作请参见对等连接简介
    • 如果是自建Elasticsearch集群迁移至华为云,则可以通过给自建Elasticsearch集群配置公网访问打通网络。
    • 如果是第三方Elasticsearch集群迁移至华为云,则需要建立企业内部数据中心到华为云的VPN通道或专线。
  • 确认集群的索引已开启“_source”

    集群索引的“_source”默认是开启的。执行命令GET {index}/_search,当返回的索引信息里有“_source”信息时表示已开启。

获取Elasticsearch集群信息

在迁移集群前,需要先获取必备的集群信息,用于配置迁移任务。

表1 需要获取的Elasticsearch集群信息

集群来源

要获取的信息

获取方式

源集群

华为云Elasticsearch集群

  • 源集群的访问地址
  • 访问源集群的用户名和密码(仅安全集群涉及)
  • 获取集群名称和访问地址请参见3
  • 用户名和密码请联系服务管理员获取。

自建Elasticsearch集群

  • 源集群的公网访问地址
  • 访问源集群的用户名和密码(仅安全集群涉及)

联系服务管理员获取。

第三方Elasticsearch集群

  • 源集群的访问地址
  • 访问源集群的用户名和密码(仅安全集群涉及)

联系服务管理员获取。

目标集群

华为云Elasticsearch集群

  • 目标集群的访问地址
  • 访问目标集群的用户名和密码(仅安全集群涉及)
  • 获取访问地址请参见3
  • 用户名和密码请联系服务管理员获取。

源集群的来源不同,获取信息的方式不同,此处仅介绍如何获取华为云Elasticsearch集群的信息。

  1. 登录云搜索服务管理控制台。
  2. 在左侧菜单栏选择集群管理 > Elasticsearch
  3. 在Elasticsearch集群列表,获取集群名称和访问地址。
    图2 获取集群信息

准备迁移虚拟机

创建ECS用于迁移Elasticsearch集群。

  1. 购买Linux ECS,“镜像”选择CentOS 7系列,“虚拟私有云”和目标集群保持一致。购买操作指导请参见快速购买和使用Linux ECS
  2. 测试ECS和源集群、目标集群的连通性。

    在ECS执行如下命令测试连通性,当正常返回集群信息时表示已经连通。

    # 非安全集群
    curl -ik http://ip:9200    
    #安全集群+HTTPS访问
    curl -ik https://ip:9200 -u[Username]:[password]

通过ESM迁移集群

  1. 访问ESM下载地址,下载“migrator-linux-amd64”软件包。
  2. 通过SCP工具将下载的“migrator-linux-amd64”软件包上传到Linux ECS的执行路径下。
  3. 在Linux ECS的执行路径下执行命令,将源集群的索引结构和数据迁移到目标集群。
    # 索引全量迁移
    ./migrator-linux-amd64 -s http://source:9200 -d http://dest:9200 -x index_name -m admin:password -n admin:password --copy_settings --copy_mappings -w 5 -b 10
    
    #索引增量迁移
    ./migrator-linux-amd6 -s http://source:9200 -d http://dest:9200 -x index-test -m admin:password -n admin:password -w 5 -b 10 -q "timestamp:[\"2022-01-17 03:41:20\" TO \"2022-01-22 03:41:20\"]"

    迁移命令的常用参数说明请参见表2,更多详细参数说明请参见ESM文档

    表2 常用参数说明

    选型

    示例

    说明

    -s, --source=

    http://source:9200

    源Elasticsearch集群访问地址。

    -d, --dest=

    http://dest:9200

    目标Elasticsearch集群访问地址。

    -x, --src_indexes=

    index_name

    index1,index2

    源集群迁移索引名,支持正则匹配和逗号分隔。

    -y, --dest_index=

    index_name_rename

    目标集群索引名,支持单索引名称,如果不配置则和源索引名称相同。

    -m, --source_auth=

    admin:password

    访问源Elasticsearch集群的用户名和密码,仅安全集群涉及。

    -n, --dest_auth=

    admin:password

    访问目标Elasticsearch集群的用户名和密码,仅安全集群涉及。

    -w, --workers=

    5

    读取源端数据速率控制参数,Bulk读取数据并发线程数。

    默认值:1

    -b, --bulk_size=

    10

    读取源端数据速率控制参数,Bulk一次读取数据的数据大小。

    默认值:5MB

    --sliced_scroll_size

    4

    读取源端数据速率控制参考,Bulk Scorll中sliced的大小。

    默认值:1

    --copy_settings

    -

    迁移源端索引的settings。

    --copy_mappings

    -

    迁移源端索引的mappings。

    --buffer_count=

    -

    迁移虚拟机缓存在内存中的文档数量。

    默认值:10w

  4. 数据迁移完成后,通过对比文档个数检查数据一致性。
    # 非安全集群
    curl -ik http://ip:9200/{索引名称}/_count   
    #安全集群+HTTPS访问
    curl -ik https://ip:9200 -u[Username]:[password]/{索引名称}/_count

常见问题

  • 迁移过程出现报错“out of memory”怎么办?

    迁移过程中出现报错“out of memory”, 表示迁移虚拟机内存溢出,有如下解决方案:

    • 可能是ECS虚拟机的配置不够,建议升级ECS规格,操作指导请参见变更单台ECS规格
    • 调整ESM的迁移速度,通过在迁移命令中减小“buffer_count”参数,限制内存中的文档数量。
  • 迁移完成后,为什么源集群和目标集群的索引数据存储量不一致?

    ESM迁移集群后,两个集群的数据存储量不一致是正常的,这是由Elasticsearch的内部存储机制决定的。Elasticsearch存储是有多个shard,每个shard又有多个segment,由于ESM迁移是把源集群数据写入到目标集群,会导致在目标集群重新生成segment和shard,由于segment和shard都会对数据有膨胀,不同集群的segment的shard不同,数据量也不同,如果需要比较数据一致性,则需要对比文档个数的多少,而不是对比数据大小。

我们使用cookie来确保您的高速浏览体验。继续浏览本站,即表示您同意我们使用cookie。 详情

文档反馈

文档反馈

意见反馈

0/500

标记内容

同时提交标记内容