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集群中没有存在相同的索引名,或者恢复时重命名索引名。
删除索引语法(支持通配符):
# curl -XDELETE "http://127.0.0.1:9200/索引名" -u 用户名:密码
3.2.1 恢复单个索引数据
恢复单个索引:
# curl -XPOST -H 'Content-Type: application/json' 'http://127.0.0.1:9200/_snapshot/EsBackup_zip/备份名/_restore' -d '{"indices": "索引名"}' -u elastic:Cosmic@2020
3.2.2 恢复索引并重命名索引名
# curl -XPOST -H 'Content-Type: application/json' 'http://127.0.0.1:9200/_snapshot/EsBackup_zip/备份名/_restore' -d '{"indices": "原索引名","rename_pattern": "原索引名","rename_replacement": "新索引名"}' -u 用户名:密码
参数说明:
indices:只恢复匹配的索引,忽略快照中存在的其他索引,可支持通配符。
rename_pattern:查找所提供的模式能匹配上的正在恢复的索引。用来正则匹配要恢复的索引,并且重命名
rename_replacement:将匹配的索引重命名成替代的模式。用来正则匹配要恢复的索引,并且重命名
3.2.3 恢复整个快照索引数据
# curl -XPOST -H 'Content-Type: application/json' 'http://127.0.0.1:9200/_snapshot/EsBackup_zip/snapshot_all/_restore' -d '{"indices": "索引名*"}' -u 用户名:密码
查看恢复状态:
# curl -XGET "http://127.0.0.1:9200/_snapshot/EsBackup_zip/备份名/_status" -u 用户名:密码
注:由于es创建的用户信息会存放在.security-6索引中,这个索引不能删除,所以在恢复时要排除该索引名的恢复
即只恢复指定索引名数据,下面以索引名为zy-*开头的索引数据为例,注意不要恢复“.security-6”的索引,这个索引记录了用户认证信息,不能被删除
# curl -XPOST -H 'Content-Type: application/json' 'http://127.0.0.1:9200/_snapshot/EsBackup_zip/snapshot_all/_restore' -d '{"indices": "zy-*"}' -u 用户名:密码
查看索引名:
# curl http://127.0.0.1:9200/_cat/indices?v -u 用户名:密码
已经恢复完成
Elasticsearch索引数据的备份与恢复
本文2024-09-23 01:13:51发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-144611.html