ElasticSearch快照脚本

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: ElasticSearch快照脚本

创建快照仓库

snapshot_warehouse_create.sh

参数格式如下:
 参数1 :  ip:port 
 参数2 :  快照仓库名称 
 参数3 :  快照本地存储目录  
 例:sh create_snapshot_warehouse.sh 10.8.10.23:9200  jast_snapshot_warehouse /home/es/data

脚本内容

ll#!/bin/bash
errorL="\033[31m"
errorR="\033[0m"

successL="\033[32m"
successR="\033[0m"


# 参数1 :  ip:port
# 参数2 :  快照仓库名称
# 参数3 :  快照本地存储目录,注意:这里快照本地存储目录必须在elasticsearch.yml中配置 path.repo: ["/home/es/snapshot"]

# ip
ip=$1
# 快照仓库名称
snapshot_warehouse_name=$2
# 快照本地存储目录
snapshot_local_dir=$3

echo 
if [ -z $ip ] || [ -z $snapshot_warehouse_name ] || [ -z $snapshot_local_dir ]; then
    echo -e $errorL'执行失败已退出,参数格式如下:\n 参数1 :  ip:port \n 参数2 :  快照仓库名称 \n 参数3 :  快照本地存储目录  \n 例:sh create_snapshot_warehouse.sh 10.8.10.23:9200  jast_snapshot_warehouse /home/es/data'$errorR
    exit 1
fi

echo -e "执行命令:\ncurl -X POST http://$ip/_snapshot/$snapshot_warehouse_name -H 'Content-Type: application/json' -d '
{ 
  \"type\":\"fs\", 
  \"settings\": { 
    \"compress\": true, 
    \"location\": \"$snapshot_local_dir\"
  } 
} 
'
"

curl -X POST http://$ip/_snapshot/$snapshot_warehouse_name -H 'Content-Type: application/json' -d '
{ 
  "type":"fs", 
  "settings": { 
    "compress": true, 
    "location": "'$snapshot_local_dir'"
  } 
} 
'

根据指定快照进行快照恢复

snapshot_restore.sh

参数格式如下:
 参数1 :  ip:port 
 参数2 :  快照仓库名称 
 参数3 :  快照名称 
 参数4 :  是否等待阻塞完成后退出,默认否
 例:sh snapshot_restor.sh 192.168.1.1:9200 jast_snapshot snapshot_20210101

脚本内容

#!/bin/bash
errorL="\033[31m"
errorR="\033[0m"

successL="\033[32m"
successR="\033[0m"

# 参数1 :  ip:port
# 参数2 :  快照仓库名称
# 参数3 :  快照名称
# 参数4 :  是否等待阻塞完成后退出,默认否

# ip
ip=$1
# 快照仓库名称
snapshot_warehouse_name=$2
# 快照名称
snapshot_name=$3

if [ -z $ip ] || [ -z $snapshot_warehouse_name ] || [ -z $snapshot_name ]; then
    echo -e $errorL'执行失败已退出,参数格式如下:\n 参数1 :  ip:port \n 参数2 :  快照仓库名称 \n 参数3 :  快照名称 \n 参数4 :  是否等待阻塞完成后退出,默认否\n 例:sh snapshot_restor.sh 192.168.1.1:9200 jast_snapshot snapshot_20210101'$errorR
    exit 1
fi


echo "执行命令:http://$ip/$snapshot_warehouse_name/$snapshot_name/_restore"

curl -X POST http://$ip/_snapshot/$snapshot_warehouse_name/$snapshot_name/_restore

查看快照恢复状态

snapshot_restore_status.sh

参数格式如下:
 参数1 :  ip:port 
 [参数2(不填写查询全部) :  索引名称] 
 例:sh snapshot_restore_status.sh 10.8.10.23:9200 operator_website_index

脚本内容

#!/bin/bash
errorL="\033[31m"
errorR="\033[0m"

successL="\033[32m"
successR="\033[0m"

# 参数1 :  ip:port
# [参数2 :  索引名称]

# ip
ip=$1
# 索引名称
index_name=$2

echo 
if [ -z $ip ]  ; then
    echo -e $errorL'执行失败已退出,参数格式如下:\n 参数1 :  ip:port \n [参数2(不填写查询全部) :  索引名称] \n 例:sh snapshot_restore_status.sh 10.8.10.23:9200 operator_website_index'$errorR
    exit 1
fi


echo "执行命令:http://$ip/$snapshot_warehouse_name/$snapshot_name/_restore"

if [ -z $index_name ]; then
    curl -X GET http://$ip/_recovery?pretty
else
    curl -X GET http://$ip/$index_name/_recovery?pretty
fi

说明

