Elasticsearch的数据备份和恢复以及迁移

2023-10-30

 目录

1. 为什么备份?

2. 数据备份

3. 数据恢复

4. ES备份数据迁移目标服务器

5. 脚本备份恢复


1. 为什么备份?

常见的数据库都会提供备份机制,以解决在数据库无法使用的情况下通过备份来恢复数据减少损失。 Elasticsearch 虽然有良好的容灾性,但以下原因,其依然需要备份机制:

1) 数据灾备:在整个集群无法正常工作时,可以及时从备份中恢复数据。

2) 归档数据:随着数据的积累,比如日志类的数据,集群的存储压力会越来越大,不管是内存还是磁盘都要承担数据增多带来的压力,此时我们往往会选择只保留最近一段时间的数据,比如将1个月之前的数据删除。如果不想删除这些数据,以备后续有查看需求,那么就可以将这些数据以备份的形式归档。

3) 迁移数据:当你需要将数据从一个集群迁移到另一个集群时,也可以用备份的方式来实现。

Elasticsearch备份两种方式:

1) 将数据导出成文本文件,比如通过 elasticdumpesm 等工具将存储在 Elasticsearch 中的数据导出到文件中。

2) 备份 elasticsearch data 目录中文件的形式来做快照,借助 Elasticsearch 中 snapshot 接口实现的功能。

第一种方式相对简单,在数据量小的时候比较实用,当应对大数据量场景效率就显得乏力。这里本文着重讲解下第二种备份方式,即 snapshot api 的使用。其次,备份集群的唯一可靠方法是使用快照和还原功能。

版本兼容性:

1) 5.x中创建的索引快照可以还原为6.x

2) 2.x中创建的索引快照可以还原为5.x

3) 1.x中创建的索引快照可以还原为2.x

2. 数据备份

官方文档参考

1) 设置备份目录

修改elasticsearch.yml

配置文件elasticsearch.yml中添加  path.repo: ["/home/gocode/app/backup/elk"],重启ES。

创建ES数据备份的数据目录

# mkdir -p /home/gocode/app/backup/elk

# chmod 755 /home/gocode/app/backup/elk

# chown es:es /home/gocode/app/backup/elk  //给es用户目录权限

2) 创建仓库(creating the repository)

备份数据之前,要创建一个仓库来保存数据,仓库的类型支持Shared filesystem, Amazon S3, HDFS、Azure Cloud选择。

创建了一个备份仓库名为datasvr 存储目录为/home/gocode/app/backup/elk 的备份仓库。

curl -H "Content-Type: application/json" -XPUT 'http://127.0.0.1:9200/_snapshot/datasvr' -d ' {"type":"fs","settings":{"location":"/home/gocode/app/backup/elk","compress":true}}'
curl -H "Content-Type: application/json" -XPUT 'http://127.0.0.1:9200/_snapshot/datasvr' -d '
{
	"type": "fs",
	"settings": {
		"location": "/home/gocode/app/backup/elk",
		"compress": true
	}
}'

3) 创建快照(备份索引)

一个仓库可以拥有同一个集群的多个快照。在一个集群中快照拥有一个唯一名字作为标识。在仓库 datasvr 中创建名字为 snapshot_1 的快照。

#curl -H "Content-Type:application/json" -XPUT '127.0.0.1:9200/_snapshot/datasvr/snapshot_1'

备份名称为snapshot_1 (自行定义备份名称)

同步执行,加wait_for_completion 标志,备份完成后才返回,如果数据量大的话,会花很长时间

#curl -H "Content-Type:application/json" -XPUT '127.0.0.1:9200/_snapshot/datasvr/snapshot_1?wait_for_completion=true'

如果只想备份部分索引的话,可以加上indices 参数:

curl -H "Content-Type:application/json" -XPUT '127.0.0.1:9200/_snapshot/datasvr/snapshot_1' -d '
{
	"indices": "index_1,index_2"
}'

执行完后,查看备份数据目录下,已经备份在备份目录下

4) 查看仓库信息

浏览器中查看备份仓库信息

http://172.20.32.241:9200/_snapshot/datasvr/

5) 查看仓库存储的所有快照

浏览器中查看备份仓库某个快照信息

http://172.20.32.241:9200/_snapshot/datasvr/snapshot_1

浏览器中查看备份仓库所有快照信息

http://172.20.32.241:9200/_snapshot/datasvr/_all

6) 删除快照

# curl -X DELETE "localhost:9200/_snapshot/datasvr/snapshot_1"

