Easysearch 索引备份之 Clone API

在日常运维 Easysearch 的过程中,备份数据是一项重要工作。为了确保数据安全和业务连续性,我们可能需要了解并掌握多种备份索引的方法,以便应对不同的场景。我们先梳理下常用的备份方法有哪些。

Snapshot

Easysearch 的 Snapshot(快照) 是一种官方支持的集群数据备份与恢复机制,通过将索引数据、集群状态(如设置、模板)和分片分配信息保存到外部存储仓库(如本地文件系统、AWS S3、华为云 OBS 等)实现全量或增量备份。其核心原理是复制索引的 Lucene 分片文件,并利用段文件(Segment)的不可变性实现增量存储优化。

快照的优点包括:

  1. 高效性:增量备份仅存储新增或修改的段文件,显著节省存储空间和网络传输成本;
  2. 可靠性:支持跨集群恢复和灾难性故障修复,避免直接拷贝数据目录导致的数据不一致风险;
  3. 灵活性:可指定备份特定索引,并支持版本兼容性恢复(需遵循版本匹配规则);
  4. 自动化:通过策略(Snapshot Policy)实现定时备份管理。

缺点则包括:

  1. 时效性限制:无法实现实时备份,是一种 PIT (Point in Time) 备份;
  2. 需预先配置:需预先注册仓库并确保存储系统可用性;
  3. 恢复约束:恢复时需关闭或删除目标索引,或恢复时修改索引名称;
  4. 依赖主分片状态:若主分片不可用(如节点故障),快照任务会失败。

总体而言,Snapshot 是生产环境首选的备份方案,尤其适合大规模数据归档和跨环境迁移,但需权衡备份频率与存储成本。详情可以参考文档

Reindex

Easysearch 的 Reindex 是一种通过 API 将数据从一个索引复制到另一个索引的备份方法,适用于同集群或跨集群的数据迁移与重建。其核心操作是使用 POST _reindex 命令将源索引的文档批量读取并写入目标索引。备份时需确保目标索引的 Mapping 与源索引兼容(字段类型一致),并通过 size 参数控制批量处理量(如 "size": 2000)以优化性能。对于跨集群备份,需在目标集群配置文件中添加源集群 IP 白名单(reindex.remote.whitelist)并提供认证信息,详情可以参考文档

优点

  1. 灵活性 :支持通过 query 参数筛选特定数据备份(如仅迁移某字段值符合条件的数据);
  2. 无缝整合:可在目标索引中修改索引结构(如分片数、字段类型);
  3. 并发及限流:支持设置并发度和限流阈值,适应不同的场景;
  4. 操作便捷:无需额外存储配置,适合临时备份或小规模迁移。

缺点

  1. 资源消耗大:reindex 本质是数据写入,要占用 CPU、内存和磁盘 IO,可能影响集群性能;
  2. 网络依赖:跨集群备份依赖网络带宽,高延迟或带宽不足会显著拖慢速度;
  3. 中断风险:reindex 一旦中途报错,无法继续重试,只能从头再来;
  4. 时效性局限:备份完成后新增数据需手动触发二次迁移,无法实现实时同步。

建议在低峰期执行 Reindex,并优先采用快照(Snapshot)进行生产环境长期备份,Reindex 更适合索引结构调整或小规模数据迁移场景。

工具备份

还有些工具支持将 Easyearch 的索引数据备份成一个文件,比如 elasticsearch-dump、Logstash 等。数据量较大的情况下,这些工具可能会有效率问题,一般在特定场景下有用,在此不展开介绍。

Clone API

Easysearch 的 Clone API 并不是传统意义上的备份工具,其核心设计目标是通过复制索引的底层段文件(Segment)快速生成一个与原索引数据一致的新索引,包括源索引是 Mapping 和 Setting 也一起复制。

具体操作步骤如下:

  1. 设置源索引为只读状态
bash 复制代码
PUT /.infini_metrics-000004/_settings
{
  "settings": {
    "index.blocks.write": true
  }
}
  1. 执行 Clone 操作
bash 复制代码
POST .infini_metrics-000004/_clone/backup_infini_metrics-000004
  1. 设置源索引和新索引为可读写状态

复制是新索引也会是只可读状态,大家根据需要选择是否都改成可读写状态。

bash 复制代码
PUT /.infini_metrics-000004,backup_infini_metrics-000004/_settings
{
  "settings": {
    "index.blocks.write": null
  }
}

优点

  • 极速复制:直接复用底层段文件,无需重写数据,适用于大数据量快速复制。
  • 保留定义: 直接使用源索引的 Setting 和 Mapping。
  • 存储优化:可调整目标索引的副本数,节省资源。

缺点

  • 业务影响:克隆前需修改源索引为只可读,导致写入中断,影响服务可用性。
  • 不够灵活:沿用源索引 Setting 和 Mapping 无法修改(副本数可修改)。
  • 扩展性不足:不能跨集群,目标索引只能在本集群。

Clone API 有自己鲜明的特点,对比 Snapshot,它不用恢复过程,目标索引直接在集群中了。对比 Reindex,它无需重写数据和先创建索引,更加高效。在特定场景下非常有用,也可以搭配其他备份方法一起使用。

作者:杨帆,极限科技(INFINI Labs)高级解决方案架构师、《老杨玩搜索》栏目 B 站 UP 主,拥有十余年金融行业服务工作经验,熟悉 Linux、数据库、网络等领域。目前主要从事 Easysearch、Elasticsearch 等搜索引擎的技术支持工作,服务国内私有化部署的客户。

原文:infinilabs.cn/blog/2025/e...

相关推荐
程序新视界1 小时前
MySQL中,IS NULL和IS NOT NULL不会走索引?错!
数据库·mysql·dba
wdfk_prog1 小时前
闹钟定时器(Alarm Timer)初始化:构建可挂起的定时器基础框架
java·linux·数据库
许长安1 小时前
Redis(二)——Redis协议与异步方式
数据库·redis·junit
java_python源码2 小时前
python高校心理健康服务小程序(源码+文档+调试+基础修改+答疑)
数据库·sqlite
简色2 小时前
题库批量(文件)导入的全链路优化实践
java·数据库·mysql·mybatis·java-rabbitmq
点灯小铭3 小时前
基于单片机的自动存包柜设计
数据库·单片机·mongodb·毕业设计·课程设计
失散133 小时前
软件设计师——09 数据库技术基础
数据库·软考·软件设计师
养生技术人3 小时前
Oracle OCP认证考试题目详解082系列第53题
数据库·sql·oracle·database·开闭原则·ocp
银帅183350309714 小时前
2018年下半年试题四:论NoSQL数据库技术及其应用
数据库·架构·nosql
liu****4 小时前
基于websocket的多用户网页五子棋(九)
服务器·网络·数据库·c++·websocket·网络协议·个人开发