type 字段告诉你恢复的本质;这个分片是在从一个快照恢复。
source 哈希描述了作为恢复来源的特定快照和仓库。
percent 字段让你对恢复的状态有个概念。这个特定分片目前已经恢复了 94% 的文件;它就快完成了。
{
  "restored_index_3" : {
    "shards" : [ {
      "id" : 0,
      "type" : "snapshot", 
      "stage" : "index",
      "primary" : true,
      "start_time" : "2014-02-24T12:15:59.716",
      "stop_time" : 0,
      "total_time_in_millis" : 175576,
      "source" : { 
        "repository" : "my_backup",
        "snapshot" : "snapshot_3",
        "index" : "restored_index_3"
      },
      "target" : {
        "id" : "ryqJ5lO5S4-lSFbGntkEkg",
        "hostname" : "my.fqdn",
        "ip" : "10.0.1.7",
        "name" : "my_es_node"
      },
      "index" : {
        "files" : {
          "total" : 73,
          "reused" : 0,
          "recovered" : 69,
          "percent" : "94.5%" 
        },
        "bytes" : {
          "total" : 79063092,
          "reused" : 0,
          "recovered" : 68891939,
          "percent" : "87.1%"
        },
        "total_time_in_millis" : 0
      },
      "translog" : {
        "recovered" : 0,
        "total_time_in_millis" : 0
      },
      "start" : {
        "check_index_time" : 0,
        "total_time_in_millis" : 0
      }
    } ]
  }
}

查看快照仓库

snapshot_warehouse_query.sh

参数格式如下:
 参数1 :  ip:port 
 [参数2 :  索引仓库名称] 
 例:sh snapshot_warehouse_query.sh 10.8.10.23:9200 jastsnapshot

脚本内容

#!/bin/bash
errorL="\033[31m"
errorR="\033[0m"

successL="\033[32m"
successR="\033[0m"

# 参数1 :  ip:port
# [参数2 :  快照仓库名称]

# ip
ip=$1
# 快照仓库名称
snapshot_warehouse_name=$2

echo 
if [ -z $ip ]  ; then
    echo -e $errorL'执行失败已退出,参数格式如下:\n 参数1 :  ip:port \n [参数2 :  快照仓库名称] \n 例:sh snapshot_warehouse_query.sh 10.8.10.23:9200 jastsnapshot'$errorR
    exit 1
fi



if [ -z $snapshot_warehouse_name ]; then
    echo "执行命令:http://$ip/_snapshot?pretty"
    curl -X GET http://$ip/_snapshot?pretty
else
    echo "执行命令:http://$ip/_snapshot/$snapshot_warehouse_name?pretty"
    curl -X GET http://$ip/_snapshot/$snapshot_warehouse_name?pretty
fi

创建快照

snapshot_create.sh

参数格式如下:
 参数1 :  ip:port 
 [参数2 :  快照仓库名称]
 [参数3(不填写默认以格式:年月日时分秒,创建快照名称) :  快照名称]
 例:sh snapshot_create.sh 10.8.10.23:9200 rbtsnapshot

脚本内容

#!/bin/bash
# 创建快照
errorL="\033[31m"
errorR="\033[0m"

successL="\033[32m"
successR="\033[0m"


# 参数1 :  ip:port
# 参数2 :  快照仓库名称
# [参数3(不填写默认以格式:年月日时分秒,创建快照名称) :  快照名称]
# [参数4 : 指定索引快照,多个索引逗号分隔]

# ip
ip=$1
# 快照仓库名称
snapshot_warehouse_name=$2
# 快照名称
snapshot_name=$3
# 指定索引快照
snapshot_indices=$4

echo 
if [ -z $ip ] || [ -z $snapshot_warehouse_name ] ; then
    echo -e $errorL'执行失败已退出,参数格式如下:\n 参数1 :  ip:port \n [参数2 :  快照仓库名称]\n [参数3(不填写默认以格式:年月日时分秒,创建快照名称) :  快照名称]\n [参数4 : 指定索引快照,多个索引逗号分隔]\n 例:sh snapshot_create.sh 10.8.10.23:9200 rbtsnapshot'$errorR
    exit 1
fi



if [ -z $snapshot_name ] ; then
    current_time=$(date "+%Y%m%d%H%M%S")
    echo -e "执行命令:curl -X PUT http://$ip/_snapshot/$snapshot_warehouse_name/$current_time  -H 'Content-Type: application/json' -d '
    { 
      \"ignore_unavailable\": true,
      \"include_global_state\": true
    } 
    '"
    echo -e $successL"快照名称:$current_time"$successR
    curl -X PUT http://$ip/_snapshot/$snapshot_warehouse_name/$current_time  -H 'Content-Type: application/json' -d '
    { 
      "ignore_unavailable": true,
      "include_global_state": true
    } 
    '
