ES集群数据备份与迁移

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、文章涉及概念讲解
  • 二、操作步骤
    • 1.创建 snapshot repository
      • 操作主机hadoop1
      • 分别操作从机hadoop2和hadoop3
    • 2. 查看仓库信息
    • 3. 备份索引,生成快照
    • 4. 数据迁移
  • 总结


前言

言简意赅,本篇文章解决的问题是:当一个es集群中有数据,需要将数据迁移到另外一个es集群,或者是需要将es中的数据备份。(理论上单机es也可以实现功能,且可能不会有文章涉及的报错信息)


一、文章涉及概念讲解

1. snapshot:使用 Elasticsearch 提供的 snapshot 功能,将数据快照保存到本地或者远程存储库中。
2. snapshot repository:,指定要备份的数据在哪里存储。
3. restore:使用 Elasticsearch 提供的 restore 功能,将备份的数据恢复到新的Elasticsearch集群中。

二、操作步骤

前置条件: es集群能够正常启动;kibana也能够正常运行,能够在5601端口访问kibana提供的客户端。

1.创建 snapshot repository

# 创建仓库
PUT /_snapshot/my_backup
{
  "type": "fs",
  "settings": {
    "compress" : "true",
    "location": "/opt/soft/kibana-7.3.1/backup"
  }
}

需要注意的是,这里的location需要配置在es的配置文件中,也就是elasticsearch.yml中。(对于es集群的架构,则每个es服务上,都要添加此配置)
在这里插入图片描述
配置仓库地址:数组的形式,可以配置多个地址。
在这里插入图片描述
配置成功后,需要重新启动es集群。


此时,重新执行创建仓库的代码,可能仍然会报错:(单机es可能不会报错)
repository_verification_exception:is not shared between this node and the master node or that permissions on the store don’t allow reading files written by the master node

