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 ...
随机推荐
- Python yield 函数功能
python中有一个非常有用的语法叫做生成器,所利用到的关键字就是yield.有效利用生成器这个工具可以有效地节约系统资源,避免不必要的内存占用. 一段代码 def test_dict_sort(): ...
- Educational Codeforces Round 2
600A - Extract Numbers 20171106 字符串处理题,稍微注意点细节就能水过 #include<stdlib.h> #include<stdio.h&g ...
- 9、socket.io,websocket 前后端实时通信,(聊天室的实现)
websocket 一种通信协议 ajax/jsonp 单工通信 websocket 全双工通信 性能高 速度快 2种方式: 1.前端的websocket 2.后端的 socket.io 一.后端so ...
- 【Swing程序设计/常用面板】
面板也是一个Swing容器,可以作为容器容纳其他组件,但是它必须要被添加到其他容器中.Swing常见的面板是JPanel面板和JScrollPanel面板. JPanel面板可以聚集一些组件来布局. ...
- swust oj 962
括号匹配问题 1000(ms) 65535(kb) 3045 / 13375 假设表达式中允许包含两种括号:圆括号和方括号.编写一个算法判断表达式中的括号是否正确配对. 输入 由括号构成的字符串,包含 ...
- python全栈开发 * 12 知识点汇总 * 180530
12 知识点总结 装饰器进阶 ⼀. 通⽤装饰器的回顾1.开闭原则: 对增加功能开放. 对修改代码封闭2.装饰器的作⽤: 在不改变原有代码的基础上给⼀个函数增加功能3.通⽤装饰器的写法:def wrap ...
- Linux命令更新系统时间,更新所有文件的时间(转)
https://blog.csdn.net/ccj2020/article/details/76026606
- mybatis mapper-locations作用
application上配置了@MapperScan(扫面mapper类的路径)和pom.xml中放行了mapper.xml后,配置mapper-locations没有意义 查找后得知,如果mappe ...
- elastricsearch学习笔记
一.基础概念 Elasticsearch有几个核心概念.从一开始理解这些概念会对整个学习过程有莫大的帮助. 接近实时(NRT) Elasticsearch是一个接近实时的搜索平台.这意 ...
- RTOS 和中断之间要注意的
#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY 15 #define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRI ...