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单机

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

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

相关文章

【S32K UDS BootLoader】-1.1-Unified bootloader Demo和ECUBus工具的使用

<--返回「Autosar_MCAL高阶配置」专栏主页--> 目录 1 下载S32K1/S32K3/S12Z Unified bootloader Demo 1.1 在S32DS中编译S32K312_CAN_bootloader_RTD2d0工程并烧录 2 ECUBus工具使用 2.1 PCAN环境搭建 1.1.1 安装PCAN驱动 1.1.2 安装PCAN-View 2.2 下载并安装ECU…

C语言 | Leetcode C语言题解之第77题组合

题目&#xff1a; 题解&#xff1a; int** combine(int n, int k, int* returnSize, int** returnColumnSizes) {int* temp malloc(sizeof(int) * (k 1));int tempSize 0;int** ans malloc(sizeof(int*) * 200001);int ansSize 0;// 初始化// 将 temp 中 [0, k - 1] 每个…

回答篇:测试开发高频面试题目

引用之前文章&#xff1a;《测试开发高频面试题目》 https://blog.csdn.net/qq_41214208/article/details/138193469?spm1001.2014.3001.5502 本篇文章是回答篇&#xff08;持续更新中&#xff09; 1. 什么是测试开发以及其在软件开发流程中的作用。 a. 测试开发是指测试人员或…

关于Anaconda常用的命令

常用命令 查看当前环境下的环境&#xff1a;conda env list查看当前conda的版本&#xff1b;conda --version conda create -n your_env_name pythonX.X&#xff08;2.7、3.6等)命令创建python版本为X.X。名字为your_env_name的虚拟环境。your_env_name文件可以在Anaconda安装…

收银系统源码--什么是千呼智慧新零售系统?

千呼智慧新零售系统是一套针对零售行业线上线下一体化收银系统。给门店提供线下称重收银、o2o线上商城、erp进销存、精细化会员管理、丰富营销插件等一体化解决方案。多端数据打通&#xff0c;实现线上线下一体化&#xff0c;提升门店工作效率&#xff0c;实现数字化升级&#…

前端项目加载离线的百度地图,利用工具进行切指定区域的地图影像,自定义图层getTilesUrl

百度地图在开发中我们经常使用&#xff0c;但是有些项目是需要在内网进行&#xff0c;这时候我们不得不考虑项目中一些功能需要请求外网静态资源&#xff0c;比如百度地图。只有把包下载到本地&#xff0c;才能让静态资源文件的正常的访问。 目录 获取百度地图开发秘钥 引入在…

Java | Leetcode Java题解之第78题子集

题目&#xff1a; 题解&#xff1a; class Solution {List<Integer> t new ArrayList<Integer>();List<List<Integer>> ans new ArrayList<List<Integer>>();public List<List<Integer>> subsets(int[] nums) {dfs(0, nums…

牛客网刷题 | BC81 KiKi求质数个数

目前主要分为三个专栏&#xff0c;后续还会添加&#xff1a; 专栏如下&#xff1a; C语言刷题解析 C语言系列文章 我的成长经历 感谢阅读&#xff01; 初来乍到&#xff0c;如有错误请指出&#xff0c;感谢&#xff01; 描述 KiKi知道了什么是质…

【离散数学】集合上二元关系性质判定的实现(c语言实现)

实验要求 关系矩阵的初始化和打印 我们将关系矩阵存入一个二维数组中&#xff0c;因为集合元素个数不会超过5个所以就用一个5行5列二维数组来表示。 在我们得到了集合元素个数之后我们就可以对数组进行0,1随机赋值 //初始关系矩阵 void init_matrix(int array[][5], int n) {…

多核DSP并行计算跨平台通信解决方案

并行计算的核心是计算节点以及节点间的通信与协调机制。OpenMP虽然给开发者提供了极易上手的增量式开发方式&#xff0c;但是OpenMP在与复杂架构的MCSDK结合后&#xff0c;工具与代码产生了大量不可调试的黑盒子&#xff0c;更是决定了它不能用于关键任务领域&#xff0c;如军工…

