Elasticsearch 备份:方案篇

news/2025/10/10 9:13:46/文章来源:https://www.cnblogs.com/infinilabs/p/19132353

1. 为什么要备份

在 Elasticsearch 集群的日常运维中,制定完善的数据备份与恢复策略是保障业务连续性和数据安全的基石。其中,备份作为数据保护的“最后一道防线”,其核心在于将某个时间点的集群完整快照,转储至可以快速恢复的存储介质或者离线数据库中,定期更新并长期保存。

一个有效的备份方案,不仅要求备份数据的完整性、一致性与可恢复性,还必须满足离线存储、周期执行与恢复验证等关键要求。其重要性不言而喻:在面对诸如硬件故障、数据中心级灾难、人为误操作(如误删数据)等极端场景时,备份是我们能够快速重建集群、找回关键历史数据,从而实现业务容灾与数据归档的唯一希望。因此,建立并严格执行备份方案,对于确保企业核心数据的长期安全与合规性至关重要。

2. ES 备份实现的方案

社区里,ES 的备份方案有很多,除了 ES 自带的 snapshot 和 CCR 外,还有社区里很多开源项目,如 esdump、gateway 等等,当然你也可以用 logstash+kafka 之类组件通过数据同步的自建方案(自建方案本文不进行阐述)实现数据备份的效果。

2.1 镜像备份

Snapshot 是 Elasticsearch 自带的备份与恢复机制。它通过将索引底层的 Lucene segment 文件 拷贝到外部仓库来实现备份,首次备份是全量,之后为增量快照,只保存新增或变更的 segment。基于数据文件的备份,节省了数据内容的解析成本,对资源的占用更少,整体效率更高

使用前需要配置快照仓库(repository),常见类型包括共享文件系统(NFS)、HDFS、S3、GCS 等,并保证所有节点都能访问该仓库。

基于底层数据文件的备份,使得镜像能支持到索引级和集群级的恢复。备份与恢复的耗时与数据规模密切相关,规模较小时可能仅需数分钟,而在数据量较大时,则可能延长至数小时甚至一天以上。同时也存在版本兼容的问题,具体可以参见这里

Snapshot 是生产环境下一个不错的冷备方案,适合大规模数据的容灾恢复。

2.2 CCR

Cross Cluster Replication(CCR)是一种 Elasticsearch 提供的跨集群实时复制方案,可作为数据备份与容灾手段。其原理是将一个集群中的索引设为 leader index,在远程集群中配置对应的 follower index,通过内部的 shard-level replication 机制实时拉取并应用写入操作,保证目标索引与源索引保持高度一致。

使用 CCR 需要 X-Pack(商业功能) 支持,并要求两个集群之间网络能够互通,且 Elasticsearch 版本通常需保持一致

CCR 是跨集群的分片复制功能,它和主副本复制类似。在首次链接复制完基础数据文件后,CCR 会从源集群的主分片持续拉取变更操作,然后在目标集群对应的分片上重放,从而保证两边分片的数据内容保持一致。因此 CCR 提供近实时的数据同步,RPO 接近 0。且对业务透明,无需改动应用。

CCR 更适合对 实时性与高可用要求极高 的核心业务场景,能完成数据热备的要求。

2.3 esdump

esdump 是一种基于 Elasticsearch REST API 的轻量级数据导入导出工具,可用来实现逻辑层面的数据备份与迁移。其原理是通过调用 Elasticsearch 的 Scroll API 分批拉取文档数据,并利用 Bulk API 将数据写入目标集群或输出到 JSON 文件。除了文档数据外,它还支持索引 mappingsettings 的导出与恢复。

esdump 使用简单,命令行即可操作。它不依赖外部存储仓库,部署简单。支持导出到文件,便于异地保存或二次加工, 跨版本兼容性较好。

但是 esdump 仅支持全量导出,不具备增量备份能力。再加上性能有限,面对海量数据时效率较低,仅适合小规模或跨版本的数据迁移

总体而言,esdump 更适合作为 小规模备份、迁移或数据抽取 的辅助方案,而在生产环境下的大规模冷备,仍建议使用 snapshot/ccr 等方案。

2.4 Gateway

