ES的快照备份当前是存放在NAS下,考虑成本问题现在打算把快照备份到阿里云OSS下。
/aliyun/elasticsearch-repository-oss,此插件不支持OSS的归档存储,可以考虑使用低频访问存储(价格比标准存储实惠)
一、安装插件
1. 我们当前运行的es版本为5.5.2,所以需要选择对应的插件下载,ES5系列的插件下载地址/zhichen/elasticsearch-repository-oss/releases/download/v5.5.3/elasticsearch-repository-oss-5.5.3.zip,解压到/usr/share/elasticsearch/plugins (es默认插件安装位置,自行调整)
2. 插件为5.5.3,我们需要修改下
plugin-descriptor.properties文件的elasticsearch.version和version,改为自己es集群的版本/usr/share/elasticsearch/plugins
3. 重启es,加载新安装的插件。
二、阿里云上购买OSS
注意OSS归档存储不支持该插件
三、ES上创建仓库
PUT _snapshot/loges-backup-oss{"type": "oss", "settings": {"endpoint": "http://oss-cn-", "access_key_id": "xxxxx", "secret_access_key": "xxxxx", "chunk_size": "500mb", "bucket": "loges-backup", "compress": true }
支持的参数配置:
"base_path": "snapshot/" ,默认是根目录
"compress": true,是否压缩
"chunk_size": "500mb" ,上传的数据非常大, 我们可以限制snapshot过程中分块的大小,超过这个大小,数据将会被分块上传到OSS
"endpoint": "http://oss-cn-" , 根据你当前的地域节点调整,注意格式,要加上http://
四、ES快照相关命令
1.查看当前快照仓库信息
GET _snapshot
2.快照你的集群的时候指定备份哪些索引:
PUT _snapshot/loges-backup-oss/apilogs-{"indices": "apilogs-.10,apilogs-.11"}
3.要获得单个快照的信息,直接对仓库和快照名get查询
GET _snapshot/loges-backup-oss/apilogs-
4.查看所有的快照信息
GET _snapshot/loges-backup-oss/_all
5.删除快照
DELETE _snapshot/loges-backup-oss/apilogs-
6.从一个快照恢复索引数据,默认会恢复该快照下所有的索引
POST _snapshot/loges-backup-oss/apilogs-/_restore
7.附加的选项用来重命名索引。这个选项允许你通过模式匹配索引名称,然后通过恢复进程提供一个新名称。如果你想在不替换现有数据的前提下,恢复老数据来验证内容,或者做其他处理。让我们从快照里恢复单个索引并提供一个替换的名称
POST /_snapshot/loges-backup-oss/apilogs-/_restore{"indices": "index_1","rename_pattern": "index_(.+)","rename_replacement": "restored_index_$1" }
只恢复 index_1 索引,忽略快照中存在的其余索引。
查找所提供的模式能匹配上的正在恢复的索引。
然后把它们重命名成替代的模式。
8. 和快照类似, restore 命令也会立刻返回,恢复进程会在后台进行。如果你更希望你的 HTTP 调用阻塞直到恢复完成,添加 wait_for_completion 标记:
POST _snapshot/loges-backup-oss/apilogs-/_restore?wait_for_completion=true