本篇內容主要講解“Elasticsearch集群數據備份與恢復的方法是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Elasticsearch集群數據備份與恢復的方法是什么”吧!
Elasticsearch 擁有副本機制來保障集群的高可用,然而無法解決如下情況的數據丟失:
主副本所在機器存儲全部損壞。
誤刪除索引數據。
升級失敗,數據無法回滾。
定期對數據做備份,按需恢復可以很好的解決如上問題。
Elasticsearch 提供了 Snapshot 和 Restore API 用于對集群數據完成備份與恢復。
數據備份的過程可以簡單理解成將本地數據文件同步到遠程倉庫(repository) 的過程。
支持全量和增量備份。
repository 常見有如下類型: fs / S3 / HDFS / Azure / Google Cloud Storage。
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修改 elasticsearch.yml 配置文件,增加如下配置:
path.repo: ["/home/elastic/backup"]
重啟elasticsearch進程,查看創建的repo:
GET _cluster/settings?include_defaults&filter_path=*.path.repo
#輸出結果:
{
"defaults" : {
"path" : {
"repo" : [
"/home/elastic/backup"
]
}
}
}#創建關聯 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"
}
}
}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
}
}
}
}
}
}
]
}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集群數據備份與恢復的方法是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。