INFINI Gateway 实现 Elasticsearch 数据备份,其核心原理是在 ES 集群前部署网关,由它来拦截并复制应用的写入请求(如 bulk 操作)。这些请求会被网关记录到其内置的持久化队列中(如基于本地磁盘或 S3 的 INFINI Queue),然后异步地将数据同步到备用的 ES 集群。在主集群发生故障时,网关能将查询请求自动切换到备用集群,实现快速容灾。

Gateway 对于业务也是透明的。业务端通常只需修改访问地址,无需改动代码逻辑。它不仅通过主备集群和网关的故障切换能力,能有效保障业务连续性。同时基于请求复制的机制,结合队列的重试能力,能在复杂故障场景下最大限度地保证主备数据一致。并且 Gateway 对接入的 ES 集群并没有版本限制,支持跨版本 ES、云上云下等多种场景,有着不可比拟的灵活性。

INFINI Gateway 能够充分满足高实时性与高可用的热备需求。这得益于其采用的数据内容复制模式,该机制显著降低了对环境同构性的要求,使其能够适应更多样化的部署场景。

3. 方案对比

那我们来对比一下上面几套方案的优缺点和适用场景。

方案 原理简述 优点 缺点 适用场景
snapshot 在存储或系统层面对整个数据目录做快照/拷贝 效率高,速度取决于底层存储性能 1.只能到索引或者集群级别;
2. 恢复时间最低分钟级,不满足热备条件;
3. 对于长期冷备的情况,需要大于索引大小的镜像存储空间。
4. 有主备版本限制
灾难恢复、系统级冷备,要求快速整体恢复的场景
CCR 在两个集群间实时复制索引的变更日志,保持主/从同步 实时/准实时复制 1. 仅限付费版本;
2. 两集群版本保持一致
异地容灾、实时热备,业务连续性要求高的场景
esdump 基于 Scroll API + Bulk API 导出文档数据、mapping、settings 1.使用简单;
2.可导出到文件,方便迁移或二次加工
1. 性能差,处理大数据量耗时长;
2.无增量能力
小规模索引迁移、调试数据导出、开发测试环境数据同步
Gateway 作为中间件或插件,将数据流式写入到对象存储/分布式存储,并支持恢复 1. 对应用程序和 es 都无感透明,部署简单;
2. 使用灵活,可配置度高;
3. 高性能同步工具。
暂无 异地容灾、实时热备,业务连续性要求高的场景

4. 小结

在本文,我们探讨了 ES 备份的一些主流方案,各自的优缺点,以及其适用的场景。在接下来的一篇里,我们将深入剖析 Snapshot 实现文件备份的原理,演示全量与增量备份的完整操作,并为大家解锁 Elasticsearch 一项颇为人知却至关重要的“隐藏技能”——高效的增量恢复

作者:金多安,极限科技(INFINI Labs)搜索运维专家,Elastic 认证专家,搜索客社区日报责任编辑。一直从事与搜索运维相关的工作,日常会去挖掘 ES / Lucene 方向的搜索技术原理,保持搜索相关技术发展的关注。
原文:https://infinilabs.cn/blog/2025/es-backup-plans/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/933983.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Atcoder Beginner Contest 422

