橘子学ES实战操作01之集群模式如何实现快照备份

news2025/1/20 5:50:21

我们知道ES中通过副本在一定意义上实现了数据的备份和高可用。但是我们说万一副本数据丢失了,不小心被rm -f了,你就说逆天不逆天吧,此时要实现数据真正意义上的备份就要使用到快照机制,来把数据持久化备份起来,万一数据被删了,也能及时恢复。
而单节点的操作直接看官网操作即可。这里就不演示了。或者我后面再补充,实际开发我们一般都是集群模式,官网地址如下:

https://www.elastic.co/guide/en/elasticsearch/reference/7.17/snapshot-restore.html

集群模式略有不同,不同在于存储仓库必须是分布式的文件存储,不能在每个节点的本地配置,因为他要做分布式的备份和恢复读取。你要是像单节点那样本地配置会报错。

我们这里来操作一下集群模式下的快照备份。而且我这个是在离线环境下的操作,实际上和有网络也大差不差,主要是一个数据包的安装区别,你要是有网络直接安装就行,我这里需要拷贝一个数据包。

一、环境配置

1. 集群模式
2. 有的机器是多节点,有的机器是单节点。这样更加具有普遍性。
	机器1:node1 node2
	机器2:node3
3. 文件服务器,minio,配置信息如下
	endPoint: http://192.168.1.1
	port: 9000
	accessKey: accessKey123
	accessSecret: accessSecret123

二、准备材料

离线环境需要下载离线的S3插件包,用于连接s3文件服务器。和自己的ES下载版本一致的最好。我是7.17.7的。
S3插件包地址:https://artifacts.elastic.co/downloads/elasticsearch-plugins/repository-s3/repositorys3-7.17.7.zip,你要是有网络直接Install安装即可。
在minio中建立一个专用快照文件的bucket,我创建为leviBucket。

三、操作步骤

# 1、拷贝s3插件包到指定位置(我这里为/opt/elastic/version7/)

# 2、在离线环境安装s3插件包,进入到每个ES节点的bin下面,使用elasticsearch-plugin命令安装repository-s3插件,将命令中的<plugin•zip>替换为插件压缩包的路径和文件名:
	bin/elasticsearch-plugin install file:///path/to/plugin-zip运行该命令后,Elasticsearch将解压缩并安装插件。一路yes即可。
	比如我的目录对应的命令就是./bin/elasticsearch-plugin install  file:///opt/elastic/version7/repository-s3-7.17.7.zip。
	注意这一步需要再每个es节点都执行,不然对应的node节点起不来。
	
# 3、 设置elasticsearch.keystore
	为每一个ES节点配置文件服务器的连接信息,授权。我的文件服务器为minio,所以进入ES的bin目录,执行以下两句命令。
	bin/elasticsearch-keystore add s3.client.default.access_key
	执行之后再输入命令位置,输入minio的access_key也就是accessKey123
	bin/elasticsearch-keystore add s3.client.default.secret_key
	执行之后再输入命令位置,输入minio的minio的secret_key也就是accessSecret123
# 4、修改ES每一个节点的配置文件elasticsearch.yml,配置s3文件服务器的位置端点,在每个elasticsearch.yml最后添加
	s3.client.default.endpoint: minio ip:端口
	s3.client.default.protocol: http
	对应到我的环境就是
	s3.client.default.endpoint: 192.168.1.1:9000
	s3.client.default.protocol: http
# 5、配置完毕重启每个ES节点

四、配置快照

启动之后,连接kibana,首先创建快照仓库,也就是你的快照最后存储在哪里,ES允许以仓库分隔。以下操作都在kibana以DSL命令的方式进行操作。

1、创建快照仓库

这个仓库是在ES层面的仓库,来实际关联minio的。

PUT _snapshot/minio_s3_repository
{
	"type": "s3",
	"settings": {
	"bucket": "leviBucket"
	}
}

这里面的type类型就是s3,bucket就是我创建在monio用来存储我们快照文件的桶,这样就会把以后的快照放到这个桶位置下。
该命令即为创建仓库,其中_snapshot为es的api,minio_s3_repository为我创建的仓库名。
type类型指定为s3文件服务。
bucket:leviBucket即为我的快照文件在minio中存储的bucket。

2、创建快照生成策略

2.1、进入kibana操作台

在这里插入图片描述

2.2、选择快照配置位置查看仓库是否创建成功

在这里插入图片描述

2.3、查看仓库,看到我们创建的仓库确实存在

这是我们刚才DSL创建的仓库。
在这里插入图片描述

2.4、创建策略

策略是快照策略,就是规定你的快照是怎么生成的,什么名字规则,什么生成时间间隔之类的。

1、进入策略位置。

在这里插入图片描述

2、create_policy创建快照

在这里插入图片描述
下面没有用红框写的分别是选中你的仓库和生成快照的定时任务。
选中仓库是表示你这个快照是在哪个仓库存储,定时任务表示多久执行一次创建快照。

3、然后进入下一步

