esh的snapshot快照备份

2023-10-26

1)Elasticsearch的snapshot快照备份

优点:通过snapshot拍摄快照,然后定义快照备份策略,能够实现快照自动化存储,可以定义各种策略来满足自己不同的备份
缺点:还原不够灵活,拍摄快照进行备份很快,但是还原的时候没办法随意进行还原,类似虚拟机快照
1、配置备份目录
在 elasticsearch.yml 的配置文件中注明可以用作备份路径 path.repo ,如下所示:
path.repo: ["/mount/backups", "/mount/longterm_backups"]
配置好后,就可以使用 snapshot api 来创建一个 repository 了,如下我们创建一个名为 my_backup 的 repository。
PUT /_snapshot/my_backup { "type": "fs", "settings": { "location": "/mount/backups/my_backup" } }
2、开始通过API接口备份
有了 repostiroy 后,我们就可以做备份了,也叫快照,也就是记录当下数据的状态。如下所示我们创建一个名为 snapshot_1 的快照。
PUT /_snapshot/my_backup/snapshot_1?wait_for_completion=true
【温馨提示】wait_for_completion 为 true 是指该 api 在备份执行完毕后再返回结果,否则默认是异步执行的,我们这里为了立刻看到效果,所以设置了该参数,线上执行时不用设置该参数,让其在后台异步执行即可。
3、增量备份
PUT /_snapshot/my_backup/snapshot_2?wait_for_completion=true
当执行完毕后,你会发现 /mount/backups/my_backup 体积变大了。这说明新数据备份进来了。要说明的一点是,当你在同一个 repository 中做多次 snapshot 时,elasticsearch 会检查要备份的数据 segment 文件是否有变化,如果没有变化则不处理,否则只会把发生变化的 segment file 备份下来。这其实就实现了增量备份。
4、数据恢复
通过调用如下 api 即可快速实现恢复功能:
POST /_snapshot/my_backup/snapshot_1/_restore?wait_for_completion=true { "indices": "index_1", "rename_replacement": "restored_index_1" }
2)elasticdump备份迁移es数据
索引数据导出为文件(备份)
# 导出索引Mapping数据 elasticdump \ --input=http://es实例IP:9200/index_name/index_type \ --output=/data/my_index_mapping.json \ # 存放目录 --type=mapping # 导出索引数据 elasticdump \ --input=http://es实例IP:9200/index_name/index_type \ --output=/data/my_index.json \ --type=data
索引数据文件导入至索引(恢复)
# Mapping 数据导入至索引 elasticdump \ --output=http://es实例IP:9200/index_name \ --input=/home/indexdata/roll_vote_mapping.json \ # 导入数据目录 --type=mapping # ES文档数据导入至索引 elasticdump \ --output=http:///es实例IP:9200/index_name \ --input=/home/indexdata/roll_vote.json \ --type=data
可直接将备份数据导入另一个es集群
elasticdump --input=http://127.0.0.1:9200/test_event --output=http://127.0.0.2:9200/test_event --type=data
type类型
type是ES数据导出导入类型,Elasticdump工具支持以下数据类型:

type类型	说明
mapping	ES的索引映射结构数据
data	ES的数据
settings	ES的索引库默认配置
analyzer	ES的分词器
template	ES的模板结构数据
alias	ES的索引别名

3)esm备份迁移es数据
备份es数据
esm -s http://10.33.8.103:9201 -x "petition_data" -b 5 --count=5000 --sliced_scroll_size=10 --refresh -o=./es_backup.bin
-w 表示线程数
-b 表示一次bulk请求数据大小,单位MB默认 5M
-c 一次scroll请求数量
导入恢复es数据
esm -d http://172.16.20.20:9201 -y "petition_data6" -c 5000 -b 5 --refresh -i=./dump.bin


https://zhuanlan.zhihu.com/p/540189644
https://www.cnblogs.com/windysai/p/14400830.html

