elasticsearch 索引备份恢复
备份脚本 es_backup.sh :
#!/bin/bash
#备份昨天数据,删除30天前索引
host=`hostname`
address="xxx@xxx.com"
es_user=$1
es_passwd=$2
#获取昨天日期(备份使用)
date_yesterday=`date -d "-1 day" +%Y.%m.%d`
#获取当前时间戳
date_now=`date +%s`
#获取一个月前的日期
date_month_ago=`date -d@$[ $date_now - 2592000 ] "+%Y.%m.%d"`
for i in txxxx zhaoxxx #指定备份索引
do
#判断仓库是否存在,不存在则创建
code=`curl -XGET -u$es_user:$es_passwd -s -w "%{http_code}\n" http://127.0.0.1:9200/_snapshot/"$i" -o /dev/null -I`
[ ! -d /S3/elasticsearch/"$i" ] && /usr/bin/sudo mkdir /S3/elasticsearch/"$i" && /usr/bin/sudo chown -R elasticsearch.elasticsearch /S3/elasticsearch/
if [ "$code" -ne 200 ];then
curl -XPUT -u$es_user:$es_passwd http://127.0.0.1:9200/_snapshot/"$i" -d '
{
"type": "fs",
"settings": {
"location": "/S3/elasticsearch/'$i'"
}
} '
[ $? -eq 0 ]&& echo "创建仓库: $i"
else
echo "仓库:$i 已存在!"
fi
#备份昨天数据
curl -XPUT -u$es_user:$es_passwd http://127.0.0.1:9200/_snapshot/"$i"/"$i"-"$date_yesterday"?wait_for_completion=true -d '
{
"indices": "'$i'-'$date_yesterday'"
}'
[ $? -ne 0 ]&& echo "$time $host $i-$date_yesterday backup failed!" |mail -s "ES Backup Information" $address
#删除上个月当天的数据
curl -XDELETE -u$es_user:$es_passwd http://127.0.0.1:9200/"$i"-"$date_month_ago"|| echo "上个月前一天的数据不存在!"
done
恢复脚本 es_restore.sh:
#!/bin/bash
#恢复指定时间段内索引数据
es_user=$1
es_passwd=$2
while :
do
#读取用户输入
read -p "请输入你想要恢复的服务(eg: xxxxx, q 退出): " service #指定恢复数据的索引名
echo "输入为: $service "
if [ "$service" = "q" ];then
exit
fi while :
do
read -p "请输入开始的日期(eg: 2018-05-01, q 返回上一级):" start_date
if [ "$start_date" = "q" ];then
break
fi
read -p "请输入结束的日期(eg: 2018-05-30, q 返回上一级):" end_date
if [ "$end_date" = "q" ];then
break
fi
start_date_toSecond=`date -d $start_date +%s`
end_date_toSecond=`date -d $end_date +%s`
#收集所有日期
function gen_date {
index=0
while [ "$start_date_toSecond" -le "$end_date_toSecond" ]
do
curr_date=`date -d@$start_date_toSecond +%Y.%m.%d`
date_arr[index]=$curr_date
start_date_toSecond=$[ $start_date_toSecond+86400 ]
let index++
done
}
gen_date $start_date $end_date n=0
while [ "$n" -lt "${#date_arr[@]}" ]
do
echo ${date_arr[$n]}
code=`curl -XPOST -u$es_user:$es_passwd -s -w "%{http_code}\n" http://127.0.0.1:9200/_snapshot/"$service"/"$service"-${date_arr[$n]}/_restore?wait_for_completion=true -d '{"ignore_unavailable": "true", "include_global_state": false ,"index_settings": { "index.number_of_replicas": 0 }}' -o /dev/null`
let n++
echo "$code"
if [ "$code" -eq 200 ];then
echo "$service_${date_arr[$n]} 导入成功"
else
echo "$service_${date_arr[$n]} 导入失败"
fi
done
done
done
elasticsearch 索引备份恢复的更多相关文章
- 【ELK】Elasticsearch的备份和恢复
非原创,只是留作自己查询使用,转自http://keenwon.com/1393.html Elasticsearch的备份和恢复 备份 Elasticsearch的一大特点就是使用简单,api也比较 ...
- Elasticsearch系列---生产数据备份恢复方案
前言 生产环境中运行的组件,只要有数据存储,定时备份.灾难恢复是必修课,mysql数据库的备份方案已经非常成熟,Elasticsearch也同样有成熟的数据备份.恢复方案,我们来了解一下. 概要 本篇 ...
- 第五章 MySQL事务,视图,索引,备份和恢复
第五章 MySQL事务,视图,索引,备份和恢复 一.事务 1.什么是事务 事务是一种机制,一个操作序列,它包含了一组数据库操作命令,并且把所有的命令作为一个整体一起向系统提交或撤销操作请求.要么都执行 ...
- ES集群7.3.0设置快照,存储库进行索引备份和恢复等
说明:三台ES节点组成ES集群,一台kibana主机,版本均是7.3.0,白金试用版 官方地址:https://www.elastic.co/guide/en/elasticsearch/refere ...
- ElasticSearch 索引 剖析
ElasticSearch index 剖析 在看ElasticSearch权威指南基础入门中关于:分片内部原理这一小节内容后,大致对ElasticSearch的索引.搜索底层实现有了一个初步的认识. ...
- Elasticsearch snapshot 备份的使用方法 【备忘】
常见的数据库都会提供备份的机制,以解决在数据库无法使用的情况下,可以开启新的实例,然后通过备份来恢复数据减少损失.虽然 Elasticsearch 有良好的容灾性,但由于以下原因,其依然需要备份机制. ...
- ElasticSearch索引快照
参考文档:https://www.elastic.co/guide/en/elasticsearch/reference/5.1/modules-snapshots.html 备份数据之前,要创建一个 ...
- Xtrabackup原理及使用innobackupex进行MySQL数据库备份恢复
Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具. Xtrabackup中主要包含两个工 ...
- [转]PLSQL Developer备份恢复oracle数据
本文转自:http://www.cnblogs.com/iampkm/archive/2013/06/09/3128273.html 使用PL sql提供的功能可以快速的备份恢复oracle数据. 1 ...
随机推荐
- 如何在spring-boot web项目中启用swagger
swagger的三个项目及其作用 我们打开swagger的官网,会发现有三个swagger相关的项目,它们分别是 swagger-editor 作用是通过写代码,生成文档描述(一个json文件或其他格 ...
- Jmeter中使用SSH插件,连接远程linux机器执行命令
一.Why 在云主机测试中,需要使用SSH协议连接云主机进行相关操作 在python中使用paramiko库很好实现,在如果要使用jmeter做性能测试时,怎么做? 二.解决 既然原生jmeter没有 ...
- poj 3525
多边形内最大半径圆. 哇没有枉费了我自闭了这么些天,大概五天前我看到这种题可能毫无思路抓耳挠腮举手投降什么的,现在已经能1A了哇. 还是先玩一会计算几何,刷个几百道 嗯这个半平面交+二分就阔以解决.虽 ...
- electron+react
yarn create react-app electron-react cd electron-react yarn run eject // 修改react-app打包的路径 / -> ./ ...
- 批量数据的Excel导入
public void importIndexHistoryByCsv(String fileName) { logger.info("开始获取Csv文件导入到数据库,csv文件名为:&qu ...
- SQL基础语法提纲
一.SQL需知5点 1.SQL是Structured Query Language的缩写,是用来访问关系型数据库的,非过程化的,高级编程语言. 2.SQL具有语法高度综合统一,高度的非过程化,对集合进 ...
- Django之get请求url的参数
当get网址是127.0.0.1:8000/mysite10这种类型的网址时 有两种方法: 1,在urls的路由的urlpatterns里面这样定义路由 re_path('^mysite(\d+)$' ...
- Linux之cat的使用
基本介绍 工作原理 从标准输入读入要 cat 的文件列表,然后逐个打开,读入文件内容,再将内容输出到标准输出上. 使用场景 一次显示整个文件 从键盘创建一个文件 将几个文件合并为一个文件 将一个或多个 ...
- 深入理解Spring AOP之二代理对象生成
深入理解Spring AOP之二代理对象生成 spring代理对象 上一篇博客中讲到了Spring的一些基本概念和初步讲了实现方法,当中提到了动态代理技术,包含JDK动态代理技术和Cglib动态代理 ...
- Ubuntu虚拟机识别不了SD卡的解决办法
前提,你的虚拟机已经安装了VMware Tools. Step 1: 出现这种情况先查看计算机中的虚拟机的VMware USB Arbitration Service是否启用(注意是VMware US ...