在这里插入图片描述
我们定义这个快照是为了flinght1和flight2做的,你也可以指定更多,或者用正则表达式更加方便。比如创建为levi*这样就是所有以levi开头的索引名字都能创建。
最后一路next就创建成功了。最后成功的就会在策略栏目下列出来。
在这里插入图片描述

3、测试快照策略

我们创建了flights1和flights2索引,并且写入数据。
在这里插入图片描述
此时数据被写入,我们去手动触发一次快照生成。等不及定时任务了,你也可以等定时任务来触发创建。
在这里插入图片描述
此时数据被持久化到minio中,完成备份。此时删除这两个索引。然后再次查询,无法查到数据,ES中已经没了数据,此时就是数据丢失了。这种删除副本数据也没了,那是真的丢了。
在这里插入图片描述

4、恢复数据

此时数据丢失,我们就使用刚才手动生成的快照来恢复数据。

# _snapshot为API
# minio_s3_repository为你的仓库
# t_pool_new-2023.11.18-4moglopcrkc5-wbf3dpkxa为你使用的快照,使用最新一个即可。
# _restore为恢复API
# wait_for_completion=true同步等待
# "indices": "flights1,flights2",指定恢复的索引
# 其余参数默认即可
POST /_snapshot/minio_s3_repository/t_pool_new-2023.11.18-8eb5f2ntspayw64cpnebw/_restore?wait_for_completion=true
{
	"indices": "flights1,flights2",
	"ignore_unavailable": true,
	"include_global_state": false,
	"include_aliases": false
}

此时就恢复了数据,再次检索即可。注意快照生成也是耗费IO和CPU资源的,如果能尽量保证集群稳定,快照生成时间间隔不要太频繁.
而且我们也看到,快照是依赖定时任务去触发的,也就是说在下次定时任务执行期间如果数据丢失,这个数据是不能被恢复的。因为还没生成快照备份。所以快照也是有一定的风险的。我们尽量不要随意的去执行删除操作,需要严格审核操作。

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

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

相关文章

CAD-autolisp(三)——文件、对话框

目录 一、文件操作1.1 写文件1.2 读文件 二、对话框DCL2.1 初识对话框2.2 常用对话框界面2.2.1 复选框、列表框2.2.2 下拉框2.2.3 文字输入框、单选点框 2.3 Lisp对dcl的驱动2.4 对话框按钮实现拾取2.5 对话框加载图片2.5.1 幻灯片图片制作2.5.1 代码部分 一、文件操作 1.1 写…

TCP 三次握手 四次挥手以及滑动窗口

TCP 三次握手 简介&#xff1a; TCP 是一种面向连接的单播协议&#xff0c;在发送数据前&#xff0c;通信双方必须在彼此间建立一条连接。所谓的 “ 连接” &#xff0c;其实是客户端和服务器的内存里保存的一份关于对方的信息&#xff0c;如 IP 地址、端口号等。 TCP 可以…

CDSP认证:引领数据安全领域的权威之巅!

随着数据安全法和个人信息保护的施行&#xff0c;数据安全领域越来越受到重视。市场上涌现出众多数据安全相关的证书&#xff0c;而数据安全相关职位也成为了2023年最热门的职业之一。 &#x1f4a1;对于想要入门数据安全领域的小伙伴&#xff0c;我强烈推荐CDSP认证&#xff0…

【笔试常见编程题02】字符串中找出连续最长的数字串、数组中出现次数超过一半的数字、计算糖果、进制转换

1. 字符串中找出连续最长的数字串 读入一个字符串str&#xff0c;输出字符串str中的连续最长的数字串 输入描述 个测试输入包含1个测试用例&#xff0c;一个字符串str&#xff0c;长度不超过255。 输出描述 在一行内输出str中里连续最长的数字串。 示例 1 输入 abcd12345ed125s…

【前端】尚硅谷Node.js零基础视频教程笔记

文章目录 1.基础1.1. 基础命令1.2. 注意事项 2. Buffer&#xff08;缓冲器&#xff09;介绍与创建2.1 概念2.2 特点2.3 使用 3. fs模块(file system)3.1 文件写入3.2 文件读取 【前端目录贴】 参考视频: 尚硅谷Node.js零基础视频教程&#xff0c;nodejs新手到高手 1.基础 1.1.…

【MATLAB第92期】基于MATLAB的集成聚合多输入单输出回归预测方法(LSBoost、Bag)含自动优化超参数和特征敏感性分析功能

【MATLAB第92期】基于MATLAB的集成聚合多输入单输出回归预测方法&#xff08;LSBoost、Bag&#xff09;含自动优化超参数和特征敏感性分析功能 本文展示多种非常用多输入单输出回归预测模型效果。 注&#xff1a;每次运行数据训练集测试集为随机&#xff0c;故对比不严谨&…

搜维尔科技:【简报】元宇宙数字人赛道,《救食有道》!

在这个快速发展的数位时代里&#xff0c;本组相信透过制作融合虚拟人物 与 AI 智慧的创新宣传影片&#xff0c;定能为食物银行提高曝光率并让更多人 投身参与并落实减少食物浪费的行动&#xff0c;并与本组共同在生活中宣传食 物银行的理念 学校&#xff1a; 桃园市立中场商业高…