7) 删除仓库

仓库被注销时,ElasticSearch 只删除仓库存储快照的引用位置,快照本身没有被删除并且在原来的位置

# curl -X DELETE "localhost:9200/_snapshot/datasvr"

 

集群备份恢复:

注意: 以上是单机的备份方法,集群的备份恢复方法和单机模式一样,只不过需要增加一个集群共享目录用来存放备份数据,使所有节点可访问。

1) 配置集群共享目录

# yum install sshfs

2) 创建集群共享目录,并将各节点备份目录挂载到共享目录

 创建集群共享目录
        # mkdir -p /home/backup/elk_share

共享目录挂载

# sshfs root@172.20.32.239:/home/backup/elk_share /home/backup/elk  -o allow_other

3) 数据备份恢复与单机备份恢复一样,参考单机备份恢复

3. 数据恢复

官方文档参考

# curl -H "Content-Type:application/json" -XPOST '127.0.0.1:9200/_snapshot/datasvr/snapshot_1/_restore'

用过head插件查看,数据已经恢复:

 

4. ES备份数据迁移目标服务器

1) 源数据备份

参考以上第二步

2) 源数据备份目录拷贝目标ES备份目录下

注意:这里为了方便,源备份目录和目标备份目录一致。

3) 目标ES机器创建源ES同名仓库

4) 目标ES查看快照

5) 目标ES执行恢复操作

5. 脚本备份恢复

