ES(elasticsearch)备份还原脚本

在作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

原文地址:http://blog.51cto.com/svsky/2122521

时间: 2024-09-28 19:00:18

ES(elasticsearch)备份还原脚本的相关文章

Linux系统备份还原脚本

\ #!/bin/sh #备份linux系统. #命令如:sh 当前脚本.sh /dev/sdax 备份文件名 #参数1:备份的盘,备份前先umount.如:/dev/sda1 #参数2:备份保存的文件名. if [ $# -ne 2 ]; then echo "请传入两个参数." exit 0 fi #当前日期,用于建立临时文件夹和备份文件. datename=`date +%Y%m%d_%H%M%S` #临时挂载的文件夹名称 tmpdir="/tmp/dir${daten

Bat脚本学习-4:Oracle自动备份还原脚本

从同事那弄到一份Oracle自动备份还原的脚本,看上去很强大,苦在bat语法不熟,查了半天文档,先弄明白了一小段 @echo off REM 在批处理中,我们可以用setloacl ENABLEDELAYEDEXPANSION这个命令来启用"延迟环境变量扩展" REM 在我们启用了"延迟环境变量扩展"后,当CMD在解释涵有嵌套格式的命令时,他会把嵌套的命令一条一条的先执行一次,然后再进行匹配操作 REM 这样我们的赋值操作就会完成.并且再"延迟环境变量扩展

PHP-数据库备份还原脚本

PHP数据库备份.还原 1. mydb.php //DB类2. backup.php //备份脚本 3. restore.php //还原脚本 1.数据库类 <?php class db{ var $linkid; var $sqlid; var $record; function db($host="localhost",$username="root",$password="",$database="mydb") {

sql 数据库备份还原脚本

/**功能:数据库备份*dbname:数据库名称*bakname:备份名称,包含完整路径*/use master BACKUP DATABASE dbname TO disk='c:\bakName' /**功能:数据库还原*@dbname:数据库名称*@bakname:备份名称,包含完整路径*/use master declare @dbname nvarchar(500) declare @bakname nvarchar(500)set @dbname ='dbname' set @bak

Bat脚本学习-6:Oracle自动备份还原脚本

这次注释没写多少,先跳过一些吧 ::2.数据库过期备份删除 echo. echo. echo 二.正在清除过期的备份文件-- REM wscript.echo是vbs语法,相当于alert REM >是特殊字符,所以放在 for 命令里面需要使用转义符号^>,包括^&也是转义的& REM //Nologo屏弊输出:Prevent logo display: No banner will be shown at execution time for /f "tokens

mongodb备份还原脚本

同步 echo off set time_dir=%date:~0,4%-%date:~5,2%-%date:~8,2% set bak_dir=mongo_na_world_svn2win_%time_dir% set mongo_dir=E:\MongoDb\mongodb-win32-i386-2.2.3 set fromdb=db_eragon_game_na_world %mongo_dir%\bin\mongodump.exe -h 192.168.102.237 -d %fromd

SQL SERVER完整、差异和事务日志备份及还原(脚本和GUI实现) [原创]

一.完整备份.差异备份和事务日志备份的脚本 --完整备份数据库 BACKUP DATABASE Test_Bak TO DISK = 'E:\20150609_75\bak\Test_bak_full.bak' WITH INIT --差异备份数据库 BACKUP DATABASE Test_Bak TO DISK = 'E:\20150609_75\bak\Test_bak_diff.bak' WITH INIT, DIFFERENTIAL --加上DIFFERENTIAL代表差异备份 --事

实战:INNOBACKUPEX for mysql 5.6自己主动还原脚本-v2

脚本再次更新,共享一下! #!/bin/sh # # 用法: # ./restore.sh /你备份文件的全路径 #[email protected] INNOBACKUPEX=innobackupex INNOBACKUPEX_PATH=/usr/bin/$INNOBACKUPEX TMP_LOG="/var/log/restore.$$.log" MY_CNF=/usr/local/mysql/my.cnf BACKUP_DIR=/backup # 你的备份主文件夹 FULLBAC

mysql innobackupex xtrabackup 大数据量 备份 还原(转)

原文:http://blog.51yip.com/mysql/1650.html 作者:海底苍鹰 大数据量备份与还原,始终是个难点.当MYSQL超10G,用mysqldump来导出就比较慢了.在这里推荐xtrabackup,这个工具比mysqldump要快很多. 一.Xtrabackup介绍 1,Xtrabackup是什么 Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品. Xtra