ES 快照到 S3 并从 Windows 共享目录恢复(qbit)

news2025/1/9 17:14:05

前言

  • 业务需要将 Elasticsearch 快照到 AWS S3,再将快照拷贝到 Windows 系统,并恢复到 Elasticsearch。如下图所示:

    image.png

  • 环境

    Elasticsearch 7.10.1
    Windows Server 2019
    Ubuntu 20.04 (ES 宿主)

ES 集群1 安装 S3 插件

  • 官方文档: https://www.elastic.co/guide/...
  • 应在 ES 集群的所有节点上安装插件
  • 下载 S3 插件和 SHA hash,并上传到 ES 服务器
  • 查看并校验

    # ll -ah
    total 4.6M
    drwxr-xr-x 2 qhy qhy 4.0K Mar  9 01:55 ./
    drwxr-xr-x 7 qhy qhy 4.0K Mar  9 01:50 ../
    -rw-rw-r-- 1 qhy qhy 4.6M Mar  9 01:55 repository-s3-7.10.1.zip
    -rw-rw-r-- 1 qhy qhy  154 Mar  9 01:55 repository-s3-7.10.1.zip.sha512
    
    # shasum -a 512 -c repository-s3-7.10.1.zip.sha512 
    repository-s3-7.10.1.zip: OK
  • 安装

    # /usr/share/elasticsearch/bin/elasticsearch-plugin install file:///home/qhy/es_down/repository-s3-7.10.1.zip
    -> Installing file:///home/qhy/es_down/repository-s3-7.10.1.zip
    -> Downloading file:///home/qhy/es_down/repository-s3-7.10.1.zip
    [=================================================] 100%   
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    @     WARNING: plugin requires additional permissions     @
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    java.lang.RuntimePermission accessDeclaredMembers
    java.lang.RuntimePermission getClassLoader
    java.lang.reflect.ReflectPermission suppressAccessChecks
    java.net.SocketPermission * connect,resolve
    java.util.PropertyPermission es.allow_insecure_settings read,write
    See http://docs.oracle.com/javase/8/docs/technotes/guides/security/permissions.html
    for descriptions of what these permissions allow and the associated risks.
    
    Continue with installation? [y/N]y
    -> Installed repository-s3
  • 重启 ES 服务

ES 集群1 添加 KEY

  • 官方文档: https://www.elastic.co/guide/...
  • 应在 ES 集群的所有节点上添加 key
  • 查看有哪些 key

    /usr/share/elasticsearch/bin/elasticsearch-keystore list
    
  • 添加 access_key

    /usr/share/elasticsearch/bin/elasticsearch-keystore add s3.client.default.access_key
  • 添加 secret_key

    /usr/share/elasticsearch/bin/elasticsearch-keystore add s3.client.default.secret_key
  • 重载配置

    POST _nodes/reload_secure_settings

创建 S3 快照仓库

  • 官方文档: https://www.elastic.co/guide/...
  • 注意中国区不支持 region,用 endpoint 替代
PUT _snapshot/my_s3_repository
{
  "type": "s3",
  "settings": {
    "endpoint": "s3.cn-northwest-1.amazonaws.com.cn",
    "bucket": "zt-hadoop-cn-northwest-1",
    "base_path": "es_snapshot", 
    "max_snapshot_bytes_per_sec": "200mb",  # 调整快照创建的速度,默认 40mb
    "max_restore_bytes_per_sec": "200mb"    # 调整快照恢复的速度,默认无限制
  }
}
  • 查看所有注册的快照仓库
GET _snapshot/_all
  • 删除快照仓库
DELETE _snapshot/my_s3_repository
  • 调整集群恢复分片速度和并发数
PUT _cluster/settings 
{
  "transient": {
    "indices.recovery.max_bytes_per_sec": "200mb",  # 默认 40mb
    "cluster.routing.allocation.node_concurrent_recoveries": "5"    # 默认 2
  }
}
  • 查看集群配置(包括默认配置)
GET _cluster/settings?flat_settings&include_defaults

创建快照

  • 官方文档: https://www.elastic.co/guide/...
PUT /_snapshot/my_s3_repository/snapshot_zt
{
  "indices": "zt_product_doc_index_20210223_3",
  "ignore_unavailable": true,
  "include_global_state": false
}
  • 查看一个my_s3_repository仓库下的所有快照
GET _snapshot/my_s3_repository/_all
  • 查看 snapshot_zt 快照的概要状态
