首页 > 其他分享 >基于S3的elastic备份脚本

基于S3的elastic备份脚本

时间:2023-09-11 10:24:36浏览次数:33  
标签:快照 NAME elastic S3 备份 echo SNAPSHOT true es

下载插件并安装repository-s3

下载对应es的版本的repository-s3插件,然后解压到ES软件目录的plugins目录下。

elasticsearch.yml配置文件添加如下内容

s3.client.default.endpoint: "S3地址:端口"
s3.client.default.protocol: http

使用脚本配置S3访问账号与密码,使ES可以连接S3

所有ES节点都要配置

ES_PATH="/escls/elasticsearch-6.3.0"
s3_access_key="填入access_key"
s3_secret_key="填入secret_key"
cd ${ES_PATH}
echo ${s3_access_key}|./elasticsearch-keystore add -x -f -v 's3.client.default.access_key'
echo ${s3_secret_key}|./elasticsearch-keystore add -x -f -v 's3.client.default.secret_key'
${ES_PATH}/bin/elasticsearch-keystore list

配置完成后,轮询重启所有ES节点

重启后验证插件是否配置成功

Kibana登录查看插件是否安装成功

GET _cat/plugins?v

image

创建两个ES的快照仓库

PUT /_snapshot/快照仓库1
{
"type" : "s3",
"settings" : {
"bucket" : "S3桶1",
}
}
PUT /_snapshot/快照仓库2
{
"type" : "s3",
"settings" : {
"bucket" : "S3桶2",
}
}

shell备份脚本

#!/bin/bash
#功能:用于备份elasticsearch的索引快照,保留7天的备份快照。
#使用crontab每天执行一次。
#第一天~第7天在桶1每天一个快照,同时删除7天前桶2的快照。
#第八天~第14天在桶2每天一个快照,同时删除7天前桶1的快照。每14天一个轮回。
#7天前的日期
Full_snapshot(){
echo $1
B_DATA=$(date -d "7 day ago" +%F)
#脚本运行日志
LOG_FILE="/tmp/es_backup_all.log"
#运行脚本的当前时间
CUR_TIME=$(date +%F_%H-%M-%S)
#仓库名称
STORE_NAME=$1
STORE_NAME2=$2
#快照名称
SNAPSHOT_PRE="snapshot_index"
SNAPSHOT_NAME_printdoc="${SNAPSHOT_PRE}_printdoc_${CUR_TIME}"
SNAPSHOT_NAME_unicorn="${SNAPSHOT_PRE}_unicorn_${CUR_TIME}"
SNAPSHOT_NAME_insuredsingle="${SNAPSHOT_PRE}_insuredsingle_${CUR_TIME}"
SNAPSHOT_NAME_reinsurance="${SNAPSHOT_PRE}_reinsurance_${CUR_TIME}"
SNAPSHOT_NAME_other_all="${SNAPSHOT_PRE}_other_all_${CUR_TIME}"
#快照API

Snap_API="http://ES的IP地址:9600"
#curl的绝对路径
CURL_CMD="/usr/bin/curl"
#生成快照
echo "==========开始ES快照==============" >> ${LOG_FILE}
${CURL_CMD} -XPUT -uelastic:密码  "${Snap_API}/_snapshot/${STORE_NAME}/${SNAPSHOT_NAME_printdoc}?wait_for_completion=true" -H 'Content-Type: application/json' -d'{"indices": "printdoc_v*","ignore_unavailable": true,"include_global_state": true}' >> ${LOG_FILE}
echo "
=====备份索引printdoc_v*完成=====" >> ${LOG_FILE}

${CURL_CMD} -XPUT -uelastic:密码  "${Snap_API}/_snapshot/${STORE_NAME}/${SNAPSHOT_NAME_unicorn}?wait_for_completion=true" -H 'Content-Type: application/json' -d'{"indices": "unicorn_v*","ignore_unavailable": true,"include_global_state": true}' >> ${LOG_FILE}
echo "
=====备份索引unicorn_v*完成=====" >> ${LOG_FILE}


${CURL_CMD} -XPUT -uelastic:密码  "${Snap_API}/_snapshot/${STORE_NAME}/${SNAPSHOT_NAME_insuredsingle}?wait_for_completion=true" -H 'Content-Type: application/json' -d'{"indices": "insuredsingle_v*","ignore_unavailable": true,"include_global_state": true}' >> ${LOG_FILE}
echo "
=====备份索引insuredsingle_v*完成======" >> ${LOG_FILE}

${CURL_CMD} -XPUT -uelastic:密码  "${Snap_API}/_snapshot/${STORE_NAME}/${SNAPSHOT_NAME_reinsurance}?wait_for_completion=true" -H 'Content-Type: application/json' -d'{"indices": "reinsurance_v*","ignore_unavailable": true,"include_global_state": true}' >> ${LOG_FILE}
echo "
=====备份索引reinsurance_v*完成======" >> ${LOG_FILE}

${CURL_CMD} -XPUT -uelastic:密码 "${Snap_API}/_snapshot/${STORE_NAME}/${SNAPSHOT_NAME_other_all}?wait_for_completion=true" -H 'Content-Type: application/json' -d'{"indices": "*,-.*,-printdoc_v*,-unicorn_v*,-insuredsingle_v*,-reinsurance_v*","ignore_unavailable": true,"include_global_state": true}' >> ${LOG_FILE}
echo "
=====备份剩余索引完成======" >> ${LOG_FILE}

#删除7天前老的快照
for snap_name in $(${CURL_CMD} -XGET -uelastic:密码  "${Snap_API}/_snapshot/${STORE_NAME2}/_all"  | python -m json.tool | grep '"snapshot":' | awk -F'[:",]' '{print $5}'|grep ${SNAPSHOT_PRE} | grep "${B_DATA}")
do
        ${CURL_CMD} -XDELETE -uelastic:密码 "${Snap_API}/_snapshot/${STORE_NAME2}/${snap_name}"
        if [ $? -eq 0 ];then
                echo "删除快照:${snap_name} success"  >> ${LOG_FILE}
        else
               echo "删除快照:${snap_name} fail"  >> ${LOG_FILE}
        fi
done

}

