Elasticsearch7.7快照创建并备份至OSS及还原

前言

       由于之前elasticsearch出现崩溃,导致索引被删除,只能恢复三天内的数据,因此需要创建快照进行备份,目标至少快速恢复一个月内的数据。

配置过程中原先的7.3版本的repository-s3插件默认使用path-style的方式访问oss,查看阿里云OSS帮助文档告知用户S3的插件默认使用path-style,而阿里云仅支持virtual hosted,具体如下:

由于旧版的插件原因,导致无法正常备份快照到阿里云的oss,从7.4版本开始AWS提供了一个参数,默认使用virtual hosted方式,故升级到7.7版本。

插件配置

安装repository-s3

bin/elasticsearch-plugin install repository-s3

安装成功后提示repository-s3 installed,插件安装完成后需要重启elasticsearch,才能加载。

到阿里云后台生成AccessKey和SecretKey,执行如下命令,将key添加到elasticsearch.keystore

bin/elasticsearch-keystore add s3.client.default.access_key
bin/elasticsearch-keystore add s3.client.default.secret_key

若没有安装插件,执行添加key会报命令不存在,key添加完成后需要再次重启elasticsearch,才能生效。

快照执行步骤

(1)创建快照仓库

curl -XPUT 'http://10.10.10.1:9200/_snapshot/elk_backup' -H 'Content-Type: application/json' -d '{"type":"s3", "settings":{"bucket":"elkdata","endpoint":"oss-cn-hangzhou-internal.aliyuncs.com","compress":true,"disable_chunked_encoding":true,"base_path":"elkdata","max_snapshot_bytes_per_sec":"500mb","max_restore_bytes_per_sec":"500mb"}}'

参数说明:

type:指定快照仓库类型为S3,也就是oss

bucket:指定oss的bucket名称(阿里云上查看)

endpoint:指定oss访问域名(阿里云上查看)

compress:是否压缩(默认开启压缩,只压缩元数据文件,索引数据文件不压缩)

disable_chunked_encoding:是否禁用HTTP服务器响应的分块编码

base_path:指定bucket内的存放目录

max_snapshot_bytes_per_sec:在仓库单个节点上创建快照的最大速率(默认40mb)

max_restore_bytes_per_sec:在仓库单个节点上还原快照的最大速率(默认40mb)

(2)创建快照

curl -XPUT 'http://10.10.10.1:9200/_snapshot/elk_backup/elkdata?wait_for_completion=true' -H 'Content-Type: application/json' -d '{"indices":"test-20200529","ignore_unavailable":true,"include_global_state":false}'

参数说明:

wait_for_completion:是否等待快照完成后返回

indices:指定要创建快照的索引,如有多个索引使用英文逗号隔开(如index1,index2)

ignore_unavailable:忽略不存在的索引

include_global_state:防止集群全局状态被被存储为快照

(3)快照恢复

curl -XPOST 'http://10.10.10.1:9200/_snapshot/elk_backup/elkdata/_restore' -H 'Content-Type: application/json' -d '{"indices":"test-20200529"}'

(4)查看快照状态

查看仓库列表

curl -XGET 'http://10.10.10.1:9200/_snapshot/_all?pretty=true'

查看指定仓库下的所有快照状态

curl -XGET 'http://10.10.10.1:9200/_snapshot/elk_backup/_all?pretty=true'

查看指定仓库下指定快照状态

curl -XGET 'http://10.10.10.1:9200/_snapshot/elk_backup/elkdata/_all?pretty=true'

查看指定仓库下快照执行状态

curl -XGET 'http://10.10.10.1:9200/_snapshot/elk_backup/_status?pretty=true'

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章