• 生活的道路一旦选定,就要勇敢地走到底,决不回头。——左拉
  • 坚强的信心,能使平凡的人做出惊人的事业。——马尔顿
  • 人不可有傲气,但不可无傲骨。 --徐悲鸿
  • 古之立大志者,不惟有超世之才,亦必有坚韧不拔之志。 --苏轼
  • 时间像海绵里的水,只要你愿意挤,总还是有的。 --鲁迅

elasticsearch索引通过S3协议备份快照

ELK zkinogg 7个月前 (11-18) 303次浏览 0个评论

一、仓库类型

# Elasticsearch支的持仓库类型
Respository             配置类型
Shared file system      "type": "fs"
Read-only URL           "type": "url"
S3                      "type": "s3"
HDFS                    "type": "hdfs"
Azure                   "type": "azure"
Google Cloud Storage    "type": "gcs"

二、执行快照的角色

它并没有权限创建存储库,恢复快照,或索引中进行搜索

snapshot_user

三、备份原理

#原理:
es的备份是增量备份,后一次的备份只会保存自前一次备份依赖变更的记录。备份操作不阻碍数据修改 操作,但是备份内容仅仅包括在snapshot process 启动时刻的记录。备份过程中变更的数据记录不在 备份内容中。集群中任何时刻,仅能进行一个snapshot operation。当有snapshot operation进行中 时,再提交备份会报错。备份过程中不会进行分片的reallocation操作。如果因为备份内容较多,导致备份时间过长时,可通过删除备份的方式取消备份操作,操作过程中产生的备份文件会自动清理掉。删除 备份会删除备份文件,但是若此删除的备份有被其他备份依赖的文件,则依赖的文件会保留。
1. 恢复完成后,当前集群与快照同名的索引、模板会被覆盖。在集群中存在,但快照中不存在的索
引,别名,模板不会被删除
2. 执行快照期间,块照的分片不能移动到另一个节点

四、依赖ceph的s3协议进行备份操作步骤

1.集群所有es节点安装s3存储库

# 1.离线下载es对应的版本包,如es版本为7.11.2则s3下载包也为repository-s3-7.11.2.zip

https://artifacts.elastic.co/downloads/elasticsearch-plugins/repository-s3/repository-s3-7.11.2.zip

# 2.离线安装
sudo bin/elasticsearch-plugin install file:///root/s3/repository-s3-7.11.2.zip

## 注:这里install后的参数路径一定要加file://不然会报错 

2.s3备份服务端创建对应bucket

s3cmd mb s3://elasticsearch

3.所有es节点配置s3 client

vim /etc/elasticsearch/elasticsearch.yml
s3.client.minio.endpoint: "http://172.16.160.xx:xxxx"

#注:这里地址和端口就写服务端s3对外的地址端口,可以先telnet测试下确认通之后再进行配置

##也可以不添加配置,根据集群情况而定,因为添加配置必须重启或reload才能生效

4.在每个es节点添加keystore配置

# 1.添加公钥
echo minio | /usr/share/elasticsearch/bin/elasticsearch-keystore add
s3.client.minio.access_key -xf

# 2.添加私钥
echo minioadmin | /usr/share/elasticsearch/bin/elasticsearch-keystore add
s3.client.minio.secret_key -xf

# 注:这里公私钥需要从s3服务端获取
## 服务端:ceph获取命令如下:
radosgw-admin user info --uid xxuser|grep -E 'access_key|secret_key'

## 如用minio的话直接在配置中获取公私钥及可

5.重启所有es节点

systemctl restart elasticsearch

## 注:这里重启节点主要是为了配置文件生效,keystore生效也可以不用重启,使用以下命令及可生效:
# 刷新keystore
POST _nodes/reload_secure_settings

6.配置Repository仓库

## 因为第3步配置后必须重启集群,如不选择做第3步添加es配置也可在如下命令中添加参数进行配置
PUT /_snapshot/ceph
{
"type" : "s3",
"settings" : {
"bucket" : "elasticsearch",
"client" : "ceph"
"endpoint": "http://192.168.31.102:9000"
}
}
##  注:这里bucket对应的就是s3服务端创建的bucket,endpoint就是s3服务端的地址+端口。如已做第3步,可以不加此行配置。

7.确认仓库是否创建成功

POST /_snapshot/仓库名/_verify

## 或返回如下则成功:
{
"nodes" : {
"f92SHdVRRQebVnG3dJfjcQ" : {
"name" : "node-1"
},
"kHZBO_h_Tf2SusEUfsrLoQ" : {
"name" : "node-2"
},
"yk2fjP-gQyWCYNBV9GMnIQ" : {
"name" : "node-3"
}
}
}

8.创建快照

wait_for_completion=true 等等初始化完成再返回
快照过程以非阻塞方式执行。可以继续针对正在创建快照的索引执行所有索引和搜索操作。但是
快照进程启动后添加到索引的记录将不会出现在快照中。
# 1.若选择将所有索引备份可执行:
PUT /_snapshot/my_backup/snapshot_1?wait_for_completion=true

##默认是将所有的poen 和started索引备份

# 2.若选择将指定索引备份可执行:
PUT /_snapshot/my_backup/snapshot_2
{
"indices": "index_1,index_2",
"ignore_unavailable": true, # 默认false,索引不存在报错
"include_global_state": false, # 排除集群状态
"metadata": {
"taken_by": "kimchy",
"taken_because": "backup before upgrading"
}
}
## 注:这里indices里可以写多个索引用逗号分隔
#### 注意:PUT /_snapshot/my_backup/snapshot_2这里‘snapshot_2’是唯一的,如果下次再执行不同索引的备份,必须用新的snashort name否则会报错。

9.查看正在运行的快照和状态

#1.查看正在运行的快照  
GET /_snapshot/ceph/_current

#2.查看快照任务进度:
GET _snapshot/ceph/snapshot_2/_status
#3.查看快照属性:
GET _snapshot/ceph/snapshot_2

10.快照恢复

1. 默认情况下,将恢复快照中的所有索引,并且不会还原群集状态
2. 可以同时恢复多个索引
3. 索引只有在关闭且分片数一样或者索引不存在的情况下才能被恢复,恢复之后自动打开


# 1.恢复snashort name名为snapshot_1所有的索引
POST /_snapshot/my_backup/snapshot_1/_restore


# 2.指定索引名称恢复
POST /_snapshot/my_backup/snapshot_1/_restore
{
"indices": "index_1,index_2",
"ignore_unavailable": true, #
"include_global_state": true,
"include_aliases": false, # 防⽌别名与关联索引⼀起恢复
"rename_pattern": "index_(.+)",
"rename_replacement": "restored_index_$1" # $1表示rename_pattern中第⼀个
括号内容,$2以此类推
}



#查看恢复状态
GET /_cat/recovery/<target_index>


## 注:这里snashort name必须和备份时的snashort name一一对应

极客公园 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:elasticsearch索引通过S3协议备份快照
喜欢 (2)
[17551054905]
分享 (0)

您必须 登录 才能发表评论!