Elasticsearch集群数据备份与恢复的方法是什么
本篇内容主要讲解“Elasticsearch集群数据备份与恢复的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Elasticsearch集群数据备份与恢复的方法是什么”吧!
创新互联是一家集网站建设,蒲城企业网站建设,蒲城品牌网站建设,网站定制,蒲城网站建设报价,网络营销,网络优化,蒲城网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
简介
Elasticsearch 拥有副本机制来保障集群的高可用,然而无法解决如下情况的数据丢失:
主副本所在机器存储全部损坏。
误删除索引数据。
升级失败,数据无法回滚。
定期对数据做备份,按需恢复可以很好的解决如上问题。
Elasticsearch 提供了 Snapshot 和 Restore API 用于对集群数据完成备份与恢复。
数据备份的过程可以简单理解成将本地数据文件同步到远程仓库(repository) 的过程。
支持全量和增量备份。
repository 常见有如下类型: fs / S3 / HDFS / Azure / Google Cloud Storage。
实战
1 创建原始索引并导入数据
PUT _template/blog-template { "index_patterns": [ "blog-*" ], "settings": { "number_of_shards": 3, "number_of_replicas": 1 }, "mappings": { "dynamic_templates": [ { "integers": { "match": "int_*", "mapping": { "type": "integer" } } }, { "strings": { "match_mapping_type": "string", "mapping": { "type": "keyword", "ignore_above": 256 } } } ], "properties": { "title": { "type": "text" } } } } PUT blog-test POST blog-test/_bulk {"index":{}} {"title":"elasticsearch best practice","author_firstname":"tony","author_lastname":"song","tags":"elasticsearch ,logstash","int_age":18,"locale":"zh,en"} {"index":{}} {"title":"elastic stack release V5","author_firstname":"shay","author_lastname":"banon","tags":"elk ,elasticsearch,release","int_age":28,"locale":"zhc,en"} {"index":{}} {"title":"kibana tutorial","author_firstname":"zen","author_lastname":"wei","tags":"","int_age":38,"locale":"zhc,en"} GET blog-test GET blog-test/_search
2 修改elasticsearch配置文件
修改 elasticsearch.yml 配置文件,增加如下配置:
path.repo: ["/home/elastic/backup"]
重启elasticsearch进程,查看创建的repo:
GET _cluster/settings?include_defaults&filter_path=*.path.repo #输出结果: { "defaults" : { "path" : { "repo" : [ "/home/elastic/backup" ] } } }
3 创建关联 repository
#创建关联 repository PUT /_snapshot/my_fs_backup { "type": "fs", "settings": { "location": "/home/elastic/backup/my_fs_backup", "compress": true } }
查看创建的关联:
GET _snapshot/my_fs_backup #输出结果: { "my_fs_backup" : { "type" : "fs", "settings" : { "compress" : "true", "location" : "/home/elastic/backup/my_fs_backup" } } }
查看在哪个node上创建了关联:
POST _snapshot/my_fs_backup/_verify #输出结果 { "nodes" : { "pMrJwVGSQcSgeTZdh71QRw" : { "name" : "node1" } } }
4 执行 snapshot
indices
:做快照的索引。wait_for_completion=true
:是否等待完成快照后再响应,如果为true会等快照完成后才响应。(默认为false,不等快照完成立即响应)ignore_unavailable
: 设置为true时,当创建快照时忽略不存在的索引。include_global_state
: 设置为false时,当某个索引所有的主分片不是全部的都可用时,可以完成快照。
#创建snapshot_1对blog-test索引做快照 PUT /_snapshot/my_fs_backup/snapshot_1?wait_for_completion=true { "indices": "blog-test", "ignore_unavailable": true, "include_global_state": false }
查看创建的快照:
GET /_snapshot/my_fs_backup/snapshot_* #GET /_snapshot/my_fs_backup/_all 看所有的 #输出结果: { "snapshots" : [ { "snapshot" : "snapshot_1", "uuid" : "FEbAt3BiR1SAiBkO7pfoZg", "version_id" : 7020199, "version" : "7.2.1", "indices" : [ "blog-test" ], "include_global_state" : false, "state" : "SUCCESS", "start_time" : "2021-02-06T03:28:40.001Z", "start_time_in_millis" : 1612582120001, "end_time" : "2021-02-06T03:28:40.213Z", "end_time_in_millis" : 1612582120213, "duration_in_millis" : 212, "failures" : [ ], "shards" : { "total" : 3, "failed" : 0, "successful" : 3 } } ] }
查看快照状态:
GET _snapshot/my_fs_backup/snapshot_1/_status #输出结果: { "snapshots" : [ { "snapshot" : "snapshot_1", "repository" : "my_fs_backup", "uuid" : "FEbAt3BiR1SAiBkO7pfoZg", "state" : "SUCCESS", "include_global_state" : false, "shards_stats" : { "initializing" : 0, "started" : 0, "finalizing" : 0, "done" : 3, "failed" : 0, "total" : 3 }, "stats" : { "incremental" : { "file_count" : 12, "size_in_bytes" : 15608 }, "total" : { "file_count" : 12, "size_in_bytes" : 15608 }, "start_time_in_millis" : 1612582120074, "time_in_millis" : 108 }, "indices" : { "blog-test" : { "shards_stats" : { "initializing" : 0, "started" : 0, "finalizing" : 0, "done" : 3, "failed" : 0, "total" : 3 }, "stats" : { "incremental" : { "file_count" : 12, "size_in_bytes" : 15608 }, "total" : { "file_count" : 12, "size_in_bytes" : 15608 }, "start_time_in_millis" : 1612582120074, "time_in_millis" : 108 }, "shards" : { "0" : { "stage" : "DONE", "stats" : { "incremental" : { "file_count" : 4, "size_in_bytes" : 5104 }, "total" : { "file_count" : 4, "size_in_bytes" : 5104 }, "start_time_in_millis" : 1612582120143, "time_in_millis" : 39 } }, "1" : { "stage" : "DONE", "stats" : { "incremental" : { "file_count" : 4, "size_in_bytes" : 5265 }, "total" : { "file_count" : 4, "size_in_bytes" : 5265 }, "start_time_in_millis" : 1612582120074, "time_in_millis" : 25 } }, "2" : { "stage" : "DONE", "stats" : { "incremental" : { "file_count" : 4, "size_in_bytes" : 5239 }, "total" : { "file_count" : 4, "size_in_bytes" : 5239 }, "start_time_in_millis" : 1612582120113, "time_in_millis" : 21 } } } } } } ] }
5 恢复 snapshot
rename_pattern
: 正则匹配原索引名rename_replacement
: 将匹配到的字段用于重命名新索引
POST _snapshot/my_fs_backup/snapshot_1/_restore { "indices": "blog-test", "ignore_unavailable": true, "rename_pattern": "(.+)", "rename_replacement": "restored_$1" }
查询新索引的数据:
GET restored_blog-test/_search
到此,相信大家对“Elasticsearch集群数据备份与恢复的方法是什么”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
网页名称:Elasticsearch集群数据备份与恢复的方法是什么
网页URL:http://cdiso.cn/article/pescic.html