es快照管理

es快照管理,第1张

es快照管理

目录

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

创建快照库并修改权限:

mkdir /home/esbackup

chown -R es.es /home/esbackup

2、修改全部节点的配置文件

vi elasticsearch.yam

添加配置:path.repo: ["/home/esbackup"]

注意: /home/esbackup 这个路径必须确保集群所有节点都可以访问到

3、重启集群 4、相关辅助命令

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

5、创建快照相关命令

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 可以改变此行为。

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

6、快照恢复

        恢复快照的时候,记得要把原来的备份的指定索引删掉或关闭

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

7、快照恢复的同时还有附加的选项用来重命名索引

格式:

        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表示等待快照完成之后返回请求。不设置表示立即返回请求,然后后台恢复索引。

实例语句: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"}'

8、查看快照恢复的情况

1)查看全部快照恢复情况:

        curl -XGET -u elastic:123321 http://localhost:9200/_recovery

2)查看指定索引快照恢复情况:

        curl -XGET -u elastic:123321 http://localhost:9200/test_index/_recovery

9、删除 *** 作

1)删除指定快照:

        curl -XDELETE -u elastic:123321 http://localhost:9200/_snapshot/仓库名称/快照名称

2)删除指定仓库:

        curl -XDELETE -u elastic:123321 http://localhost:9200/_snapshot/仓库名称

10、备份和删除脚本

        我们用脚本来每天定时进行快照备份和定期删除

#!/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} >> $logfile
11、快照生成进度监控

        wait_for_completion 标记提供了一个监控的基础形式,但哪怕只是对一个中等规模的集群做快照恢复的时候,它都真的不够用。

curl -XGET http://localhost:9200/_snapshot/仓库名称/快照名称/_status

 执行返回结果:

{

        "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

                        }

                    },

                    ...

12、快照恢复进度监控

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

                }

            },

...

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5701096.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存