#!/bin/bash

#db_backups_conf.txt文件路径
db_backups_conf="/home/ljy/scripts/elasticsearch_backup_config.txt"

base_path='/backup/elkdata'
mv_elk_bath='/backup/elkmvdata'

#本机只保留最近3天快照
find ${mv_elk_bath}/ -type f -mtime +2 -exec rm -rf {} \; > /dev/null 2>&1

##先把原来的挪走
# 获取前一天的:年,月,日
y=`date +"%Y" -d "-1day"`
ym=`date +"%Y%m" -d "-1day"`
d=`date "+%d" -d "-1day"`

if [ ! -d ${mv_elk_bath}/${y}/${ym}/${d} ];
then
    mkdir -p ${mv_elk_bath}/${y}/${ym}/${d}
    scp -rp ${base_path}/* ${mv_elk_bath}/${y}/${ym}/${d}/
fi


#判断配置信息文件是否存在
if [ -f "${db_backups_conf}" ];then

        echo $(date +'%Y-%m-%d %H:%M:%S')" 发现备份文件配置信息文件存在"

        #获取等号前内容,作为map中的Key值
        dbArrOne=($(awk -F'[=]' '{print $1}' ${db_backups_conf} ))

        #获取等号后内容,作为map中的value值
        dbArrTwo=($(awk -F'[=]' '{print $2}' ${db_backups_conf}))

        #创建一个空map
        declare -A map=()

        #通过循环,将db_backups_conf配置文件中的信息存储在map中
        for((i=0;i<${#dbArrOne[@]};i++))
        do
                map[${dbArrOne[i]}]=${dbArrTwo[i]}
        done

        #获取要备份的索引名称的字符串
        indexNames=${map["indexNames"]}


        #获取默认的字符串分隔符
        old_ifs="$IFS"

        #设置字符串分隔符为逗号
        IFS=","

        #将要备份的索引名称value值的字符串进行分隔,获取一个数组
        indexNamesArr=($indexNames)


        #将字符串的分隔符重新设置为默认的分隔符
        IFS="$old_ifs"

        #获取当前年月日
        saveday=$(date +%Y%m%d)

        #获取超出备份天数的年月日
        delday=$(date -d ${map["backupsFileDay"]}' days ago' +%Y%m%d)


        #执行命令,备份es数据
        {
           #检测es访问地址是否有效
           esStatus=$(curl -s -m 5 -IL http://${map["ipAddress"]}:${map["portNumber"]}|grep 200)
           if [ "$esStatus" != "" ];then
             echo $(date +'%Y-%m-%d %H:%M:%S')" es地址访问正常:http://"${map["ipAddress"]}":"${map["portNumber"]}",开始备份数据"

             #遍历备份索引名称,逐个删除旧备份,重新全量备份
             for indexName in ${indexNamesArr[@]};
             do
                echo $indexName;
                ##逐个判断索引是否存在
                indexStatus=$(curl -s -m 5 -IL http://${map["ipAddress"]}:${map["portNumber"]}/${indexName}|grep 200)
                if [ "$indexStatus" != "" ];then
                #先备份,然后再删除旧备份
                   if [ ${map["backupBeforeDelete"]} == "yes" ];then
                       echo $(date +'%Y-%m-%d %H:%M:%S')" 开始同步备份索引:"${indexName}_backup_${saveday}
                       curl -XPUT '127.0.0.1:9500/_snapshot/elk_backup/'${indexName}'_backup_'${saveday}'?wait_for_completion=true' -d '{"indices":"'${indexName}'"}'
                       echo $(date +'%Y-%m-%d %H:%M:%S')" 完成同步备份索引:"${indexName}_backup_${saveday}

                       #删除旧备份
                       echo $(date +'%Y-%m-%d %H:%M:%S')" 开始删除备份索引:"${indexName}_backup_${delday}
                       curl -XDELETE '127.0.0.1:9500/_snapshot/elk_backup/'${indexName}'_backup_'${delday}''
                       echo $(date +'%Y-%m-%d %H:%M:%S')" 完成删除备份索引:"${indexName}_backup_${delday}
                   fi
                else
                   echo $(date +'%Y-%m-%d %H:%M:%S')" es中不能存在索引:"${indexName}

                fi
             done
             fi
        }
else
     echo "文件不存在"
fi

备份到nas上的脚本
分每天和每月(每月仅备份1个)

#/bin/bash
#Date: 2020-08-02
#Script Name: elk_logs_bak
#备份elk快照数据到nas

# 日志位置
base_path='/backup/elkdata'

nas_bak='/nasdir/elk_bak/day_bak'
# 获取当前年信息和月信息
ym=$(date +"%Y%m")
dy=`date "+%Y%m%d"`
d=`date "+%d"`

#按年月创建文件夹
if [ ! -d ${nas_bak}/${ym}/${d} ];
then
   sudo mkdir -p ${nas_bak}/${ym}/${d}
fi

scp -rp ${base_path}/* ${nas_bak}/${ym}/${d}/

#每月备份最后一天数据
nasmonth_bak='/nasdir/elk_bak/month_bak'
lastday=`date -d"$(date -d"1 month" +"%Y%m01") -1 day" +"%d"`
thisday=`date +"%d"`
#保留一个月的最后一天日志
if [ $thisday == lastday ];
then
   mkdir -p ${nasmonth_bak}/${ym}/
   scp -rp ${nas_bak}/${ym}/${d}/* ${nasmonth_bak}/${ym}/
fi


find ${nas_bak}/${ym}/ -type f -mtime +30 -exec rm -rf {} \; > /dev/null 2>&1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

esh的snapshot快照备份 的相关文章

随机推荐

  • Node.js使用session或JWT机制登录验证教程

    Session实现代码 Session 对象存储特定用户会话所需的属性及配置信息 这样 当用户在应用程序的 Web 页之间跳转时 存储在 Session 对象中的变量将不会丢失 而是在整个用户会话中一直存在下去 当用户请求来自应用程序的 W
  • 小程序中实现点击切换不同组件的效果

    前言 小程序中实现点击切换不同页面的组件效果 实现效果 实现步骤 第一 分别建立三个页面的文件夹以及他们的相关文件 第二 index模块中 index wxml
  • 安装APK的两种方式

    我的新书 Android App开发入门与实战 已于2020年8月由人民邮电出版社出版 欢迎购买 点击进入详情 网络安装 一般通过网线连接到设备 通过网线进行apk的传输和安装 步骤如下 1 adb connect 目标设备ip和端口 2
  • C++中long是什么类型

    long long本质上还是整型 只不过是一种超长的整型 int型 32位整型 取值范围为 2 31 2 31 1 long 在32位系统是32位整型 取值范围为 2 31 2 31 1 在64位系统是64位整型 取值范围为 2 63 2
  • AIGC基础:从VAE到DDPM原理、代码详解

    作者 王建周 单位 来也科技AI团队负责人 研究方向 分布式系统 CV NLP 前言 AIGC 目前是一个非常火热的方向 DALLE 2 ImageGen Stable Diffusion 的图像在以假乱真的前提下 又有着脑洞大开的艺术性
  • 我们真的需要复杂的密码吗?

    目录 toc 现状 想写这篇文章很久了 不过作为一个安全行业的从业者 总觉得说出来有些汗颜 我们这个行业的安全人员总是引导甚至强制灌输人们设置复杂密码的做法 让我一直觉得写这篇文章是在对我们的自我否定 自我打脸 所以也就一直没有写 直到我的
  • 元宇宙概念火热,多家企业推出NFT

    摘要 产业动态 Facebook 计划未来五年在欧洲招聘 1 万人建立元宇宙 新加坡新跃社科大学成立元宇宙实验室 淘宝APP上线 天猫双11首届元宇宙艺术展 格拉斯哥大学与VB Hyperledger合作启动Moshan区块链实验室 政策相
  • Robotium学习笔记三

    以下是从网络上抄录的一些Robotium注意事项 1 有些button没有string 没有text 只能通过index来click这样很不直观 而且button的index并不是固定的 有可能随着控件重新加载 顺序也有可能发生变化 无法保
  • 获取jsp各种参数方法总结

    package coreservlets import java io import javax servlet import javax servlet http import java util Creates a table show
  • C++学习(五十四)qt发布mac程序

    当你用Qt开发好程序后 是不是会很期待将你的成果分享给你的小伙伴 可是Qt的库并不是OS X标配的 所以我们要自己去复制库到app包里 才可以让app在其他未安装Qt的电脑上运行 比较幸运的是 Qt为我们提供了macdeployqt工具 借
  • 端到端深度学习与自动驾驶(含参考文献)

    参考文献见最后 1 自动驾驶系统的分类 Rule based system基于规则的系统 也有论文中将这样的方法叫做Mediated percepiton approach Fully end to end 端到端的系统 也有论文中叫做be
  • IT产业的70:20:10规律

    IT产业的发展是迅速而无法抗拒的 一家技术优秀 管理正规的互联网公司从奠基到上市往往只需要很少的时间 例如英特尔和微软从上市起用了十年的时间确立了它们在微机领域的霸主地位 并达到百亿产值 而思科上市后只用了五年左右的时间就主导了网络硬件的市
  • day39 动态规划

    62 不同路径 机器人每次只可以向右 或者 向下 每次向右走 dp i 0 1 dp 0 j 1 dp i j dp i 1 j dp i j 1 i的范围 0 m 1 j的范围 0 n 1 63 不同路径 II 解法同上 需要考虑障碍物
  • MQTT 官方资源地址

    MQTT官方资源地址 http mqtt org MQTT的官方地址 https www eclipse org paho downloads php MQTT源码的下载地址 官网源码 请参见官方资料和源代码 以免少走弯路 陷入大坑
  • 数据挖掘技术-绘制饼图

    绘制饼图 前置步骤 准备数据guomin npz 下载数据guomin npz到Linux本地的 course DataAnalyze data目录 绘制饼图 pyplot中绘制饼图的函数为pie 使用pie函数绘制2017年第一季度各产业
  • oracle表的storage参数说明

    author skatetime 2009 05 12 修改表的存储参数 storage 解釋 pctfree和pctused 用來控制數據塊中的空閑空間的使用 空閑空間用於數據行的插入和更新 initrans和maxtrans 用來控制分
  • Netty和Tomcat的区别

    一 Netty和Tomcat有什么区别 Netty和Tomcat最大的区别就在于通信协议 Tomcat是基于Http协议的 他的实质是一个基于http协议的web容器 但是Netty不一样 他能通过编程自定义各种协议 因为netty能够通过
  • GIT简单介绍及常用命令

    git是什么 git是目前企业使用最多最流行的 分布式版本 控制系统 分布式版本控制系统 没有中央服务器 每个人的电脑就是一个完整的版本库 工作时候不需要联网 因为版本就在自己的电脑上面 如果多人同时编写修改一个文件的时候 只需要将两者之间
  • matlab快捷键自动对齐

    matlab用了一段时间发现移动代码的时候很容易出现对不齐的情况 一行行缩进很让人头疼 后面发现原来可以自动缩进 方法如下 matlab中全选某段代码 Ctrl i 可以代码自动排版
  • esh的snapshot快照备份

    1 Elasticsearch的snapshot快照备份 优点 通过snapshot拍摄快照 然后定义快照备份策略 能够实现快照自动化存储 可以定义各种策略来满足自己不同的备份 缺点 还原不够灵活 拍摄快照进行备份很快 但是还原的时候没办法