Elasticsearch索引数据的备份与恢复

1 背景说明
苍穹的可以将上机日志从数据库中转储到Elasticsearch中,由于这些日志属于生产业务日志数据,不能被清理和丢失的,需要做好备份。可以参考Elasticsearch官方指南-快照恢复:https://www.elastic.co/guide/en/elasticsearch/reference/current/snapshot-restore.html ,下文参考官方指南进行讲解和配置。
备注:Elasticsearch集群模式下,备份仓库路径需要使用共享存储,使每个节点都能共享到。
2 elasticsearch日志备份
2.1 添加备份仓库路径配置
在 config/elasticsearch.yml 文件中加入如下配置:
# 备份仓库的路径,可自定义 path.repo: /kingdee/backup/
配置完成后,需要重启elasticsearch服务: systemctl restart es
2.2 创建备份仓库
# curl -XPUT -H 'Content-Type: application/json' 'http://127.0.0.1:9200/_snapshot/EsBackup_zip' -u 用户名:密码 -d '{"type": "fs","settings": {"location":"备份仓库路径","compress": true}}'
成功后结果返回{"acknowledged":true}. 这时查看刚创建的仓库:
# curl -XGET 'http://127.0.0.1:9200/_snapshot?pretty'
正常结果返回:
{
"EsBackup_zip" : {
"type" : "fs",
"settings" : {
"compress" : "true",
"location" : "/kingdee/backup/compress_snapshot" #此文以该备份路径为例
}
}
}
2.3 备份指定索引数据
2.3.1 备份单个索引数据
假设要备份多个索引,以索引名: ierp-log-2022-06-13 为例
# curl -XPUT -H 'Content-Type: application/json' 'http://127.0.0.1:9200/_snapshot/EsBackup_zip/备份名' -d '{"indices": "ierp-log-2022-06-13"}' -u 用户名:密码
2.3.2 备份多个索引数据
假设要备份多个索引, 比如idx_1, idx_2, idx_3, 则可以:
# curl -XPUT -H 'Content-Type: application/json' 'http://127.0.0.1:9200/_snapshot/EsBackup_zip/snapshot_some_name' -d '{"indices": "idx_1,idx_2,idx_3"}' -u 用户名:密码
2.3.3 备份全部索引数据
假设要备份全部索引数据, 则可以:
# curl -XPUT -H 'Content-Type: application/json' 'http://127.0.0.1:9200/_snapshot/EsBackup_zip/snapshot_all' -u 用户名:密码
2.3.4 查看备份状态
# curl -XGET 'http://127.0.0.1:9200/_snapshot/EsBackup_zip/索引名?pretty' -u 用户名:密码

3 elasticsearch恢复备份
默认情况下,恢复请求会尝试恢复快照中的所有常规索引和常规数据流。在大多数情况下,您只需要从快照中恢复特定的索引或数据流。但是,您无法恢复现有的打开索引。
如果您要将数据恢复到预先存在的集群,请使用以下方法之一来避免与现有索引和数据流发生冲突:
· 删除和恢复
· 恢复时重命名
下面讲解恢复索引的操作步骤。
3.1 查看备份的索引
# curl -XGET 'http://127.0.0.1:9200/_snapshot?pretty' -u 用户名:密码
查看到备份路径后可以看到index-*文件备份了哪些索引,可以指定单个或多个索引进行恢复。

3.2 恢复备份索引数据
恢复索引前要确保目标es集群中没
Elasticsearch索引数据的备份与恢复
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



