快照仓库创建成功

经过前面的配置修改,我们成功创建了快照仓库:

curl -X PUT "https://[ES_HOST]:9200/_snapshot/backup_repo" \-H "Content-Type: application/json" \-u "[USERNAME]:[PASSWORD]" \-k \-d '{"type": "fs","settings": {"location": "/opt/elasticsearch/snapshots","compress": true}}'

成功响应{"acknowledged":true}

快照创建过程

创建包含两个索引的快照

curl -X PUT "https://[ES_HOST]:9200/_snapshot/backup_repo/snapshot_$(date +%Y%m%d_%H%M%S)" \-H "Content-Type: application/json" \-u "[USERNAME]:[PASSWORD]" \-k \-d '{"indices": "index_business_data,index_embedding_data","ignore_unavailable": true,"include_global_state": false,"partial": false}'

快照参数说明

  • indices: 指定要备份的索引名称
  • ignore_unavailable: 如果索引不存在,忽略错误
  • include_global_state: 不包含集群全局状态
  • partial: 不允许部分快照(确保完整性)

快照进度监控

实时监控命令

# 查看快照状态
curl -k -u "[USERNAME]:[PASSWORD]" "https://[ES_HOST]:9200/_snapshot/backup_repo/_all"# 实时监控进度
watch -n 10 'curl -k -u "[USERNAME]:[PASSWORD]" "https://[ES_HOST]:9200/_snapshot/backup_repo/_all"'

快照状态解读

进行中状态

{"state": "IN_PROGRESS","shards": {"total": 7, "failed": 0, "successful": 6},"start_time": "2025-08-27T09:55:13.134Z"
}

完成状态

{"state": "SUCCESS","shards": {"total": 7, "failed": 0, "successful": 7},"end_time": "2025-08-27T10:00:03.733Z","duration_in_millis": 290599
}

多节点存储问题

问题描述

快照创建成功后,我们遇到了新的挑战:快照文件分散在多个节点上,如何统一传输到生产环境?

问题分析

  • 主节点写入:快照元数据由master节点写入
  • 分片数据分布:实际的分片数据分布在不同的数据节点上
  • 共享存储:所有节点都能访问同一个快照目录

解决方案验证

# 检查各节点的快照目录
ls -la /opt/elasticsearch/snapshots/
du -sh /opt/elasticsearch/snapshots/*# 验证快照完整性
curl -X POST "https://[ES_HOST]:9200/_snapshot/backup_repo/snapshot_*/_restore?dry_run=true" \-H "Content-Type: application/json" \-u "[USERNAME]:[PASSWORD]" \-k

最终解决方案:elasticsearch-dump

由于生产环境权限限制,我们最终选择了elasticsearch-dump方案:

安装工具

curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo npm install -g elasticdump

导出策略

# 1. 导出mapping和settings
elasticdump \--input=https://[USERNAME]:[PASSWORD]@[ES_HOST]:9200/index_business_data \--output=index_business_data_mapping.json \--type=mapping# 2. 分批导出数据
elasticdump \--input=https://[USERNAME]:[PASSWORD]@[ES_HOST]:9200/index_business_data \--output=index_business_data_data.json \--type=data \--limit=1000 \--size=1000

经验总结与最佳实践

1. 快照配置最佳实践

  • 提前规划:在集群部署时就配置好快照路径
  • 权限管理:确保快照目录有正确的用户权限
  • 存储规划:考虑快照文件的存储空间需求

2. 多节点重启策略

  • 分批重启:避免同时重启多个节点
  • 状态监控:实时监控集群健康状态
  • 分片控制:使用分片重分配控制避免数据迁移

3. 数据迁移方案选择

  • 快照方案:适合有完整环境控制权的场景
  • elasticsearch-dump:适合权限受限或网络隔离的场景
  • 混合方案:根据实际情况选择最合适的方案

4. 监控和验证

  • 进度监控:实时监控快照或导出进度
  • 完整性验证:使用dry-run模式验证数据完整性
  • 性能优化:根据数据量调整批处理参数

最终成果

经过这次配置过程,我们成功:

  1. 配置了完整的快照功能:为所有6个节点添加了快照支持
  2. 掌握了多节点重启策略:学会了安全的重启方法
  3. 了解了快照机制:深入理解了Elasticsearch快照的工作原理
  4. 找到了替代方案:elasticsearch-dump作为备选方案

关键经验

