ElasticSearch快照脚本
[toc]
# 创建快照仓库
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
1
2
3
4
5
2
3
4
5
脚本内容
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'"
}
}
'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# 根据指定快照进行快照恢复
snapshot_restore.sh
参数格式如下:
参数1 : ip:port
参数2 : 快照仓库名称
参数3 : 快照名称
参数4 : 是否等待阻塞完成后退出,默认否
例:sh snapshot_restor.sh 192.168.1.1:9200 jast_snapshot snapshot_20210101
1
2
3
4
5
6
2
3
4
5
6
脚本内容
#!/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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 查看快照恢复状态
snapshot_restore_status.sh
参数格式如下:
参数1 : ip:port
[参数2(不填写查询全部) : 索引名称]
例:sh snapshot_restore_status.sh 10.8.10.23:9200 operator_website_index
1
2
3
4
2
3
4
脚本内容
#!/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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
说明
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
}
} ]
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# 查看快照仓库
snapshot_warehouse_query.sh
参数格式如下:
参数1 : ip:port
[参数2 : 索引仓库名称]
例:sh snapshot_warehouse_query.sh 10.8.10.23:9200 jastsnapshot
1
2
3
4
2
3
4
脚本内容
#!/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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 创建快照
snapshot_create.sh
参数格式如下:
参数1 : ip:port
[参数2 : 快照仓库名称]
[参数3(不填写默认以格式:年月日时分秒,创建快照名称) : 快照名称]
例:sh snapshot_create.sh 10.8.10.23:9200 rbtsnapshot
1
2
3
4
5
2
3
4
5
脚本内容
#!/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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# 查看快照状态
snapshot_query.sh
参数格式如下:
参数1 : ip:port
参数2 : 快照仓库名称
[参数3(不填默认查全部) : 快照名称]
例:sh snapshot_query.sh 10.8.10.23:9200 rbtsnapshot snapshotname
1
2
3
4
5
2
3
4
5
脚本内容
#!/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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#
上次更新: 2023/08/17, 16:53:14