目录
1、准备工作
2、修改全部节点的配置文件
3、重启集群
4、相关辅助命令
5、创建快照相关命令
6、快照恢复
7、快照恢复的同时还有附加的选项用来重命名索引
8、查看快照恢复的情况
9、删除 *** 作
10、备份和删除脚本
11、快照生成进度监控
12、快照恢复进度监控
1、准备工作
挂载共享目录(也可以不进行挂载目录):
mount -t nfs 192.168.25.11:/home/es-backup /home/esbackup
创建快照库并修改权限:
2、修改全部节点的配置文件mkdir /home/esbackup
chown -R es.es /home/esbackup
3、重启集群 4、相关辅助命令vi elasticsearch.yam
添加配置:path.repo: ["/home/esbackup"]
注意: /home/esbackup 这个路径必须确保集群所有节点都可以访问到
5、创建快照相关命令1)观察集群节点数,查看重启之后的节点是否重新加入了集群:
curl -XGET -u elastic:123321 http://localhost:9200/_cat/nodes
2)master节点情况:
curl -XGET -u elastic:123321 http://localhost:9200/_cat/master
3)集群健康度:
curl -XGET -u elastic:123321 http://localhost:9200/_cat/health
1)查看所有仓库:
curl -XGET -u elastic:123321 http://localhost:9200/_snapshot/_all
2)查看指定仓库信息:
curl -XGET -u elastic:123321 http://localhost:9200/_snapshot/仓库名称
3)查看所有索引:
curl -XGET -u elastic:123321 http://localhost:9200/_cat/indices
4)查看所有快照:
curl -XGET -u elastic:123321 http://localhost:9200/_snapshot/仓库名称/_all
5)查看指定快照信息:
curl -XGET -u elastic:123321 http://localhost:9200/_snapshot/仓库名称/快照名称
6)创建备份仓库:
curl -XPUT -u elastic:123321 -H 'Content-Type: application/json' http://localhost:9200/_snapshot/esbackup -d '{"type": "fs", "settings": {"location": "/home/esbackup"}}'
7)修改仓库配置:
curl -XPOST -u elastic:123321 -H 'Content-Type: application/json' http://localhost:9200/_snapshot/esbackup -d '{"type": "fs", "settings": {"location": "/home/esbackup","max_restore_bytes_per_sec":"100mb","max_snapshot_bytes_per_sec":"100mb","compress":true}}'
注意:6)和7)中,put请求用来创建新仓库,post请求可以新增和修改现有仓库的配置。
参数说明:
type:fs 表示以快照的方式存储文件
location:仓库的地址(path.reop + location),共享文件系统路径必须确保集群所有节点都可以访问到
max_restore_bytes_per_sec:节点恢复速率(当从仓库恢复数据时)。默认20mb/s。
max_snapshot_bytes_per_sec:每个节点快照速率(当快照数据进入仓库时)。默认20mb/s。
compress:是否压缩,默认为是。
chunk_size:块大小,在快照过程中,大文件会被分解成块,该属性指定块的大小。1GB、500MB、5KB、500B,默认为null(不受块大小限制。)
readonly:让库只读,默认为false
8)备份指定索引:
curl -XPUT -u elastic:123321 -H 'Content-Type: application/json' http://localhost:9200/_snapshot/esbackup/snapshot_20220104 -d '{"indices": "test_index,test01_index","include_global_state":false,"ignore_unavailable":"true","partial":"false"}'
参数说明:
esbackup:表示仓库名称。
snapshot_20220104:表示快照名称(快照名称必须是小写)
indices:表示创建哪些索引的快照,空表示所有。
ignore_unavailable:忽略不存在的索引(不设置会快照请求会失败)
include_global_state:防止集群的全局状态被作为快照的一部分储存起来
wait_for_completion=true:参数指定是在初始化快照(默认)后立即返回请求还是等待快照完成,true表示等待快照完成之后返回请求。不设置表示进行后台创建快照,立即返回请求。
partial:默认情况下,如果快照红的1个或多个索引不是全部分片都可用会导致整个请求过程失败,将其设置为 true 可以改变此行为。
6、快照恢复9)异步方式备份全部索引:
curl -XPUT -u elastic:123321 http://localhost:9200/_snapshot/仓库名称/创建的快照名称?wait_for_completion=true
10)查看备份情况:
curl -XGET -u elastic:123321 http://localhost:9200/_snapshot/esbackup/snapshot_20220104/_status
或者:
curl -XGET -u elastic:123321 http://localhost:9200/_snapshot/esbackup/snapshot_20220104
恢复快照的时候,记得要把原来的备份的指定索引删掉或关闭
7、快照恢复的同时还有附加的选项用来重命名索引1)删除索引:
curl -XDELETE -u elastic:123321 http://localhost:9200/test_index
2)关闭索引:
curl -XPOST -u elastic:123321 http://localhost:9200/test_index/_close
3)快照恢复:
curl -XPOST -u elastic:123321 http://localhost:9200/_snapshot/esbackup/snapshot_20220104/_restore?wait_for_completion=true
格式:
curl -XPOST http://localhost:9200/_snapshot/esbackup/snapshot_20220104/_restore?wait_for_completion=true -d '{"indices": "test01_index,test02_index","ignore_unavailable": "true","include_global_state": false, "rename_pattern": "index_(.+)","rename_replacement": "restored_index_$1" }'
参数说明:
rename_pattern:查找所提供的模式能匹配上的正在恢复的索引。
rename_replacement:然后把它们重命名成替代的模式。
wait_for_completion=true:参数指定是在恢复快照后立即返回请求还是等待快照完成,true表示等待快照完成之后返回请求。不设置表示立即返回请求,然后后台恢复索引。
8、查看快照恢复的情况实例语句:curl -XPOST -u elastic:123321 -H 'Content-Type: application/json' http://localhost:9200/_snapshot/esbackup/snapshot_20220104/_restore -d '{"indices": "test-index", "rename_pattern": "test-index","rename_replacement":"restored_index"}'
9、删除 *** 作1)查看全部快照恢复情况:
curl -XGET -u elastic:123321 http://localhost:9200/_recovery
2)查看指定索引快照恢复情况:
curl -XGET -u elastic:123321 http://localhost:9200/test_index/_recovery
10、备份和删除脚本1)删除指定快照:
curl -XDELETE -u elastic:123321 http://localhost:9200/_snapshot/仓库名称/快照名称
2)删除指定仓库:
curl -XDELETE -u elastic:123321 http://localhost:9200/_snapshot/仓库名称
我们用脚本来每天定时进行快照备份和定期删除
#!/bin/bash # 执行快照备份 time=$(date "+%Y%m%d") logfile="/tmp/esbacklogs/"${time}".log" # -s 表示静音模式,不输出任何内容。 curl -s -u elastic:123321 -XPUT "http://localhost:9200/_snapshot/esbackup/snapshot_"${time} -H 'Content-Type: application/json' -d '{"indices": "test_index, test_index2"}' # 快照备份需要一定时间,60s后检查备份情况 sleep 60 echo "" curl -s -u elastic:123321 -XGET "http://localhost:9200/_snapshot/esbackup/snapshot_"${time} | grep "SUCCESS" >> $logfile if [ $? -eq 0 ] then echo "backup elasticsearch success" >> $logfile else echo "backup elasticsearch fail" >> $logfile fi echo "" # 删除10天前的快照 delete_time=$(date "+%Y%m%d" -d " -10 day") curl -s -u elastic:123321 -XDELETE "http://localhost:9200/_snapshot/esbackup/snapshot_"${delete_time} >> $logfile11、快照生成进度监控
wait_for_completion 标记提供了一个监控的基础形式,但哪怕只是对一个中等规模的集群做快照恢复的时候,它都真的不够用。
curl -XGET http://localhost:9200/_snapshot/仓库名称/快照名称/_status
执行返回结果:
12、快照恢复进度监控{
"snapshots": [
{
"snapshot": "snapshotname", // 快照名称
"repository": "repertoryName", // 仓库名称
"state": "IN_PROGRESS", // IN_PROGRESS表示正在运行中
"shards_stats": {
"initializing": 0, // 表示分片在检查集群状态看看自己是否可以被快照
"started": 1, // 表示数据正在被传输到仓库
"finalizing": 0, // 数据传输完成;分片现在在发送快照元数据
"done": 4, // 表示4个分片已完成
"failed": 0, // 表示失败数
"total": 5 // 表示总共5个分片
},
"stats": {
"number_of_files": 5,
"processed_files": 5,
"total_size_in_bytes": 1792,
"processed_size_in_bytes": 1792,
"start_time_in_millis": 1409663054859,
"time_in_millis": 64
},
"indices": {
"index_3": {
"shards_stats": {
"initializing": 0, //分片在检查集群状态看看自己是否可以被快照。这个一般是非常快的。
"started": 0, //数据正在被传输到仓库。
"finalizing": 0, //数据传输完成;分片现在在发送快照元数据。
"done": 5, //快照完成,
"failed": 0, //快照处理的时候碰到了错误,这个分片/索引/快照不可能完成了。检查你的日志获取更多信息。
"total": 5
},
"stats": {
"number_of_files": 5,
"processed_files": 5,
"total_size_in_bytes": 1792,
"processed_size_in_bytes": 1792,
"start_time_in_millis": 1409663054859,
"time_in_millis": 64
},
"shards": {
"0": {
"stage": "DONE",
"stats": {
"number_of_files": 1,
"processed_files": 1,
"total_size_in_bytes": 514,
"processed_size_in_bytes": 514,
"start_time_in_millis": 1409663054862,
"time_in_millis": 22
}
},
...
1)恢复的指定索引单独调用:
curl -XGET http://localhost:9200/
/_recovery 2)查看集群里所有索引,可能包括跟你的恢复进程无关的其他分片:
curl -XGET http://localhost:9200/_recovery
执行返回结果:
{
"sw_standard_index": { // 索引名称
"shards": [
{
"id": 3,
"type": "EXISTING_STORE", // 恢复的本子
"stage": "DONE", // 恢复的状态
"primary": true,
"start_time_in_millis": 1541733069072,
"stop_time_in_millis": 1541733069206,
"total_time_in_millis": 123,
"source": {},
"target": {
"id": "bRdT-iSkTD6T0HpQn2rOzw",
"host": "10.10.38.139",
"transport_address": "10.10.38.139:9300",
"ip": "10.10.38.139",
"name": "bRdT-iS"
},
"index": {
"size": {
"total_in_bytes": 42514,
"reused_in_bytes": 42514,
"recovered_in_bytes": 0,
"percent": "100.0%" // 完成了多少
},
"files": {
"total": 7,
"reused": 7,
"recovered": 0,
"percent": "100.0%"
},
"total_time_in_millis": 2,
"source_throttle_time_in_millis": 0,
"target_throttle_time_in_millis": 0
},
"translog": {
"recovered": 0,
"total": 0,
"percent": "100.0%",
"total_on_start": 0,
"total_time_in_millis": 100
},
"verify_index": {
"check_index_time_in_millis": 0,
"total_time_in_millis": 0
}
},
...
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)