es_count=`cat ~/es_count.txt `

if [ $es_count -lt 8 ] 
then
	echo $es_count
	Full_snapshot  快照库1   快照库2
	echo `expr $es_count + 1 ` > ~/es_count.txt
elif [ $es_count -ge 8 ] && [ $es_count -lt 15 ]
then
	echo $es_count
	Full_snapshot  快照库2 快照库1
	echo `expr $es_count + 1 ` > ~/es_count.txt
else	
	echo $es_count	
	echo "set 1 to es_count.txt"
    echo 1 > ~/es_count.txt	
exit;
fi

标签:快照,NAME,elastic,S3,备份,echo,SNAPSHOT,true,es
From: https://www.cnblogs.com/z-uncle/p/17692783.html

相关文章

  • ElasticSearch+Kibana on K8s 讲解与实战操作(版本7.17.3)
    目录一、概述二、ElasticSearch节点类型与作用三、K8s集群部署四、ElasticSearchonK8s开始部署1)下载安装包2)构建镜像3)修改yaml编排4)开始部署5)测试6)elasticsearch-head5)卸载五、Kibana编排部署1)下载安装包2)构建镜像3)修改yaml编排4)开始部署5)测试验证6)卸载六、Elasticsearch7......
  • 构建高性能全文搜索引擎:Java与Elasticsearch
    在今天的应用程序中,全文搜索功能变得越来越重要。无论是在线商店、博客网站还是企业应用,用户都希望快速而准确地找到他们需要的信息。Elasticsearch是一个强大的全文搜索引擎,可以轻松应对这一需求。本文将向你展示如何使用Java与Elasticsearch构建高性能的全文搜索引擎。什么是Elas......
  • elastic索引管理-数据流
     8,数据流 数据流数据流允许您跨多个索引存储仅附加的时间序列数据,同时为您提供单个命名资源用于请求。数据流非常适合日志、事件、指标和其他连续生成的数据。您可以将索引和搜索请求直接提交到数据流。流自动将请求路由到存储流数据的支持索引。您可以使用索引生命周期管理(......
  • 代码备份
    importcv2importdlibimportthreadingimportqueueimportmathimporttimeimporttkinterastkfromPILimportImage,ImageTkimportosimportrandomimportnumpyasnpfromglobimportglobfromPILimportImage,ImageOpsimportmatplotlib.pyplotasp......
  • Centos3个虚拟机的导入
    教程:08-Centos操作系统的虚拟机导入_哔哩哔哩_bilibili安装包在该视频底下有链接。 1.点击编辑-->管理员权限-->点击NAT模式这一行然后更改网关2.点击NAT设置  3.配置Windows本地虚拟网卡-->找到网络连接 -->找到VMnet8然后右键点击属性 -->双击Internet协议......
  • Windows中安装Elasticsearch
    链接:https://pan.baidu.com/s/1-EsuGaw0_9ubw5_9AhRS2Q提取码:1hp4一,Elasticsearch环境准备elasticsearch-5.6.8.zip进行解压(安装目录随意)启动服务:   访问http://127.0.0.1:9200,显示如下:表明elasticsearch启动......
  • HTML5与CSS3实现动态网页(下)
    js完整的javascript是有ECMAScript(语法)BrowserObjects(DOMBOM)特性组成的。//单行注释/**/多行注释ECMASxript中的一切(变量函数名和操作符)都区分大小写1:什么是标识符变量函数属性的名字或者函的参数2:表示符命名规则有字符数字下划线或$符号......
  • HTML5与CSS3实现动态网页(下)
    js完整的javascript是有ECMAScript(语法)BrowserObjects(DOMBOM)特性组成的。//单行注释/**/多行注释ECMASxript中的一切(变量函数名和操作符)都区分大小写1:什么是标识符变量函数属性的名字或者函的参数2:表示符命名规则有字符数字下划线或$符号组成不能以......
  • 【前端】CSS3新特性
    目录一、前言二、伪元素选择器1、选择器2、注意事项3、代码示例三、伪元素清除浮动1、第一种伪元素清除浮动2、第二种伪元素清除浮动四、CSS3盒子模型1、box-sizing:content-box2、box-sizing:border-box五、CSS3图片模糊处理1、图片变模糊①、CSS3滤镜filter②、语法③、实例实现2......
  • ElasticSearch的常规增删改查操作
    一、Restful简介RESTFul:RepresentationalStateTransfer,中文意思:表现层状态转化。变现层指的是资源的表现层,这里的资源是指网络上的信息,比如一张图片,一段文本,一步电影,那么每个资源在网络上都有一个标识,可以理解为一个ID,每个资源都有一个ID去表示它,这个ID就称之为URL。当我们给了......