快照创建过程中的注意事项

  • 参数设置:合理设置快照参数,避免包含不必要的数据
  • 进度监控:实时监控快照进度,及时发现和处理问题
  • 完整性验证:使用dry-run模式验证快照的完整性

多节点环境下的挑战

  • 存储一致性:确保所有节点都能访问相同的快照目录
  • 权限管理:统一管理快照目录的权限设置
  • 网络配置:考虑节点间的网络连接和存储共享

替代方案的选择

  • elasticsearch-dump的优势:不依赖快照机制,操作简单
  • 适用场景:权限受限、网络隔离或需要跨版本迁移的场景
  • 性能考虑:大数据量时需要考虑内存使用和网络传输

问题解决思路总结

核心思路:

  1. 识别问题本质:快照文件分散在多节点,传输复杂
  2. 评估环境限制:生产环境权限受限,无法直接使用快照
  3. 选择替代方案:elasticsearch-dump作为备选方案
  4. 验证方案可行性:确保数据完整性和迁移效率

关键决策点:

  • 从快照方案转向elasticsearch-dump
  • 考虑权限限制和环境约束
  • 平衡数据完整性和操作复杂度

总结

这次经历让我们对Elasticsearch集群管理有了更深的理解,也为今后的运维工作积累了宝贵经验。无论是使用快照功能还是elasticsearch-dump,关键是要根据实际环境和需求选择最合适的方案,并在操作过程中保持谨慎和监控。

通过这次实践,我们不仅解决了当前的数据迁移需求,更重要的是建立了一套完整的Elasticsearch集群配置和运维流程,为今后的工作奠定了坚实的基础。

数据迁移方案对比总结

方案优势劣势适用场景
快照方案数据完整性好、速度快、支持增量需要配置权限、依赖存储共享有完整环境控制权
elasticsearch-dump操作简单、不依赖快照机制速度较慢、内存占用高权限受限、网络隔离
混合方案结合两者优势复杂度高、需要更多规划复杂迁移场景

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

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

相关文章

DeepSeek大模型风靡云平台,百度智能云、阿里云、腾讯云等多个平台宣布上线DeepSeek模型

近日,百度智能云、华为云、阿里云、腾讯云、360数字安全、云轴科技等多个平台纷纷宣布上线DeepSeek大模型,这一消息无疑为AI开发者和企业用户带来了全新的机遇和选择。本文将探讨DeepSeek大模型上线的背景、意义以及未来的发展趋势。 首先,我…

position属性

