美文网首页
elasticsearch 从删除的仓库恢复快照

elasticsearch 从删除的仓库恢复快照

作者: zpei0411 | 来源:发表于2018-07-24 14:45 被阅读0次

     关于 elasticsearch 的快照备份恢复官方文档还有其他很多文档介绍的很清楚了,这里直接贴链接 http://cwiki.apachecn.org/pages/viewpage.action?pageId=9405386 。下面主要介绍的是我遇到的需要从之前已经删除过的快照仓库来恢复快照。

一、 背景

    由于磁盘空间有限,因此写了一个 crontab 来每天晚上检查磁盘空间,低于阈值,则删除旧的快照仓库,创建新的快照仓库,将最早的索引进行快照备份,并生成压缩文件,将压缩文件备份,最后删除索引。也就是说,这么做,每次系统里只有当前最老的索引快照,其余的快照都是压缩文件,那么想从压缩文件中恢复之前老的快照应该怎么做,此时当时创建老的快照时的仓库早已被删除。

二、查询文档说明

   官方文档说明,当一个快照仓库被删除时,Elasticsearch只是删除快照的仓库位置引用信息。快照本身没有删除,并在原来的位置。

   因此,我们可以大胆的猜测,只要我们重建了当时的快照仓库,再将快照恢复到快照仓库的位置,是不是就可以利用这个快照来恢复索引了。下面就是实践

三、实践

1. crontab 脚本

#!/usr/bin/env bash

set -e -u

reset_snapshot() {

    echo "/ndeleting old log archive snapshot" 删除旧的快照仓库

    curl -X DELETE http://localhost:9200/_snapshot/log_archive

    echo "/nremove old log archive data"

    if [ -d "/data/elasticsearch/backup/log_archive" ]; then

        rm -rf "/data/elasticsearch/backup/log_archive"

    fi

    echo "/ncreate new log archive snapshot" 创建新的快照仓库

    curl -X POST http://localhost:9200/_snapshot/log_archive -d '{"type": "fs", "settings": {"location": "log_archive", "compress": true}}'

}

backup_log() {

    earliest_log_date=$(curl -s http://localhost:9200/_cat/indices | awk '/logstash-/ {print $3}'| sed -e "s/^logstash-//" | sort | head -n 1)

    备份最早的日志索引的快照

    echo "\ncreate earliest log snapshot logstash-${earliest_log_date}"

    curl -X PUT "http://localhost:9200/_snapshot/log_archive/logstash-${earliest_log_date}" -d "{\"indices\": \"logstash-${earliest_log_date}\", \"ignore_unavailable\": \"true\", \"include_global_state\": false }"

    while [ $(curl -s "http://localhost:9200/_snapshot/_status" | grep -c "logstash-${earliest_log_date}") != 0 ]; do

      sleep 20s

    done

    echo "backup tar file"

    tar -zcvf /backup/log_archive-$(sed "s/\.//g" <<< "logstash-${earliest_log_date}").tgz /data/elasticsearch/backup/log_archive

    删除最早的日志的索引

    echo "deleting old indices logstash-${earliest_log_date}"

    curl -X DELETE http://localhost:9200/logstash-${earliest_log_date}

}

monitor_disk() {

    while true; do

      available_disk=$(df -h | awk ' /\/data/ {print $4}' | sed -e "s/G//")

      if [[ $available_disk > 80 ]]; then

          echo "disk space is available"

          exit

      fi

      reset_snapshot

      backup_log

    done

}

monitor_disk

2.  查询当前的最旧的索引时间,可以看到是4月22号

3. 查询当前的快照仓库和快照,发现只有4月21号的快照

4. 查询备份的压缩文件

也就是说,我们可以尝试恢复4月20号的快照索引,可以看到4月20号的log果然查不到

5. 恢复

1)由于快照仓库存在,而且每次创建的仓库都是一样的,所以这里不需要再额外创建快照仓库。只需要将原有的快照仓库的快照先mv了,然后将压缩的快照仓库解压缩到 path.repo 里即可。发现过了大概一分钟再去查询快照仓库和快照就会发现 reload 生效了

查询之前的快照发现已经显示不存在了

2)现在进行恢复

恢复之后查询最早索引,发现已经恢复成功了

但是刚恢复好的索引会发现没有数据,需要等一两分钟,分片的数据才可以完全恢复好

3)查询 kibana 当天的数据发现也可以查到

相关文章

  • elasticsearch 从删除的仓库恢复快照

    关于 elasticsearch 的快照备份恢复官方文档还有其他很多文档介绍的很清楚了,这里直接贴链接http...

  • 百亿级数据搜索引擎,Elasticsearch与SpringBo

    Elasticsearch快照 Elasticsearch恢复 Spring与Elasticsearch整合 快照...

  • es数据备份与恢复

    数据备份 描述: es引入仓库与快照的概念实现了数据的备份与恢复,在elasticsearch.yml中指定仓库的...

  • KVM管理快照

    查询正在运行的镜像 创建快照 查看快照 恢复到最新的快照 恢复到某个快照 删除快照

  • ElasticSearch 快照及从快照中恢复数据

    elasticsearch 快照及从快照中恢复数据: --集群使用sanpshot快照需要共享文件系统,所以要先配...

  • Elasticsearch 快照备份恢复

    查看所有仓库 elasticsearch.yml 配置文件中加入快照仓库设置 1、创建仓库 2、备份所有索引 3、...

  • kvm快照功能

    1.创建快照 2.查看快照列表 3.恢复快照 4.查看当前快照 5.快照存储目录 6.删除快照

  • ES 本地备份和恢复

    简化的步骤是: 定义存储在哪里(注册仓库) 把数据存储进去(创建快照) 从备份中恢复数据(从快照中还原) 前期准备...

  • 快照 简介

    快照广泛应用在数据库、文件系统和块存储领域。使用快照的目的,恢复被删除或者被损坏的文件。目前实现快照的方式有两种写...

  • Docker 数据迁移

    迁移步骤 提交快照 导出快照 恢复快照 运行容器

网友评论

      本文标题:elasticsearch 从删除的仓库恢复快照

      本文链接:https://www.haomeiwen.com/subject/hyeemftx.html