BTC的数据结构Merkle Tree和Hash pointer

比特币是一种基于区块链技术的加密数字货币&#xff0c;其底层数据结构被设计为分布式&#xff0c;去中心化的。它的核心数据结构是一个链式的区块&#xff0c;每个区块都包含了多笔交易记录和一个散列值。 比特币的底层数据结构使用了两个关键概念&#xff1a;hash pointer和…

【计算机网络】IP协议及动态路由算法

对应代码包传送门 IP协议及动态路由算法代码包及思科模拟器资料说明 相关文章 【计算机网络】中小型校园网构建与配置 【计算机网络】Socket通信编程与传输协议分析 【计算机网络】网络应用通信基本原理 目的&#xff1a; 1、掌握IP协议&#xff0c;IP分片&#xff0c;DH…

JCEF学习

JCEF重要概念 CEF CEF&#xff0c;全称Chromium Embedded Framework &#xff0c;它是基于Google Chromium的开源项目&#xff0c;它的目标是能够向第三方程序添加WEB浏览器功能&#xff0c;以及可以使用HTML、CSS和JS渲染界面。 CEF框架是由Marshall Greenblatt 在 2008 年创…

vue项目如何实现运行完项目就跳转到浏览器

在package.json中的启动命令中添加--open参数可以实现在Vue项目编译后自动打开浏览器的功能。 通过这样的设置&#xff0c;在运行npm run dev时&#xff0c;Vue项目编译完成后会自动打开默认浏览器并加载应用程序。

【问题解决】java-word转pdf踩坑

问题情境&#xff1a; 项目中采用word转pdf&#xff0c;最开始使用的pdf相关的apache的pdfbox和itextpdf&#xff0c;后面发现对于有图片背景的word转pdf的情景&#xff0c;word中的背景图会直接占用位置&#xff0c;导致正文不会正确落在背景图上。 解决方案&#xff1a; 采…

计算机网络——虚拟局域网+交换机基本配置实验

1.实验题目 虚拟局域网交换机基本配置实验 2.实验目的 1.了解交换机的作用 2.熟悉交换机的基本配置方法 3.熟悉Packet Tracer 7.0交换机模拟软件的使用 4.掌握在交换机上划分局域网&#xff0c;并且使用局域网与端口连接&#xff0c;检测信号传输 3.实验任务 1.了解交换…

C 变量

目录 1. C变量 2. C变量定义 2.1 变量初始化 2.2 C中的变量声明 3. C中的左值&#xff08;Lvalues&#xff09;和右值&#xff08;Rvalues&#xff09; 1. C变量 在C语言中&#xff0c;变量可以根据其类型分为以下几种基本类型&#xff1a; 整型变量&#xff1a;用…

蓝桥小白赛4 乘飞机 抽屉原理 枚举

&#x1f468;‍&#x1f3eb; 乘飞机 &#x1f437; 抽屉原理 import java.util.Scanner;public class Main {static int N 100010;static int[] a new int[N];public static void main(String[] args){Scanner sc new Scanner(System.in);int n sc.nextInt();int q s…

(南京观海微电子)——OLED驱动与调试

一、OLED DDIC分类 OLED DDIC的技术方向可以分为3类&#xff1a;带Ram【内存】的IC、Ram-less IC和TDDI【显示&触控集成的IC】 1、带Ram的OLED DDIC OLED DDIC有两个Ram&#xff0c;分别是Demura Ram和Display Ram。 1、带Ram的OLED DDIC 1-1&#xff09;Demura Ram&a…

取消Vscode在输入符号时自动补全

取消Vscode在输入符号时自动补全 取消Vscode在输入符号时自动补全问题演示解决方法 取消Vscode在输入符号时自动补全 问题演示 在此状态下输入/会直接自动补全, 如下图 笔者想要达到的效果为可以正常输入/而不进行补全, 如下图 解决方法 在设置->文本编辑器->建议, 取消…

C语言第十一弹---函数(下)

​ ✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】 函数 1、嵌套调用和链式访问 1.1、嵌套调用 1.2、链式访问 2、函数的声明和定义 2.1、单个文件 2.2、多个文件 2.3、static 和 extern 2.3.1、static…

STM32+ESP8266 实现物联网设备节点

目录 一、硬件准备 二、编译环境 三、源代码地址 四、说明 五、测试方法 六、所有测试工具和文档 本项目使用stm32F103ZEesp8266实现一个物联网的通信节点&#xff0c;目前支持的协议有mqtt&#xff0c;tcp。后续会持续更新&#xff0c;增加JSON&#xff0c;传感器&#…

MySQL 聚集与非聚集索引

文章目录 1.聚集索引1.1 介绍1.2 优点1.3 缺点 2.非聚集索引3.区别参考文献 MySQL 中&#xff0c;根据索引树叶结点存放数据行还是数据行的地址&#xff0c;可以将索引分为两类&#xff1a; 存放数据行&#xff1a;聚集索引存放数据行地址&#xff1a;非聚集索引 InnoDB 使用聚…