ABC422A 按照题意输出即可。 /*********************************************************************程序名:作者: xAlec日期: 2025-10-01 15:45说明: sakana ~ *************************************************…

【Android】解决安卓在隐藏强大的系统栏后usb鼠标被隐藏的疑问

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

centos安装libgdiplus-6.1

centos安装libgdiplus-6.1参考:https://chat.deepseek.com/share/fhak78p0eprkm8reeh 源码:# 从Mono官方下载完整源码包 wget https://download.mono-project.com/sources/libgdiplus/libgdiplus-6.1.tar.gz tar -xz…

RapidJSON 自定义内存分配器详解与实战 - 详解

RapidJSON 自定义内存分配器详解与实战 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &q…

完整教程:考研408计算机网络第47题(2024年)

完整教程:考研408计算机网络第47题(2024年)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &q…

进步与现代化

线性方程组 线性无关、系数矩阵行列式、解的情况 简化行阶梯型矩阵:主元全 \(1\),所在行左侧全 \(0\),所在列剩余全 \(0\) 生成子空间:\(\langle A\rangle\),线性表出の所有向量 \(A\) 线性无关 \(\Longleftright…

2025 最新推荐!溴化锂回收公司精选榜单:含制冷机 / 溶液 / 机组回收服务商权威测评及选择指南

随着工业与商业领域溴化锂制冷设备迭代加速,老旧设备处置需求激增,但市场仍存在服务标准混乱、环保措施缺失、技术能力参差不齐等痛点。部分机构拆解流程不规范,既造成铜、铝等资源浪费,又易因溴化锂溶液泄漏引发污…

使用OpenCvSharp , Emgu.CV 手搓 视觉识别算法 以及 成果展示

举个🌰 一个培养皿里有若干条鱼苗,需要将它全部区分识别出来, 像如下图所示的小蝌蚪就是(培养皿里三个黑点是热带鱼苗,做实验用的,一毫米长) 用的是海康威视的黑白工业相机拍摄。 先讲讲思路,图片是一组庞大的…

PKC7300高频电流探头在新能源汽车车载充电机稳态电流测试中的应用方案

一、应用背景 新能源汽车车载充电机(OBC)是将外部电网电能转换为车载动力电池电能的关键部件。在工作过程中,它需要处理0-300A的电流,而其内部的高频开关电路容易产生干扰信号。因此,对电流测量的量程、高频信号捕…

质量检验知识专题讲座之六:抽样检验步骤

抽样检验步骤抽样检验是从一批产品中随机抽取部分样本进行检验,再根据样本结果判断整批产品是否合格的过程,主要步骤如下: 1)、确定抽样检验的对象和目的 明确需要检验的产品批次、检验的质量特性(如尺寸、性能、…

羡慕线段树

顺颂 YFST 板子 & 使用例 题。首先树剖,然后变成在 \(\text{dfn}\) 区间上插一个关于 \(\text{dis}\) 的一次函数。这个很神奇,一般的李超树是,在 \(x\) 轴区间上插入关于 \(x\) 的一次函数。然而这里,\(\text…

质量检验知识专题讲座之七:来料检验

来料检验(IQC)1、来料检验的定义: 来料检验是指对采购进来的原材料、部件或产品做品质确认和查核,即在供应商送原材料或部件时通过抽样的方式对品质进行检验,并最后做出判断该批产品是允收还是拒收。 来料检验是企业…

windows 10分区教程,win10自带分区教程

win10怎么分区?win10自带磁盘分区,有几个人会?win10磁盘分区 不需要任何软件,win10系统本身就有这个功能,下面开始操作 第一步 按快捷键【wins+X】的组合键,在弹出的选项中选择【磁盘管理】选项;如下图: ​​ …

巴斯勒相机:30 年工艺沉淀,重新定义机器视觉效率​

巴斯勒相机:30 年工艺沉淀,重新定义机器视觉效率​2025-10-10 08:43 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; dis…

决斗(模拟赛题目T3)分析

感觉很典,所以就记下来了。我们考虑一个非常重要的事实: - 田忌赛马对于每一个 $a_i$ 找的是第一个比他大的 $b_i$。 - 而字典序最大又需要前面的尽可能大。这似乎产生了矛盾,让这道题目看起来有点难。我们考虑不用…

Guidde:AI驱动的视频文档创建工具 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

大学C语言课摸鱼记

2025.10.10 终于开启了大学的第一节C语言课。不得不说,C语言课当早八是真抽象。 什么叫C语言理论课不在机房???什么叫开学第十周才上机学习??? C语言教材第三章才教 scanf 和 printf ,😓 太抽象了。

2025.10.10——1绿

普及+/提高- P1503 鬼子进村 原以为线段树维护最后的1,后来发现可以用二分+树状数组log(n)^2解决

gitlen中,已经提交了内容,如何回退到修改前?

在 Git 中,如果已经提交了内容并想要回退到修改前的状态,可以根据具体需求使用以下几种方法: 1. 撤销最近一次提交(保留修改内容) 如果你想撤销最近的提交,但保留工作区的修改(以便重新修改后再次提交),可以使…

HCIP-IoT/H52-111 真题详解(章节C),接入实用的技术和网络设计 /Part1

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …