前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >腾讯云ElasticSearch迁移场景介绍

腾讯云ElasticSearch迁移场景介绍

原创
作者头像
岳涛
发布2025-02-26 17:27:13
发布2025-02-26 17:27:13
2321
举报
文章被收录于专栏:大数据生态大数据生态

说明

本文描述问题及解决方法同样适用于 腾讯云 Elasticsearch Service(ES)

背景

腾讯云 Elasticsearch Service (ES) 凭借多年的运营经验和优质的线上服务,以其低成本、高性能、高可靠性和高扩展性的特点,已经成为越来越多客户的不二之选。那么,哪些场景可以迁移到腾讯云 ES?不同的场景应该使用什么方案?它们之间有什么差异?让我们在本文中一一展开。

ES 常见迁移场景

ES 迁移方案介绍

ES 标准迁移方案介绍

ES迁移主推Snapshot方案,如有其他特殊场景,可参考Logstash及在线融合方案。具体方案对比如下(方案超链接可点击):

迁移方案

适用场景

适用产品

停服割接时间

新增

更新

删除

清洗

方案实施

Snapshot

可接受短暂停服,对迁移速度有要求的场景

自建ESAWS/阿里/华为云ES

通过多次增量快照,保证大部分场景下停服时间<=20min

可以根据文档自助迁移

Logstash

源端版本>目标端时,或迁移过程中需要定制化改造的场景

自建/AWS云 Opensearch华为云 OpensearchAWS/阿里/华为云ES

在保证数据一致性的情况下,Logstash方案需全程停服,停服时间与集群资源性能、专线带宽等因素有关

可以根据文档自助迁移

在线融合(腾讯云ES特有)

在线不停服迁移

自建ES

无需停服

需腾讯云ES后台配合纯手工操作,有一定风险

ES 其他迁移方案介绍

其他服务 to es 迁移方案如下:

产品

迁移方案

方案链接

阿里云 Opensearch

使用Oceanus通过上游多表Join方式写入ES宽表

https://cloud.tencent.com/document/product/849/60520

Apache Solr

Solr to ES 开源工具自研工具Bi Fang(支持断点续传)

https://github.com/o19s/solr-to-eshttps://doc.weixin.qq.com/doc/w3_AfYAHgZKAMAtqHUOionQQGRhP9otU

Mysql

LogstashOceanus

https://cloud.tencent.com/document/product/845/55159https://cloud.tencent.com/document/product/849/60520

Milvus

Milvusdm

https://github.com/milvus-io/milvus-tools

ES 迁移方案概览

Snapshot方案

使用Snapshot从自建ES迁移至腾讯云ES集群方案概览:

Logstash方案

使用Logstash迁移数据至腾讯云ES集群方案概览:

在线融合方案

使用在线融合迁移数据至腾讯云ES集群方案概览:

常见迁移问题案例

删除快照导致的业务异常

问题案例:

删除快照导致集群 shard lock。

说明:

快照在进行中时,删除快照的操作会非常重,可能会对集群稳定性造成影响。删除快照有如下问题:

  • 可能会引起索引 shard lock;
  • 快照在进行中时,DELETE 快照很大几率会超时或无法成功,只能通过重启集群解决;
  • 如已发起快照删除,在删除操作完成之前,无法发起新的快照请求

解决方案:

  • Reopen 索引,尝试脱离 shard lock 状态;
  • 如 reopen 无效,则需滚动重启对应节点。

避免方式:

在快照进行中时,应避免对快照做删除操作。如发生误备份的情况,也建议等备份结束再进行删除。

索引只读导致的业务全面不可写

问题案例:

源端索引 index block write / read only 属性备份后被携带到目标端。

说明:

如果是采用源端索引只读的方式停写,该索引属性会被同步到快照里,在恢复时也会携带禁写属性到目标端集群,所以在恢复后需要回滚禁写属性,否则会导致业务不可写。

解决方案:

数据在目标端恢复之后,使用 PUT settings 接口对目标端索引全量解除禁写。

规避方法:

最后一次增量前的切割操作,建议是业务主动停写。如只能通过禁写的方式停写,则务必需要在切割前对目标端集群执行一个解除禁写的操作。

索引滚动导致的迁移失败

问题案例:

在快照备份过程中,日志滚动属性发生变化。

说明:

在日志场景有 rollover 的情况下,如果 is_write_index 属性发生变化,则会发生恢复失败的问题,具体表现为日志里会抛异常:

代码语言:txt
复制
Caused by: java.lang.IllegalStateException: alias [xxxxx] has more than one write index [xxxxx-2023.10.25-000001, xxxxx-2023.10.26-000002]

解决方案:

取消目标端索引旧的 is_write_index 属性:

代码语言:txt
复制
POST_aliases
{
  "actions": [
    {
      "add": {
        "index": "xxxx-2023.10.25-000001",
        "alias": "xxxx",
        "is_write_index": false
      }
    }
  ]
}

规避方法:

  • 对于滚动频繁的场景,每次恢复前检查一下索引可写属性,避免冲突;
  • 在日志场景有 rollover 的情况下,建议业务切割上云之后,再同步 ILM(索引生命周期管理) 任务,否则会发生目标集群 ILM 提前触发 rollover 的可能,也会导致 is_write_index 属性冲突问题。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 说明
  • 背景
  • ES 常见迁移场景
  • ES 迁移方案介绍
    • ES 标准迁移方案介绍
    • ES 其他迁移方案介绍
  • ES 迁移方案概览
    • Snapshot方案
    • Logstash方案
    • 在线融合方案
  • 常见迁移问题案例
    • 删除快照导致的业务异常
    • 索引只读导致的业务全面不可写
    • 索引滚动导致的迁移失败
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档