GET _snapshot/my_s3_repository/snapshot_zt
  • 查看 snapshot_zt 快照的详细状态
GET _snapshot/my_s3_repository/snapshot_zt/_status
  • 删除快照
DELETE _snapshot/my_s3_repository/snapshot_zt

从 S3 恢复快照

  • 官方文档: https://www.elastic.co/guide/...

    POST /_snapshot/my_s3_repository/snapshot_zt/_restore
    {
      "indices": "zt_product_doc_index_20210223_3",
      "index_settings": {
    "index.number_of_replicas": 0
      },
      "rename_pattern": "zt_product_doc_index_20210223_3",
      "rename_replacement": "zt_product_doc_index_20210223_3_restore"
    }
  • 增加副本

    PUT zt_product_doc_index_20210223_3_restore/_settings
    {
      "index.number_of_replicas" : "1"
    }

从 Windows 共享目录恢复快照

  • 已将 S3 上的文件拷贝到 Windows 的共享目录,并挂载到 ES 集群2 服务器的 /mnt/winshare 目录

    # tree -d /mnt/winshare/
    /mnt/winshare/
    └── es_snapshot
      └── indices
          └── kM6SVcCrTUGjP-634aDUYg
              ├── 0
              ├── 1
              └── 2
  • Linux 挂载 Windows 共享目录参见: Ubuntu 20.04 读写 Windows 10 共享目录
  • 在 elasticsearch.yml 文件中添加如下配置,并重启 ES 服务

    path.repo:
    - /mnt/winshare
  • 创建 Windows 系统的快照仓库

    PUT /_snapshot/my_backup
    {
    "type": "fs",
    "settings": {
      "location": "/mnt/winshare/es_snapshot"
    }
    }
  • 官方文档

    POST /_snapshot/my_backup/snapshot_zt/_restore
    {
    "indices": "zt_product_doc_index_20210223_3",
    "index_settings": {
      "index.number_of_replicas": 0
    },
    "rename_pattern": "zt_product_doc_index_20210223_3",
    "rename_replacement": "zt_product_doc_index_20210223_3_smb"
    }
  • 增加副本

    PUT zt_product_doc_index_20210223_3_smb/_settings
    {
    "index.number_of_replicas" : "1"
    }
本文出自  qbit snap

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

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

相关文章

Python的文件的读写操作【侯小啾Python基础领航计划 系列(二十七)】

Python_文件的读写操作【侯小啾Python基础领航计划 系列(二十七)】 大家好,我是博主侯小啾, 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔…

Go 语言中的函数调用。

更好的观看体验,请点击——函数调用 | YinKais Blog 本文将从函数的调用惯例和参数传递方法两个方面分别介绍函数执行的过程。 1、调用惯例 对于不同的编程语言, 它们在调用函数的时候往往都使用相同的语法: somefunction(arg0, arg1) 虽…

风变科技千万营收的AIGC项目,在Fanbook成功落地,专访风变科技CMO江育麟

在AIGC时代,创作生产力被下放到了每一位普通人身上,然后用户与AIGC应用之间还存在一定的认知与技术沟壑。 最近,【AIGC开放社区】注意到一款AIGC课程项目受到了相当的关注,让许多0基础的学员轻松地学会了使用AIGC技术的基本方法。…

Vxworks6.9的在线gdb调试(仿真内核和板载内核)

创作目的:归纳总结常用的技巧和方法,方便自己后续查阅重点节省时间。 一、仿真内核的gdb调试 1、新建DKM工程,选择sim的BSP包 2、DKM工程中添加c文件并编辑入口函数 3、新建vxworks远端系统 4、显示系统起来之后进行加载.out 5、选择Debug模…

Python的模块与库,及if __name__ == ‘__main__语句【侯小啾Python基础领航计划 系列(二十四)】

Python的模块与库,及if name == ‘__main__语句【侯小啾Python基础领航计划 系列(二十四)】 大家好,我是博主侯小啾, 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔…

Java基础之数组拷贝