算法学习Day2——单调栈习题

第一题&#xff0c;合并球 题解&#xff1a;一开始写了一次暴力双循环&#xff0c;直接O(n^2)严重超时&#xff0c;后面于是又想到了O(n)时间复杂度的链表&#xff0c;但是还是卡在 最后一个数据会TLE&#xff0c;我也是高兴的拍起来安塞腰鼓和华氏护肤水&#xff0c;后面学长给…

基于模糊控制的AMT自动变速汽车换档智能控制系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于模糊控制的AMT自动变速汽车换档智能控制系统simulink建模与仿真。 2.系统仿真结果 输入的V&#xff0c;Ac&#xff0c;a 输出的档位&#xff1a; 3.核心程序与模型 版…

【C语言】static关键字用法

目录 一、static修饰局部变量 二、static修饰全局变量 三、static修饰函数 一、static修饰局部变量 首先我们来看两段代码: 代码1&#xff08;不加static&#xff09; #include <stdio.h> void test() {int i 0;i;printf("%d ", i); } int main() {int i…

VMvare如何更改虚拟机内共享文件夹的挂载点

更改虚拟机内共享文件夹的路径 进入目录 /etc/init.d ,并找到vmware-tools文件 里面有配置项 vmhgfs_mnt"/mnt/hgfs" 将引号内的内容更改为你需要挂载的路径,重启即可 注意挂载的路径不能是 “/”&#xff0c;必须根目录下的某个文件夹&#xff0c;或者其子文件夹 …

使用Docker安装Yapi接口管理工具

简介&#xff1a; YAPI 是由去哪儿网移动架构组开发的一款可视化接口管理工具。它具有可视化管理、高效易用、功能强大等特点。它提供了便捷的接口创建、发布和维护方式&#xff0c;开发人员可以通过简单的操作实现接口管理。 YAPI 还支持类似 postman 的接口调试&#xff0c;对…

GPU通用计算介绍

谈到 GPU &#xff08;Graphics Processing Unit&#xff0c;图形显示卡&#xff09;大多数人想到的是游戏、图形渲染等这些词汇&#xff0c;图形处理确实是 GPU 的一大应用场景。然而人们也早已关注到它在通用计算上的巨大潜力&#xff0c;并提出了 GPGPU (General-purpose co…

Android进阶之路 - 静态会员进度条

年后这个新版本加入了VIP模块&#xff0c;有幸正好由我来负责&#xff0c;可以再积累一下这方面的知识。 那段时间看了一本书&#xff0c;书中说到初级码农的特性之一就是完全集中于某些功能&#xff0c;忽略了了很多成长机会&#xff0c;所以重复性劳作带来的成长值有限&#…

ETL工具中JSON格式的转换方式

JSON的用处 JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;其设计初衷是为了提升网络应用中数据的传输效率及简化数据结构的解析过程。自其诞生以来&#xff0c;JSON 已成为Web开发乃至众多软件开发领域中不可或缺的一部分&a…

神经网络案例实战

&#x1f50e;我们通过一个案例详细使用PyTorch实战 &#xff0c;案例背景&#xff1a;你创办了一家手机公司&#xff0c;不知道如何估算手机产品的价格。为了解决这个问题&#xff0c;收集了多家公司的手机销售数据&#xff1a;这些数据维度可以包括RAM、存储容量、屏幕尺寸、…

# 光标变为下划线怎么办?

光标变为下划线怎么办&#xff1f; 光标变为下划线通常表示您处于覆盖模式。在这种模式下&#xff0c;您键入的任何内容都将覆盖光标位置处的文本。如果想要恢复光标为正常显示&#xff0c;您可以尝试以下方法&#xff1a; 1、在桌面或文档编辑界面&#xff0c;按键盘上的 【I…