将用到的api封装成shell脚本进行备份恢复操作较为方便,后续有时间在补充。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Elasticsearch的数据备份和恢复以及迁移 的相关文章

  • ELK之logstash单节点安装

    ELK之logstash单节点安装 最近在搞ELK 写个文章记录分享一下经验 去官网上下载对应版本的logstash安装包 将工具包上传至服务器 1 解压工具包 命令 tar xzvf logstash tar gz 2 配置logstas
  • elasticsearch的bulk(批量)操作

    在es中我们可能会有这么一种需求 即有时需要批量向es中插入或更新或删除数据 如果一条一条数据的操作 那么速度必然很慢 那么es的bulk api就可以派上用场 delete 删除操作 只需要写一个json即可 create 创建操作 如果
  • elasticsearch script实战

    写在前面 大家在开发elasticsearch的时候都会遇到很多去怪的需求 如果我们已知的RestAPI无法帮助我们完成搜索 是就需要我们自己动手写脚本来辅助搜索 完成需求 浅谈elasticsearch script脚本使用机制 通过阅读
  • 【elasticSearch系】3.完整搭建详尽版elk

    话不多说 我们先看下经典的elk 是由哪些组件搭建组合起来的 elasticSearch和kibana搭建 可以查看之前我搭建elasticsearch和kibana 的这篇文章 logstash搭建 为了和之前我搭建elasticsear
  • 漫谈ELK在大数据运维中的应用

    圈子里关于大数据 云计算相关文章和讨论是越来越多 愈演愈烈 行业内企业也争前恐后 群雄逐鹿 而在大数据时代的运维挑站问题也就日渐突出 任重而道远了 本文旨在针对复杂的大数据运维系统推荐一把利器 达到抛砖引玉的效果 如果文中出现任何纰漏和错误
  • ELK多个日志文件创建多个项目索引

    一 背景 我的elk架构是filebeat redis logstash elasticsearch kibana 我的想法是 我一台服务器多个程序有多个日志文件 在kibana里面想创建不通项目索引 指定不同日志文件 二 问题及解决思路
  • Docker部署ELK(配置密码登录)及Elastalert企业微信告警配置

    ELK部署记录 部署Elasticsearch Kibana Cerebro 通过docker进行部署 可以避免很多缺少依赖的问题 推荐使用centos7环境进行部署 请提前安装好docker服务 docker compose服务 先新建一
  • ELK简介以及安装部署

    ELK近实时日志分析搜索系统 ELK简介 ELK 是 Elasticsearch Logstash Kibana 三大开源框架的首字母大写简称 市面上也被称为Elastic Stack 其中 Elasticsearch 是一个基于Lucen
  • 搭建ELK(ElasticSearch+Logstash+Kibana)日志分析系统(十五) logstash将配置写在多个文件

    摘要 我们用Logsatsh写配置文件的时候 如果读取的文件太多 匹配的正则过多 会使配置文件动辄成百上千行代码 可能会造成阅读和修改困难 这时候 我们可以将配置文件的输入 过滤 输出分别放在不同的配置文件里 甚至把输入 过滤 输出再次分离
  • 8.1.2-elasticsearch文本解析之自定义分词器及分词器匹配规则

    创建自定义analyzer 在具体的业务场景当中可能内置的analyzer并不能满足需求 这就需要能够自定义analyzer 前文已经说过analyzer由3部分组成 自定义analyzer就是通过配置以下三部分内容来实现的 序号 子构件
  • ELK日志平台搭建(一)

    ELK企业级日志分析系统 ELK是由Elasticsearch Logstash Kiban三个开源软件的组合 在实时数据检索和分析场合 三者通常是配合共用 而且又都先后归于 Elastic co 公司名下 故有此简称 ELK中日志处理步骤
  • ES的java接口调用异常信息:java.lang.RuntimeException: Request cannot be executed; I/O reactor status: STOPPED

    我的处理方法是重启了连接ES的服务接口 我专门写的一个供APP调用的服务 这个服务去连接ES 出现了这个错误 估计还是客户端连ES的出了问题
  • 8.2.3-elasticsearch内置分词器之keyword/pattern

    ES默认提供了八种内置的analyzer 针对不同的场景可以使用不同的analyzer 1 keyword analyzer 1 1 keyword类型及分词效果 keyword analyzer视字符串为一个整体不进行分词处理 测试key
  • ELK企业级日志分析系统

    ELK概述 为什么要使用 ELK 日志主要包括系统日志 应用程序日志和安全日志 系统运维和开发人员可以通过日志了解服务器软硬件信息 检查配置过程中的错误及错误发生的原因 经常分析日志可以了解服务器的负荷 性能安全性 从而及时采取措施纠正错误
  • Centos7安装elasticsearch及kibana并进行安全设置

    Centos7安装elasticsearch及kibana并进行安全设置 每天多学一点点 话不多说 这就开始吧 文章目录 Centos7安装elasticsearch及kibana并进行安全设置 1 前言 2 环境要求 3 安装elasti
  • ELK详解(十七)——filebeat输出到Redis和Elasticsearch实战

    今天继续给大家介绍Linux运维相关知识 本文主要内容是使用filebeat将日志输出到Redis和Elasticsearch的实战配置 在ELK详解 十六 filebeat安装与使用一文中 我们介绍了filebeat的安装 部署和简单应用
  • Es修改索引别名

    在使用ES时有时候我们需要修改索引信息 本文总结了如何修改索引信息 ES修改索引结构 在 ElasticSearch 中索引就类似于关系型数据库中 Table 的概念 如果要修改索引的一些关键信息时 要重建索引 具体步骤如下 新建索引 复制
  • elasticsearch部署过程中各种报错解析

    elasticsearch bootstrap StartupException java lang RuntimeException can not run elasticsearch as root ES不能能使用root用户直接运行
  • 给elasticsearch设置密码

    1 在elasticsearch yml中添加如下配置 xpack security enabled true xpack license self generated type basic xpack security transprt
  • Elasticsearch 未分配分片 CircuitBreakingException[[parent] 数据太大

    我收到警报 指出 elasticsearch 有 2 个未分配的分片 我进行了以下 api 调用以收集更多详细信息 curl s http localhost 9200 cluster allocation explain python m

随机推荐

  • 有关三次握手,四次挥手的超详细总结!!!

    有关三次握手 四次挥手的超详细总结 我们先来看一下三次握手和四次挥手的示意图 图示为三次握手 图示为四次挥手 一 三次握手和四次挥手的过程 三次握手 TCP建立连接的过程我们称之为3次握手 1 第一次握手 PC1使用一个随机的端口号向PC2
  • elasticsearch installation guide

    UBUNTU 14 04 LTS 安装 elasticseach同步MYSQL表并实现中文搜索 1 下载wget https download elasticsearch org elasticsearch elasticsearch el
  • 2023春计算机系统大作业

    2023春计算机系统大作业
  • Nginx对上游服务的心跳检测健康检查

    nginx对上游服务器的健康检查默认采用惰性策略 可以集成 nginx upstream check module模块来进行主动健康检查 nginx upstream check module支持tcp心跳和http心跳检测 TCP心跳检查
  • AndroidStuio插件开发-适用于jetbrains全家桶

    文章目录 创建项目 创建类 获取文件 解析文件 展示解析内容 写入文件 写了个类似Butter Knife的开发库 但是并没有与其配套的AndroidStudio插件 抽时间研究了以下IDEA的api文档 撸了一个对应的插件 源码在这里 之
  • 在idea中创建javaweb项目

    在idea中新建javaweb项目 一 在idea中新建javaweb项目 二 部署应用程序到tomcat的webapps目录 一 在idea中新建javaweb项目 1 打开idea 选择File gt new gt new projec
  • 提问的智慧

    How To Ask Questions The Smart Way 学习浏览 看到的优质文章留存 转载 仅供个人学习使用 侵删 原文链接 本指南英文版版权为 Eric S Raymond Rick Moen 所有 原文网址 http ww
  • javascript 异步编程

    这可能是个比较深的话题 何谓异步 笼统地说 异步在javascript就是延时执行 严格来说 javascript中的异步编程能力都是由BOM与DOM提供的 如setTimeout XMLHttpRequest 还有DOM的事件机制 还有H
  • JEESITE登录流程简单梳理

    http blog csdn net qinwang gz article details 53306037
  • 网络三种连接方式-地址转换模式

    VMware虚拟机NAT 地址转换模式 转载于 VMware虚拟机三种网络模式详解 NAT 地址转换模式 Linux教程 Linux公社 Linux系统门户网站 二 NAT 地址转换模式 刚刚我们说到 如果你的网络ip资源紧缺 但是你又希望
  • 小程序、微信H5、APP,移动端跨端相互跳转相关规则,2020/11最新总结

    这里只做总结与解释 细则可以去相应官方文档查看 前情提要 其他小程序的appid可以在它的资料里直接查看 所以不是问题 H5 gt 小程序 gt 随便跳 通过微信jssdk openTagList wx open launch weapp
  • ubuntu(20.04)+linux内核(5.17.3)编译内核

    该篇文档可以放心观看 里面的内容是我以便编译内核 一边记录写下的 所以如果按照文档来做 是绝对可以的哈 文章目录 前言 一 安装linux内核 二 开始前的准备工作 三 内核编译 1 将下载好的linux内核解压至 usr src 2 得到
  • 数据透视表右侧字段不见了,怎么办?

    数据透视表右侧字段不见了 怎么办 点击 右键 选择 显示字段列表
  • 网络套接字发送结构体及数据处理

    struct很基础 但是说实话 我还不是很了解 以下是借鉴别人的 转载地址 http blog chinaunix net uid 21372424 id 119782 html 一 最近在做嵌入式系统 与windows的网络通信 由于 这
  • Spring源码学习-MVC的WEB源码解析

    目录 SpringMVC官方文档 SpringMVC的父子容器 父子关系的定义 自定义快速启动器 启动过程 容器创建的过程 容器刷新启动 父子容器示例图 网络请求链路分析 DispatcherServlet请求链路 DispatcherSe
  • oracle 9i在线重定义,oracle 9i上在线重定义表【转】

    当前位置 我的异常网 数据库 oracle 9i上在线重定义表 转 oracle 9i上在线重定义表 转 www myexceptions net 网友分享于 2013 07 23 浏览 3次 oracle 9i下在线重定义表 转 转自 h
  • https安全解决方案证书certbot教程

    一 Let s Encrypt Certbot和Snap的关系 Let s Encrypt是一个免费 自动化和开放的证书颁发机构 由非营利的互联网安全研究小组 ISRG 为您提供 Certbot使用EFF的Certbot在您的网站上自动启用
  • 抖音一键生成的AI绘画火了,网友惊呼:有点东西

    在各大AI绘画软件争奇斗艳的时候 近期最火的AI绘画莫过于抖音一键生成的AI绘画特效 网友惊呼 有点东西 就连最近话题度超高的 汪小菲 也用AI绘画来 秀 恩爱了 AI绘画识别度还挺高 特别是关于大白志愿者的生成效果 AI竟然能识别生成天使
  • postman—post方式几种请求格式的区别

    文章目录 前言 一 multipart form data与x www form urlencoded区别 二 使用时的一些细节 三 传参注意点总结 关于发送请求传入参数 总结 前言 介绍了postman中 常用的几种数据传参的特点 一 m
  • Elasticsearch的数据备份和恢复以及迁移

    目录 1 为什么备份 2 数据备份 3 数据恢复 4 ES备份数据迁移目标服务器 5 脚本备份恢复 1 为什么备份 常见的数据库都会提供备份机制 以解决在数据库无法使用的情况下通过备份来恢复数据减少损失 Elasticsearch 虽然有良