设为首页 收藏本站
查看: 1426|回复: 0

[经验分享] ES(elasticsearch)备份还原脚本

[复制链接]

尚未签到

发表于 2019-1-29 08:07:55 | 显示全部楼层 |阅读模式
  在作es backup和es restore(导入)时,需要停es集群中的data节点,只保留master节点。
以下图说明,星号标识的为master节点,其他为data节点。
停两个节点之前,可以在页面上确认红色标示的docs值,再停两个data节点,检查运行着的节点其docs值与停之前一致。

  备份脚本es_backup.sh

#!/bin/bash
filename=`date +%Y%m%d%H`
backesFile=es$filename.tar.gz
mkdir -p  /xor/elasticsearch/es_snapshot
mkdir -p  /xor/elasticsearch/es_backup/es_dump
es_backup_dir=/xor/elasticsearch/es_backup
es_snapshot_dir=/xor/elasticsearch/es_snapshot
chmod -R 777 $es_snapshot_dir
curl -XPUT localhost:9200/_snapshot/es_snapshot -d '{"type":"fs","settings":{"location":"/xor/elasticsearch/es_snapshot"}}'
cd $es_backup_dir/es_dump
curl -XDELETE localhost:9200/_snapshot/es_snapshot/$filename?
echo -e '\nsleep 5\n'
sleep 10
curl -XPUT localhost:9200/_snapshot/es_snapshot/$filename?wait_for_completion=true
echo -e '\nsleep 5\n'
sleep 5
cp $es_snapshot_dir/* $es_backup_dir/es_dump -rf
cd ..
tar czf $backesFile  es_dump/
rm es_dump -rf
cd $es_snapshot_dir
rm  * -rf
echo -e '\nes data backup succeed!\n'
  还原脚本es_restore.sh

#!/bin/bash
filename=$1
backesFile=es$filename.tar.gz
mkdir -p  /xor/data2/packages/aqua/backup/es/es_snapshot
mkdir -p  /xor/data2/packages/aqua/backup/es/es_backup/es_dump
es_backup_dir=/xor/data2/packages/aqua/backup/es/es_backup
es_snapshot_dir=/xor/data2/packages/aqua/backup/es/es_snapshot
chmod -R 777 $es_snapshot_dir
curl -XPUT localhost:9200/_snapshot/es_snapshot -d '{"type":"fs","settings":{"location":"/xor/data2/packages/aqua/backup/es/es_snapshot"}}'
cd $es_backup_dir
tar zxvf $backesFile
rm $es_snapshot_dir/* -rf
cp $es_backup_dir/es_dump/* $es_snapshot_dir -rf
curl -XPOST localhost:9200/_all/_close
echo -e '\nsleep 5\n'
sleep 5
curl -XPOST localhost:9200/_snapshot/es_snapshot/$filename/_restore?
rm es_dump -rf
echo -e '\n es data restore succeed!'
  es_delete_by_query.sh
用于删除es的数据。脚本需要传四个参数,参数依次为表名、时间字段名、开始时间、结束时间,示例如下:
./es_delete_by_query.sh vhsession view_begin_time 2018-01-10 00:00:00
2018-01-10 18:00:00
,时间区间包含上下界,时间字段也可以只传日期

#!/bin/sh
# example: sh  ./es_delete_by_query.sh "bundle" "licensing_window_start" "2018-01-05 15:30:00" "2018-01-05 15:30:00"
# example: sh  ./es_delete_by_query.sh "bundle" "licensing_window_start" "2018-01-05" "2018-01-06"
doc_type=$1
datefield=$2
start_time=$3
end_time=$4
if [ ! -n "$start_time" ]; then
echo "the start_time is empty,please input again...."
exit 1
else
tt=`date -d "$start_time" +"%FT%T+0800"`
if [ 0 -eq $? ]
then
start_time=$tt
else
exit 1
fi      
fi
if [ ! -n "$end_time" ]; then
echo "the end_time is empty,please input again...."
exit 1
else
tt=`date -d "$end_time" +"%FT%T+0800"`
if [ 0 -eq $? ]
then
end_time=$tt
else
exit 1
fi   
fi
echo "args: doc_type = ${doc_type},datefield = ${datefield}, start_time = ${start_time}, end_time = ${end_time}"
echo "query count response : "
curl  -XPOST http://localhost:9200/aquapaassearch/${doc_type}/_count?pretty -d '
{
"query": {
"filtered": {
"filter": {
"bool": {
"must": {
"range": {
"'${datefield}'": {
"from": "'${start_time}'",
"to": "'${end_time}'",
"include_lower": true,
"include_upper": true
}
}
}
}
}
}
}
}'
read -p "please input '1'(otherwise not) to confirm if you need delete:" flag
if [ "1" = "$flag" ]; then
echo "delete response : "
curl  -XDELETE http://localhost:9200/aquapaassearch/${doc_type}/_query?pretty -d '
{
"query": {
"filtered": {
"filter": {
"bool": {
"must": {
"range": {
"'${datefield}'": {
"from": "'${start_time}'",
"to": "'${end_time}'",
"include_lower": true,
"include_upper": true
}
}
}
}
}
}
}
}'
echo "delete sucess!!!"
else
echo "confirmed just query count!!!"
fi



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-668924-1-1.html 上篇帖子: elasticsearch 压测优化后的配置 下篇帖子: elasticsearch验证模块x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表