Elasticsearch数据迁移快照方案初探(一):多节点集群配置踩坑记

背景介绍

在生产环境中,我们经常需要将测试环境的Elasticsearch索引数据迁移到生产环境。这次我们遇到了一个典型的多节点集群快照配置问题:需要为所有节点添加path.repo配置,但过程中遇到了各种挑战。

问题描述

我们的Elasticsearch集群包含6个节点:

  • Master节点: es-node1, es-node3
  • 数据节点: es-node2, es-node4, es-node5, es-node6

需要迁移的索引:

  • index_business_data: 8.8GB, 543,617个文档
  • index_embedding_data: 13.7GB, 367,067个文档

初始尝试:直接创建快照仓库

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

错误信息

{"error": {"root_cause": [{"type": "repository_exception","reason": "[backup_repo] location [/tmp/es_backup] doesn't match any of the locations specified by path.repo because this setting is empty"}]}
}

问题分析

错误的核心原因是:Elasticsearch集群没有配置path.repo参数。这个参数指定了快照文件的存储路径,必须预先配置才能创建快照仓库。

解决方案选择

我们面临两个选择:

  1. 配置快照功能:为所有节点添加path.repo配置
  2. 使用elasticsearch-dump:直接导出数据

考虑到数据完整性和长期维护,我们选择了第一种方案。

Docker环境下的配置挑战

我们的Elasticsearch运行在Docker容器中,这带来了额外的复杂性:

挑战1:配置修改需要重启

  • docker restart无法覆盖环境变量
  • 必须使用docker-compose down + up -d
  • 需要逐个重启节点,避免集群不可用

挑战2:数据节点重启策略

# 推荐的重启顺序
# 1. 先重启数据节点(分批)
docker stop es-node5 es-node6
docker start es-node5 es-node6
sleep 40docker stop es-node2 es-node4
docker start es-node2 es-node4
sleep 40# 2. 最后重启master节点(逐个)
docker stop es-node1
docker start es-node1
sleep 40docker stop es-node3
docker start es-node3
sleep 40

挑战3:分片重分配控制

为了避免重启过程中的分片迁移问题,我们采用了以下策略:

# 1. 禁用分片重分配
curl -X PUT "https://[ES_HOST]:9200/_cluster/settings" \-H "Content-Type: application/json" \-u "[USERNAME]:[PASSWORD]" \-k \-d '{"persistent": {"cluster.routing.allocation.enable": "none"}}'# 2. 减少索引副本数
curl -X PUT "https://[ES_HOST]:9200/_all/_settings" \-H "Content-Type: application/json" \-u "[USERNAME]:[PASSWORD]" \-k \-d '{"index": {"number_of_replicas": 0}}'

配置修改过程

为每个节点添加快照配置:

environment:# ... 其他配置 ...- path.repo=/opt/elasticsearch/snapshotsvolumes:# ... 其他卷 ...- /opt/elasticsearch/snapshots:/opt/elasticsearch/snapshots

踩坑经验总结

  1. docker restart无法更新环境变量:必须使用down + up
  2. 分片重分配控制很重要:避免重启过程中的数据迁移
  3. 逐个重启策略:确保集群始终可用
  4. 权限设置:快照目录需要正确的用户权限

配置验证

重启完成后,验证配置是否生效:

curl -k -u "[USERNAME]:[PASSWORD]" "https://[ES_HOST]:9200/_nodes/_all/settings" | grep -i "path.repo"

关键要点

  • 环境变量配置:Docker容器重启后环境变量不会自动更新
  • 集群状态管理:重启过程中需要控制分片重分配
  • 权限管理:快照目录需要正确的用户权限设置
  • 分批重启:避免同时重启多个节点导致集群不可用

问题解决思路总结

核心思路:

  1. 识别根本原因path.repo配置缺失
  2. 评估解决方案:快照配置 vs elasticsearch-dump
  3. 制定重启策略:分批重启,控制分片迁移
  4. 验证配置生效:确认所有节点配置一致

关键决策点:

  • 选择快照方案而非直接导出
  • 采用分批重启而非同时重启
  • 使用分片重分配控制避免数据迁移

下一步

配置完成后,我们就可以开始创建快照了。但这个过程又带来了新的挑战,详见下一篇博客。

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

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

相关文章

leedcode 算法刷题第二十天

39. 组合总和 class Solution { public:vector<vector<int>> result;vector<int> temp;void backtructing(vector<int>& candidates, int target, int sum,int start){if(sumtarget){result.push_back(temp);return;}if(sum>target){return;}f…

身份证实名认证API集成—身份核验接口-网络平台安全合规

在数字化浪潮席卷各行各业的今天&#xff0c;网络空间的安全问题日益受到关注。为防范网络诈骗、虚假注册、身份盗用等风险&#xff0c;国家陆续出台多项法律法规&#xff0c;如《网络安全法》《个人信息保护法》等&#xff0c;明确要求互联网服务提供者落实用户真实身份核验机…

谷歌TIGER爆火!生成式召回颠覆推荐系统:用语义ID破解冷启动+多样性难题,3大数据集性能碾压传统模型

注&#xff1a;此文章内容均节选自充电了么创始人&#xff0c;CEO兼CTO陈敬雷老师的新书《GPT多模态大模型与AI Agent智能体》&#xff08;跟我一起学人工智能&#xff09;【陈敬雷编著】【清华大学出版社】 清华《GPT多模态大模型与AI Agent智能体》书籍配套视频课程【陈敬雷…

分享一个实用的B站工具箱(支持音视频下载等功能)

文章目录 📖 介绍 📖 🏡 演示环境 🏡 📒 一款实用的B站工具箱 📒 💥 项目亮点 💥 🛠️ 下载与安装 🚀 使用指南 📢 注意事项 ⚓️ 相关链接 ⚓️ 📖 介绍 📖 很多小伙伴在B站追番或者学习时,总会遇到一个很头疼的问题:想把视频下载到本地,要么被限…

大话 IOT 技术(4) -- 答疑篇

文章目录前言手机能与设备直接通信吗多协议能统一用一个吗假设我们统一用http协议假设我们统一用mqtt协议bypass服务端和设备不能mqtt直接通信设备必有wifi 和蓝牙功能设备为什么不能自己连接网络配网模式是什么后话当你迷茫的时候&#xff0c;请点击 物联网目录大纲 快速查看前…

机器视觉学习-day14-绘制图像轮廓

1. 轮廓的概念轮廓是目标物体或者区域在图像外部的边界线&#xff0c;通常由一系列像素点相连组成&#xff0c;这些像素点共同构成了一个封闭的形状&#xff0c;这样形状就是轮廓。轮廓与边缘不同&#xff1a;轮廓是连续的&#xff0c;边缘可以连续也可以离散轮廓是完整的&…

Linux shell getopts 解析命令行参数

Linux shell getopts 解析命令行参数getopts语法 getopts 选项字符串 名称 [ 参数 ...]示例1&#xff08;有前置冒号&#xff09;: while getopts ":hdo:" optname; do ...... done示例1&#xff08;无前置冒号&#xff09; while getopts "hdo:" optname…

DeepInteraction++基于多模态交互的自动驾驶感知与规划框架

DeepInteraction++基于多模态交互的自动驾驶感知与规划框架 1 论文核心概念 DeepInteraction++ 提出了一种名为"模态交互"(modality interaction)的新策略,用于自动驾驶中的多模态(LiDAR 和相机)感知任务。其核心思想是不将多模态信息融合为单一表示,而是分别…

忆联参与制定消费级SSD团体标准正式出版! 以“高可靠”引领行业提质增效与用户体验升级

引言​在AIPC爆发、数据价值凸显的当下&#xff0c;存储设备已超越简单容器&#xff0c;成为智能体验基石&#xff0c;其性能与可靠性直接关乎用户效率与资产安全。然而&#xff0c;消费级SSD长期缺乏统一权威的可靠性标准&#xff0c;使厂商缺乏质量对标依据&#xff0c;用户亦…

微服务搭建(SpringBoot + Dubbo + Nacos)

1.项目接口2. 编辑pom.xml和application.yml文件2.1父工程pom.xml<?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:s…

android中常见布局及其约束

0 布局的定义 布局可以理解为一种​​容器​​&#xff0c;用于​​组织与排列界面上的控件​​。 布局是一个相框&#xff0c;控件就是你要展示的照片。• 你&#xff08;布局规则&#xff09;决定这些照片怎么排列&#xff1a;是从上到下整齐放&#xff08;LinearLayout&am…

Rust语言能干什么

Rust 语言的应用范围非常广&#xff0c;几乎覆盖了现代软件开发的全部领域。它最初以“系统级语言”身份出道&#xff0c;但现在已经远远超出了这个范畴。下面我从几个关键方向给你梳理一下&#xff0c;Rust 到底能干什么&#xff0c;以及为什么在这些领域它特别有优势。 1. 系…

只需一个设置就可以解决Microsoft Edge浏览器打不开网页的问题

Microsoft Edge是一款功能强大的网络浏览器&#xff0c;预装在Windows 10、11系统中。通过这个简单易懂的教程&#xff0c;学习如何修复Microsoft Edge浏览器打不开的问题。1、打开计算机找到C盘&#xff0c;双击打开&#xff1a;2、打开【用户】➜【Admin】➜【AppData】➜【L…

AI 应用 图文 解说 (二) -- 百度智能云 ASR LIM TTS 语音AI助手源码

文章的目的为了记录AI应用学习的经历&#xff0c;降低AI的入门难度。同时记录开发流程和要点有些记忆模糊&#xff0c;防止忘记。也希望可以给看到文章的朋友带来一些收获。 相关链接&#xff1a; AI 应用 图文 解说 (一) -- 百度智能云 实现 语音 聊天-CSDN博客 AI 应用 图文 …

计算机Python毕业设计推荐:基于Django的博客网站设计与实现【python/大数据/深度学习/机器学习定制】

精彩专栏推荐订阅&#xff1a;在下方主页&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f496;&#x1f525;作者主页&#xff1a;计算机毕设木哥&#x1f525; &#x1f496; 文章目录 一、项目介绍二、…

当 AI 开始 “筛选” 信息:算法偏见会加剧认知鸿沟吗?如何构建公平的 AI 生态?

AI 筛选信息的现状与原理​在信息爆炸的时代&#xff0c;AI 筛选信息已成为各领域不可或缺的关键技术。在社交媒体平台上&#xff0c;如抖音、小红书等&#xff0c;AI 根据用户的点赞、评论、浏览历史等数据&#xff0c;精准推送用户可能感兴趣的内容&#xff0c;极大提升了用户…

2023年IEEE IOTJ SCI1区TOP,动态环境下无人机目标覆盖任务路径规划,深度解析+性能实测

目录1.摘要2.问题模型3.算法设计4.结果展示5.参考文献6.代码获取7.算法辅导应用定制读者交流1.摘要 无人机&#xff08;UAV&#xff09;作为物联网应用的重要工具&#xff0c;正广泛应用于智能农业监测、智能交通监测等领域&#xff0c;并逐渐成为国内外研究热点。然而&#x…

计算机视觉(四):二值化

二值化&#xff0c;就是将图像从彩色或灰度模式转换为只有两种颜色&#xff08;通常是黑色和白色&#xff09;的模式。这个过程的本质是设定一个阈值 (Threshold)&#xff0c;将图像中所有像素的灰度值与这个阈值进行比较。 基本原理 二值化的核心原理非常简单&#xff1a; 灰度…

(二)设计模式(Command)

文章目录项目地址一、设计模式1.1 Command Design1. 创建命令接口2. 创建支付的Command类3. CommandScheduler4. 使用1.2 Chain of Responsibility1. 接口创建2. 审批人3. 发起审批1.3 State Pattern1. 创建简单的状态机定义动作和状态状态机使用状态机1.x Iterator1.x Observe…

现代C++性能陷阱:std::function的成本、异常处理的真实开销

1. std::function 的成本 std::function 是一个通用的、类型擦除的函数包装器&#xff0c;它非常方便&#xff0c;可以存储和调用任何可调用对象&#xff08;函数、lambda、函数对象、bind表达式等&#xff09;。然而&#xff0c;这种灵活性是有代价的。 主要成本来源&#xff…