{“error”:{“root_cause”:[{“type”:“repository_verification_exception”,“reason”:"[my_backup] [[mu3vPb-eTBeom4ElNsSeoQ, ‘RemoteTransportException[[node-1][10.10.77.100:9300][internal:admin/repository/verify]]; nested: RepositoryVerificationException[[my_backup] a file written by master to the store [/home/es/elasticsearch-5.1.1/data/bak] cannot be accessed on the node [{node-1}{mu3vPb-eTBeom4ElNsSeoQ}{gCm1zrtWT12WzrjFiVDGrQ}{10.10.77.100}{10.10.77.100:9300}]. This might indicate that the store [/home/es/elasticsearch-5.1.1/data/bak] is not shared between this node and the master node or that permissions on the store don’t allow reading files written by the master node];],...

先介绍一下我目前的架构,es集群是一主二从,分别是hadoop1、hadoop2、hadoop3,其中hadoop1是主机,因此,kibana只部署在hadoop1的主机上。首先发请求创建仓库的文件夹是必须存在的,且三台主机上都需要存在这个目录。
也就是:
在这里插入图片描述
在这里插入图片描述
然后就重点来分析一下这个问题,由于es和kibana是不支持root用户启动服务的,因此往往我们会创建一个新用户,并赋予这个用户es和kibana目录下的操作权限,由这个用户来管理es和kibana服务(这里创建了名为“es”的普通用户)。由于创建仓库涉及三台机器上的backup目录文件修改,因此,我认为问题可能在于es无法免密登录其它两台从机,并没有权限修改其它两台机器上的backup目录。(当然root用户是可以实现免密登录的)

因此,解决方法可以从多个方面考虑,例如:1. 配置使用root用户启动es和kibana的服务… 2. 配置es用户免密登录,并赋予修改文件权限

以上的方法是否可行,暂无去亲自实践。本次解决问题的方法是:使用nfs服务器,实现三台机器的backup文件内容共享。

操作主机hadoop1

a. 安装 NFS 服务器所需的软件包

yum install -y nfs-utils

b. 编辑exports文件,添加从机挂载目录以及地址信息

vim /etc/exports

在这里插入图片描述
rw表示可读写;sync表示同步写

c. 启动nfs服务

#rpcbind做开机启动
systemctl enable rpcbind.service
#启动rpcbind服务
systemctl start rpcbind.service
systemctl enable nfs-server.service
systemctl start nfs-server.service

d. 确认NFS服务器启动成功

rpcinfo -p | grep nfs

在这里插入图片描述
e. 检查 NFS 服务器是否挂载我们想共享的目录

exportfs

在这里插入图片描述

分别操作从机hadoop2和hadoop3

a. 首先是安裝nfs,同上

yum install -y nfs-utils

b. 启动rpcbind服务 (客户端不需要启动nfs服务)

#rpcbind做开机启动
systemctl enable rpcbind.service
#启动rpcbind服务
systemctl start rpcbind.service

c. 从机上使用 mount 挂载服务器端的目录(首先得在从机上创建目录,如果不存在的话)

# 在hadoop2和hadoop3上分别执行(其中192.168.220.200为hadoop1的ip)
mount -t nfs 192.168.220.200:/opt/soft/kibana-7.3.1/backup /opt/soft/kibana-7.3.1/backup

d. 查看挂载情况

df -h

在这里插入图片描述
现在应该就可以重新执行创建仓库的代码了:
在这里插入图片描述

2. 查看仓库信息

GET /_snapshot?pretty

在这里插入图片描述

3. 备份索引,生成快照

# my_backup:仓库名称;snapshot_1:快照名称
PUT /_snapshot/my_backup/snapshot_1

在这里插入图片描述
查看备份数据

GET /_snapshot/my_backup/snapshot_1

在这里插入图片描述

生成快照后,备份文件夹里就可以查看到对应的信息了:
在这里插入图片描述
其中,index-0 存放了快照的基本信息,meta-xxx.dat 以及snap-xxx.dat 应该就是实际存放的数据。

4. 数据迁移

迁入地集群也需要配置elasticsearch.yml文件,增加path.repo的配置。目标ES集群中也需要创建repository。

将备份文件复制到新的Elasticsearch集群中的同一个位置。

在新的es集群创建一个相同的 snapshot repository,用于存储恢复的数据。

数据恢复

# 数据拷贝后,目标主机执行
# 恢复备份的数据到新的Elasticsearch集群中。
# indices 指定恢复索引的名称
POST /_snapshot/my_backup/snapshot_1/_restore
{
  "indices": [        
        "log",
        "file",
        "exception",
        ".tasks",
        ".kibana_task_manager"],
  "ignore_unavailable": true,
  "include_global_state": false,
  "rename_pattern": "index_(.+)",
  "rename_replacement": "restored_index_$1"
}

以上就是将一个es集群的数据迁移到另一个es集群的步骤。注意,在进行数据迁移前,需要确保es的版本一致,否则可能会导致索引不兼容或者其他问题。


相关DSL

# 创建仓库
PUT /_snapshot/my_backup
{
  "type": "fs",
  "settings": {
    "compress" : "true",
    "location": "/opt/soft/kibana-7.3.1/backup"
  }
}

# 查看仓库信息(ok)
GET /_snapshot?pretty

# 备份索引,生成快照(ok)
PUT /_snapshot/my_backup/snapshot_2

# 查看备份快照数据(ok)
GET /_snapshot/my_backup/snapshot_1

# ---

# 创建一个 snapshot,将索引数据备份到指定的存储库中。
PUT /_snapshot/my_backup/snapshot_3?wait_for_completion=true

# 恢复所有索引
POST /_snapshot/my_backup/snapshot_1/_restore?wait_for_completion=true

# 恢复备份的数据到新的Elasticsearch集群中。
# indices 指定恢复索引的名称
POST /_snapshot/my_backup/snapshot_/_restore
{
  "indices": [        
        "log",
        "file",
        "exception",
        ".tasks",
        ".kibana_task_manager"],
  "ignore_unavailable": true,
  "include_global_state": false,
  "rename_pattern": "index_(.+)",
  "rename_replacement": "restored_index_$1"
}

# ---
# 查看所有索引
GET _cat/indices?v&pretty

# 删除所有索引
DELETE /_all
DELETE /.kibana
DELETE /file

总结

本篇文章仅供学习和参考,如有涉及侵权,请及时联系笔者!

参考文章:

  1. elasticsearch的数据迁移
  2. es单机数据迁移到另一个es单机

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

电商中文场景多模态测试prompt

魔搭社区汇聚各领域最先进的机器学习模型,提供模型探索体验、推理、训练、部署和应用的一站式服务。https://www.modelscope.cn/datasets 多模态大模型Yi-VL-plus体验 效果很棒 - 知乎最近测了一下零一万物的多模态大模型Yi-VL-plus的效果,发现多模态理解…

【hive】transform脚本

文档地址:https://cwiki.apache.org/confluence/display/Hive/LanguageManualTransform 一、介绍二、实现1.脚本上传到本地2.脚本上传到hdfs 三、几个需要注意的点1.脚本名不要写全路径2.using后面语句中,带不带"python"的问题3.py脚本Shebang…

Nginx(搭建高可用集群)

文章目录 1.基本介绍1.在微服务架构中的位置2.配置前提3.主从模式架构图 2.启动主Nginx和两个Tomcat1.启动linux的tomcat2.启动win的tomcat3.启动主Nginx,进入安装目录 ./sbin/nginx -c nginx.conf4.windows访问 http://look.sunxiansheng.cn:7777/search/cal.jsp 3…

基于 Dockerfile 部署nginx服务(实现HTTPS功能)

目录 前言 1、任务要求 2、建立工作目录并上传nginx安装包 3、创建自签名证书 4、创建 nginx Dockerfile 文件 5、准备并编写 nginx.conf 配置文件 6、准备nginx页面文件 7、工作目录文件结构 8、生成镜像 8、启动容器并开启宿主机端口映射 9、浏览器测试 前言 Ngi…

DS:顺序表、单链表的相关OJ题训练(1)

欢迎各位来到 Harper.Lee 的学习小世界! 博主主页传送门:Harper.Lee的博客主页 想要一起进步的uu可以来后台找我交流哦! 在DS:单链表的实现 和 DS:顺序表的实现这两篇文章中,我详细介绍了顺序表和单链表的…

CMakeLists.txt语法规则:foreach 循环基本用法

一. 简介 cmake 中除了 if 条件判断之外,还支持循环语句,包括 foreach()循环、while()循环。 本文学习 CMakeLists.txt语法中的循环语句。 CMakeLists.txt语法中 有两种 循环实现方式:foreach循环与 while循环。 二. CMakeLists.txt语法规则…

tomcat+maven+java+mysql图书管理系统1-配置项目环境

目录 一、软件版本 二、具体步骤 一、软件版本 idea2022.2.1 maven是idea自带不用另外下载 tomcat8.5.99 Javajdk17 二、具体步骤 1.新建项目 稍等一会,创建成功如下图所示,主要看左方目录相同不。 给maven配置国外镜像 在左上…

asp.net朱勇项目个人博客(3)

引文:按照书上的项目,我们最后实现管理端的三个增删改查的功能即可,相对与三个增删改查,文章,分类和留言,这里我们所需要用的的关联的一个表就是文章表,因为文章表每一个文章的增加显示和修改都需要对应的一个分类&…

Spring入门及注解开发

1 引言 自定义注解可以用来为代码添加元数据信息,简化配置,提高代码的可读性和可维护性。通过自定义注解,可以实现自定义的业务逻辑、约束条件、配置参数等功能。在Spring中,自定义注解常用于标记组件、配置依赖注入、AOP切面等。 自定义注解可以添加元数据信息,低代码框…

银行智能化数据安全分类分级实践分享

文章目录 前言一、数据安全智能分类分级平台建设背景二、数据安全分类分级建设思路和实践1、做标签– 数据安全标签体系2、打标签– 鹰眼智能打标平台 3.03、用标签– 全行统一“数据安全打标签结果”服务提供前言 随着国家对数据安全的高度重视,以及相关法律法规的出台,数据…

【linuxC语言】stat函数

文章目录 前言一、stat函数二、示例代码总结 前言 在Linux系统编程中,stat() 函数是一个非常重要的工具,用于获取文件的元数据信息。无论是在系统管理、文件处理还是应用开发中,都可能会用到 stat() 函数。通过调用 stat() 函数,…

ue引擎游戏开发笔记(31)——对角色移动进行优化:角色滑步处理

1.需求分析: 角色的移动与动画不匹配,角色移动起来像是在滑行。。。适当进行优化。 2.操作实现: 这个问题本质是角色的运动速度并没有匹配世界动画的运行速度,不论世界动画快慢于角色移动速度,都会感到有滑步感。所以…

基于 Spring Boot 博客系统开发(六)

基于 Spring Boot 博客系统开发(六) 本系统是简易的个人博客系统开发,为了更加熟练地掌握 SprIng Boot 框架及相关技术的使用。🌿🌿🌿 基于 Spring Boot 博客系统开发(五)&#x1f…

适合打工人的赚钱软件有哪些?盘点5个实用的赚钱软件(真实靠谱)

在这个互联网时代,手机不仅仅是我们的通讯工具,更是我们赚钱的小助手。今天,就让我带你一探究竟,揭秘那些真实靠谱的赚钱软件,让你在家也能轻松赚钱! 一、抖音极速版:刷视频也能赚钱 抖音极速版…

Flutter笔记:Widgets Easier组件库(11)- 使用提示吐丝

Flutter笔记 Widgets Easier组件库(11)使用提示吐丝 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this …

【前端学习——网络相关】浏览器同源策略和跨域

浏览器的同源策略 为什么要有? 帮助阻隔恶意文档,减少可能被攻击的媒介。(就是为了安全) 如果非同源,共有三种行为受到限制 (1) Cookie、LocalStorage 和 IndexDB 无法读取。 (2…

央视影音 视频下载 2

浏览器猫抓插件,拿到视频地址,这个地址的播放不正常,花屏。https://dh5.cntv.qcloudcdn.com/asp/h5e/hls/2000/0303000a/3/default/6edd15a0ebb3467993bec51a95be0e22/2000.m3u8 改一下地址,把代码中的h5e去掉。网址改为https://…

解决MySQL进行group by 字段返回大量异常结果

目录 问题 原因 解决方案 问题 看这条sql CH2O这个字段的取值只有1,2,3,正常进行group by 分类累加统计返回结果应该是这样: [{"CH2O": 2.0,"insufficient_weight": 142,"Normal_Weight": 164…

锁相环原理解析

在计算机和嵌入式系统中,常常要用锁相环来倍频,那么,锁相环是如何倍频的,其原理又是什么呢? 目录 1. 锁相环基本概念与构成1.1 鉴相器1.2 低通滤波器1.3 压控振荡器 2. 锁相环如何实现倍频3. 锁相环也会失效&#xff…

基于springboot+vue+Mysql的租房网站

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…