文章目录Position属性🧭 一、position 属性的取值📝 二、各属性值详解与示例1. static(静态定位)2. relative(相对定位)3. absolute(绝对定位)4. fixed(固定定位&#xf…

通信中间件 Fast DDS(二) :详细介绍

目录 1.引言 2.DDS的基本原理 3.FastDDS 的核心特性 4.FastDDS 的核心架构 5.典型应用场景 6.FastDDS 的安装与快速上手 7.学习资源与社区 1.引言 FastDDS(原称 Fast RTPS)是由西班牙公司 eProsima 开发的一款开源、高性能、实时性强的数据分发服…

【69页PPT】智慧方案智慧校园解决方案(附下载方式)

篇幅所限,本文只提供部分资料内容,完整资料请看下面链接 https://download.csdn.net/download/2501_92808811/91776074 资料解读:【69页PPT】智慧方案智慧校园解决方案 详细资料请看本解读文章的最后内容 智慧校园的概念与背景 智慧校园是…

FPGA的工作原理

FPGA(现场可编程门阵列)的核心工作原理是通过可配置的硬件架构,让用户在芯片出厂后自主定义电路逻辑,实现从“通用硬件”到“专用硬件”的灵活转换,本质是用可编程资源搭建出符合特定需求的数字电路。一、核心架构&…

构建生产级RAG系统:从数据处理到智能体的全流程实践

构建生产级RAG系统:从数据处理到智能体的全流程实践 检索增强生成(RAG)技术已成为打造高级知识问答系统的核心,但从原型到稳定高效的生产级系统,需突破数据处理、检索优化、智能决策等多重挑战。本文以某型号工业设备…

Java-代理

在 Java 开发中,代理模式是一种非常重要的设计模式,它通过引入代理对象来控制对目标对象的访问,从而实现额外功能的增强。一、代理模式的基本概念代理模式的核心思想是:通过一个代理对象来间接访问目标对象,在不修改目…

【基础知识】互斥锁、读写锁、自旋锁的区别

从定义、工作原理、适用场景和性能开销四个维度来剖析这三种锁的区别 核心结论 这三种锁的核心区别在于它们应对“锁已被占用”情况时的行为策略不同,而这直接决定了它们的性能和适用场景。 锁类型 核心策略 适用场景 互斥锁 (Mutex) 等不到,就睡 通用的独占访问,临界区执行…

智慧清洁革新者:有鹿机器人自述

晨曦微露,当城市还未完全苏醒,我已悄然完成数万平方米的清洁工作。作为有鹿智能巡扫机器人,我很荣幸能与您分享如何以科技之力重塑清洁行业的标准与体验。卓越技术:重新定义清洁新标准我搭载的聪明大脑是基于Master2000通用具身智…

python学习打卡day48

知识点回顾: 随机张量的生成:torch.randn函数卷积和池化的计算公式(可以不掌握,会自动计算的)pytorch的广播机制:加法和乘法的广播机制 ps:numpy运算也有类似的广播机制,基本一致 im…

记一次雪花算法 ID 精度丢失的Bug:前端接收到的 Long 被“四舍五入”了?

后端生成的 ID:1961005746230337538 前端收到的 ID:1961005746230337500 —— 少了 38?!这不是 Bug,是 JavaScript 的“安全整数”陷阱!本文记录一次真实项目中因 雪花算法 ID 精度丢失 导致的线上问题&…

零知开源——基于STM32F407VET6和ADXL345三轴加速度计的精准运动姿态检测系统

✔零知IDE 是一个真正属于国人自己的开源软件平台,在开发效率上超越了Arduino平台并且更加容易上手,大大降低了开发难度。零知开源在软件方面提供了完整的学习教程和丰富示例代码,让不懂程序的工程师也能非常轻而易举的搭建电路来创作产品&am…

Android14 init.qcom.usb.rc详解

本文以高通平台为例,介绍其USB子系统启动以及USB各种配置动态切换的逻辑,它是以configfs架构实现动态配置USB。 相关文档 1. USB子系统的启动 1.1 on boot阶段 1.1.1 重启恢复用户选择的USB配置 当设备重启时恢复用户选择的USB配置,避免每…

Docker的常用命令及简单使用

1、docker的常用命令 1.1、帮助命令 docker version # 显示docker的版本信息 docker info # 显示docker的系统信息,包括镜像和容器的数量 docker 指令 --help # 查看某个指令的帮助命令可以通过docker --help查看docker常用命…

HGDB全文检索/中文分词的使用

文章目录文档用途详细信息文档用途 本文用于HGDB全文检索/中文分词的介绍,其介绍内容在附件,使用案例见正文 详细信息 一、创建扩展 highgo# create extension zhparser;CREATE EXTENSION highgo# \dFp List of text search parsers Schema…

baijian xiaomaodawang

我将为你创建一个基于Go 1.20.8和Gin框架的博客系统项目。以下是完整的实现方案: 项目创建流程 打开Goland,创建新项目选择Go项目,设置GOROOT为Go 1.20.8项目名称:blog-system启用Go Modules 项目结构 blog-system/ ├── cmd/ │…

Node.js的特性

Node.js的特性 Node.js具有几个显著特性: 事件驱动:Node.js采用事件驱动机制来处理请求和响应,这种机制可以帮助开发者处理大量并发请求,提高系统的性能和可靠性。 非阻塞I/O:Node.js使用异步I/O原语来实现非阻塞I/O操…

交叉编译linux-arm32位程序

目标平台rv1126 芯片 arm32位架构 在ubuntu22.04上交叉编译: 编译器下载地址: Linaro Releases 或者: wget http://releases.linaro.org/components/toolchain/binaries/6.4-2017.11/arm-linux-gnueabihf/gcc-linaro-6.4.1-2017.11-x86_6…

S 3.1深度学习--卷积神经网络

卷积层 图像原理 卷积神经网络(Convolutional Neural Network, CNN) 图像在计算机中是一堆按顺序排列的数字,数值为 0 到 255。0 表示最暗,255 表示最亮。 图像识别 上图是只有黑白颜色的灰度图,而更普遍的图片表达…

【7】SQL 语句基础应用

SQL 语句基础应用where (筛选)where 子句可使用到运算符查询表中所有的数据查询表中的数据,必须满足 11(相当于恒成立)查询表中的 分数(score) 大于 80 分的学生查询表中 名称(name) 是 赵六 的数据查询表中 名称(name) 不等于 哈哈 的数据.查…