Arrays.copyOf 详解 copyOf是Arrays类下面的一个方法,用于拷贝各种数组 以整型数组为例:int [ ] copyOf(int [ ]array,int newLength);第一个参数是想要拷贝到数组,第二个参数是新拷贝得到的数组的大小(不一定非得和原始数组大小一样&…

RT-Thread 内存管理

在计算机系统中,通常存储空间可以分为两种:内部存储空间和外部存储空间。 内部存储空间通常访问速度比较快,能够按照变量地址随机访问,也就是我们通常所说的RAM(随机存储器),可以把它理解为电脑…

Java多线程技术二:线程间通信——join()方法的使用

1 概述 在很多情况下,主线程创建并启动子线程,如果子线程中要进行大量的耗时运算,主线程往往将早于子线程结束,这时如果主线程想等待子线程执行完成后再结束,例如子线程处理一个数据,主线程要取到这个数据中…

WordPress免费插件大全清单【2023最新】

WordPress已经成为全球范围内最受欢迎的网站建设平台之一。要让您的WordPress网站更具功能性、效率性,并提供卓越的用户体验,插件的选择与使用变得至关重要。 WordPress插件的作用 我们先理解一下插件在WordPress生态系统中的作用。插件是一种能够为Wo…

【PyTorch】softmax回归

文章目录 1. 模型与代码实现1.1. 模型1.2. 代码实现 2. Q&A 1. 模型与代码实现 1.1. 模型 背景 在分类问题中,模型的输出层是全连接层,每个类别对应一个输出。我们希望模型的输出 y ^ j \hat{y}_j y^​j​可以视为属于类 j j j的概率,然…

计算机网络入侵检测技术研究

摘 要 随着网络技术的发展,全球信息化的步伐越来越快,网络信息系统己成为一个单位、一个部门、一个行业,甚至成为一个关乎国家国计民生的基础设施,团此,网络安全就成为国防安全的重要组成部分,入侵检测技术…

线程的使用1

1. 创建一个线程 1.1 创建线程练习 线程实际上是应用层的概念,在 Linux 内核中,所有的调度实体都被称为任务 (task) , 他们之间的区别是:有些任务自己拥有一套完整的资源,而有些任务彼此之间共享一套资源 对此函数的使…

机器学习深度学学习分类模型中常用的评价指标总结记录与代码实现说明

在机器学习深度学习算法模型大开发过程中,免不了要对算法模型进行对应的评测分析,这里主要是总结记录分类任务中经常使用到的一些评价指标,并针对性地给出对应的代码实现,方便读者直接移植到自己的项目中。 【混淆矩阵】 混淆矩阵…

多模块下MyBatis官方生成器

MyBatis官方生成器 1. 依赖插件 创建generator模块 在父模块中进行版本管理 <dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.6</version> </dependency><dependency><g…

Python练习题(三)

&#x1f4d1;前言 本文主要是【Python】——Python练习题的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1f304;每日一句&am…

[足式机器人]Part2 Dr. CAN学习笔记-Ch0-1矩阵的导数运算

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN学习笔记-Ch0-1矩阵的导数运算 1. 标量向量方程对向量求导&#xff0c;分母布局&#xff0c;分子布局1.1 标量方程对向量的导数1.2 向量方程对向量的导数 2. 案例分析&#xff0c;线性回归3. 矩阵求导的链…

el-pagination 纯前端分页

需求&#xff1a;后端把所有数据都返给前端&#xff0c;前端进行分页渲染。 实现思路&#xff1a;先把数据存储到一个大数组中&#xff0c;然后调用方法进行切割。主要使用数组的slice方法 所有代码&#xff1a; html <template><div style"padding: 20px&qu…

CSS 局限-contain

CSS 局限 CSS 局限规范的目标在于通过允许浏览器从页面的其余部分中隔离出页面子树而改善性能。若浏览器知道页面的某一部分为独立的&#xff0c;则可优化渲染并改善性能。 此外&#xff0c;此规范允许开发者标示元素究竟是否应当渲染其内容&#xff0c;以及在屏外时是否应当…

【程序员 | 交流】程序员情商修炼指南系列 (沟通是有效合作一大利器)

&#x1f935;‍♂️ 个人主页: AI_magician &#x1f4e1;主页地址&#xff1a; 作者简介&#xff1a;CSDN内容合伙人&#xff0c;全栈领域优质创作者。 &#x1f468;‍&#x1f4bb;景愿&#xff1a;旨在于能和更多的热爱计算机的伙伴一起成长&#xff01;&#xff01;&…

如何能够对使用ShaderGraph开发的Shader使用SetTextureOffset和SetTextureScale方法

假设在ShaderGraph中的纹理的引用名称为"_BaseMap"&#xff0c;同时对这个"_BaseMap"纹理使用了采样的节点"SampleTexture2D"&#xff0c;然后该采样节点的uv接入的TilingAndOffset节点&#xff0c;此时的关键步骤是新建一个Vector4属性&#xf…