else
  if [ -z $snapshot_indices ]; then
    echo -e "执行命令:curl -X PUT http://$ip/_snapshot/$snapshot_warehouse_name/$snapshot_name  -H 'Content-Type: application/json' -d '
    { 
      \"ignore_unavailable\": true,
      \"include_global_state\": true
    } 
    '"
    echo -e $successL"快照名称:$snapshot_name"$successR
    curl -X PUT http://$ip/_snapshot/$snapshot_warehouse_name/$snapshot_name  -H 'Content-Type: application/json' -d '
    { 
      "ignore_unavailable": true,
      "include_global_state": true
    } 
    '
  else
    echo -e "执行命令:curl -X PUT http://$ip/_snapshot/$snapshot_warehouse_name/$snapshot_name  -H 'Content-Type: application/json' -d '
    { 
      \"indices\": \"$snapshot_indices\",
      \"ignore_unavailable\": true,
      \"include_global_state\": true
    } 
    '"
    echo -e $successL"快照名称:$snapshot_name"$successR
    curl -X PUT http://$ip/_snapshot/$snapshot_warehouse_name/$snapshot_name  -H 'Content-Type: application/json' -d '
    { 
      "indices": "'$snapshot_indices'",
      "ignore_unavailable": true,
      "include_global_state": true
    } 
    '
  fi
fi

查看快照状态

snapshot_query.sh

参数格式如下:
 参数1 :  ip:port 
 参数2 :  快照仓库名称
 [参数3(不填默认查全部) :  快照名称]
 例:sh snapshot_query.sh  10.8.10.23:9200 rbtsnapshot snapshotname

脚本内容

#!/bin/bash
# 查看快照状态
errorL="\033[31m"
errorR="\033[0m"

successL="\033[32m"
successR="\033[0m"


# 参数1 :  ip:port
# 参数2 :  快照仓库名称
# [参数3(不填默认查全部) :  快照名称]

# ip
ip=$1
# 快照仓库名称
snapshot_warehouse_name=$2
# 快照名称
snapshot_name=$3

if [ -z $ip ] || [ -z $snapshot_warehouse_name ]; then
    echo -e $errorL'执行失败已退出,参数格式如下:\n 参数1 :  ip:port \n 参数2 :  快照仓库名称\n [参数3(不填默认查全部) :  快照名称]\n 例:sh snapshot_query.sh  10.8.10.23:9200 rbtsnapshot snapshotname'$errorR
    exit 1
fi

if [ -z $snapshot_name ]; then  
  echo "执行命令:http://$ip/_snapshot/$snapshot_warehouse_name/_all?pretty"
  curl -X GET http://$ip/_snapshot/$snapshot_warehouse_name/_all?pretty
else
  echo "执行命令:http://$ip/_snapshot/$snapshot_warehouse_name/$snapshot_name?pretty"
  curl -X GET http://$ip/_snapshot/$snapshot_warehouse_name/$snapshot_name?pretty
fi

echo "执行命令:http://$ip/_snapshot/$snapshot_warehouse_name/$snapshot_name?pretty"
curl -X GET http://$ip/_snapshot/$snapshot_warehouse_name/$snapshot_name?pretty
相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
7月前
|
存储 Linux
ElasticSearch集群快照
ElasticSearch集群快照
419 2
|
7月前
|
Java 关系型数据库 MySQL
Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
【4月更文挑战第12天】Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
675 3
|
6月前
|
缓存 监控 安全
深入解析Elasticsearch中脚本原理
深入解析Elasticsearch中脚本原理
|
7月前
|
存储 数据处理 索引
Elasticsearch 8.X 小技巧:使用存储脚本优化数据索引与转换过程
Elasticsearch 8.X 小技巧:使用存储脚本优化数据索引与转换过程
105 6
|
7月前
|
存储 API
Elasticsearch快照备份与恢复 - 蓝易云
以上步骤可以帮助你在Elasticsearch中实现快照备份和恢复。注意,这些操作可能需要特定的权限和配置,所以在进行操作前,确保你具备足够的权限并已正确配置Elasticsearch。
124 0
|
7月前
|
关系型数据库 MySQL Java
Elasticsearch【问题记录 01】启动&停止服务的2类方法及 java.nio.file.AccessDeniedException: xx/pid 问题解决(含启停shell脚本)
Elasticsearch【问题记录 01】启动&停止服务的2类方法及 java.nio.file.AccessDeniedException: xx/pid 问题解决(含启停shell脚本)
168 0
|
Shell 索引 Perl
通过shell脚本统计elasticsearch indices每天的数量以及大小
通过shell脚本统计elasticsearch indices每天的数量以及大小
62 0
|
Java 对象存储 流计算
阿里云ElasticSearch迁移-基于OSS全增量快照
阿里云ElasticSearch迁移-基于OSS全增量快照
阿里云ElasticSearch迁移-基于OSS全增量快照
|
存储 JSON Java
【Elasticsearch】学好Elasticsearch系列-脚本查询
【Elasticsearch】学好Elasticsearch系列-脚本查询
467 0
|
测试技术 对象存储 索引
阿里云ElasticSearch从OSS快照恢复总消耗时长统计方法
阿里云ElasticSearch从OSS快照恢复包含其他云厂商ES实例或本地IDC的ES实例中所有的索引,GET /_recovery包含独立索引从快照恢复的开始及结束时长,本方法统计ES实例级别的所有索引快照恢复时间,包含手动输入GET /_recovery及http请求两种信息获取方式。