Abychom pomohli chránit před ztrátou dat, má Elasticsearch různé funkce, které vám umožňují zajistit dostupnost dat, a to i v případech selhání dat.
Mezi způsoby, které vám Elasticsearch poskytuje, aby vám poskytla dostupnost dat, patří:
- Cross-cluster replications, funkce, která umožňuje replikovat data do sady následovnických clusterů; sledovací klastr je pohotovostní klastr používaný v případě selhání hlavního klastru.
- Další metoda, kterou Elasticsearch používá k prevenci dat pomocí záloh - nazývaných také snímky clusteru. Pokud to bude nutné, můžete tyto snímky použít k obnovení dat na zcela novém klastru.
Tento kurz vám ukáže, jak vytvořit snímky clusteru, které vám pomohou být připraveni, pokud dojde k nevratné události selhání dat.
Začněme.
Co je Elasticsearch Snapshot?
Jak již bylo zmíněno, elastický snímek je záložní kopií běžícího klastru Elasticsearch. Tento snímek může být celého klastru nebo konkrétních indexů a datových toků v konkrétním klastru.
Jak se brzy dozvíte, plugin úložiště spravuje snímky Elasticsearch. Tyto snímky lze uložit na různých místech úložiště definovaných zásuvným modulem. Patří mezi ně místní systémy a vzdálené systémy, jako je GCP Storage, Amazon EC2, Microsoft Azure a mnoho dalších.
Jak vytvořit úložiště snímků Elasticsearch
Než se ponoříme do vytváření snímků Elasticsearch, musíme vytvořit úložiště snímků, protože mnoho služeb Elasticsearch k provádění těchto úkolů používá API Snapshot.
Některé z úkolů zpracovávaných Snapshot API jsou:
- Vložte úložiště snímků
- Ověřte úložiště snímků
- Získejte úložiště snímků
- Odstraňte úložiště snímků
- Vyčistěte úložiště snímků
- Vytvořit snímek
- Klonovat snímek
- Získejte snímek
- Získejte stav snímku
- Obnovit snímek
- Odstranit snímek
Chcete-li vytvořit úložiště snímků, použijeme koncový bod API _snapshot následovaný názvem, který chceme přiřadit úložiště snímků. Zvažte níže uvedený požadavek, který vytvoří úložiště s názvem backup_repo
PUT / _snapshot / backup_repo"type": "fs",
"settings":
"location": "/ home / root / backups",
"compress": true
Zde je příkaz cURL pro výše uvedený požadavek:
curl -XPUT "http: // localhost: 9200 / _snapshot / backup_repo" -H 'Content-Type: application / json' -d '"type": "fs", "settings": "location": "/ home / root / backups "," compress ": true 'Chcete-li předat cestu úložiště snímků, musíte do cesty nejprve přidat cestu systému nebo nadřazený adresář.repo záznam v ElasticSearch.yml
Cesta.záznam repo by měl vypadat podobně jako:
cesta.repo: [“/ home / root / backups”]Konfigurační soubor Elasticsearch najdete v / etc / elasticsearch / elasticsearch.yml
POZNÁMKA: Po přidání cesty.repo, možná budete muset restartovat klastry Elasticsearch. Dále jsou podporovány hodnoty pro cestu.repo se může divoce lišit v závislosti na platformě běžící Elasticsearch.
Jak zobrazit úložiště snímků
Chcete-li potvrdit úspěšné vytvoření úložiště snímků, použijte požadavek GET s koncovým bodem _snapshot jako:
ZÍSKAT / _snapshot / backup_repoMůžete také použít následující příkaz cURL:
curl -XGET "http: // localhost: 9200 / _snapshot / backup_repo"To by mělo zobrazit informace o úložišti záloh, například:
"backup_repo":
"type": "fs",
"settings":
"compress": "true",
"location": "" "/ home / root / backup" ""
Pokud máte více než jedno úložiště snímků a nepamatujete si název, můžete vynechat název úložiště a zavolat koncový bod _snapshot a vypsat seznam všech existujících úložišť.
ZÍSKAT / _snapshot nebo curl curl -XGET http: // localhost: 9200 / _snapshot
Jak vytvořit snímek Elasticsearch
Vytvoření snímku Elasticsearch pro konkrétní úložiště snímků je zpracováno API pro vytvoření snímku. API vyžaduje název úložiště snímků a název snímku.
POZNÁMKA: Jedno úložiště snímků může mít více než jeden snímek stejných klastrů, pokud mají jedinečné identity / jména.
Zvažte následující požadavek na přidání snímku s názvem snapshot_2021 do úložiště backup_repo.
PUT / _snapshot / backup_repo / snapshot_2021Chcete-li použít cURL, použijte příkaz:
curl -XPUT „http: // localhost: 9200 / _snapshot / backup_repo / snapshot_2021“Příkaz by měl vrátit odpověď od Elasticsearch s 200 OK a akceptováno: true
"přijato": pravda
Protože neurčuje, které datové toky a indexy chcete zálohovat, volání výše uvedeného požadavku zálohuje všechna data a stav klastru. Chcete-li určit, které datové toky a indexy se mají zálohovat, přidejte to do těla žádosti.
Zvažte následující požadavek, který zálohuje .index kibana (systémový index) a určuje, který uživatel autorizoval snímek a důvod.
PUT / _snapshot / backup_repo / snapshot_2"indexy": ".kibana ",
"ignore_unavailable": true,
"include_global_state": true,
"metadata":
"taken_by": "elasticadmin",
“Taken_because”: “Denní zálohování”
Příkaz cURL je:
curl -XPUT "http: // localhost: 9200 / _snapshot / backup_repo / snapshot_2" -H 'Content-Type: application / json' -d '"indexy": ".kibana "," ignore_unavailable ": true," include_global_state ": true," metadata ": " taken_by ":" elasticadmin "," taken_because ":" Daily Backup " 'Ignore_unavailable nastaví booleovský stav, který vrací chybu, pokud chybí nebo jsou zavřeny jakékoli datové toky nebo indexy uvedené ve snímku.
Parametr include_global_state uloží aktuální stav clusteru, pokud je true. Některé z uložených informací o clusteru zahrnují:
- Trvalé nastavení klastru
- Šablony rejstříku
- Starší šablony indexů
- Přijměte potrubí
- Zásady životního cyklu ILM
POZNÁMKA: Můžete zadat více než jeden index oddělených čárkami.
Běžným argumentem používaným s koncovým bodem _snapshot je wait_for_completion, logická hodnota definující, zda (true) nebo ne (false) by měl požadavek vrátit ihned po inicializaci snímku (výchozí) nebo počkat na dokončení snímku.
Například:
PUT / _snapshot / backup_repo / snapshot_3?wait_for_completion = true"indexy": ".kibana ",
"ignore_unavailable": true,
"include_global_state": false,
"metadata":
"taken_by": "elasticadmin",
“Taken_because”: “Týdenní zálohování”
Příkaz cURL je:
curl -XPUT "http: // localhost: 9200 / _snapshot / backup_repo / snapshot_3?wait_for_completion = true "-H 'Content-Type: application / json' -d '" indexy ":".kibana "," ignore_unavailable ": true," include_global_state ": false," metadata ": " taken_by ":" elasticadmin "," taken_because ":" Týdenní záloha " 'Když máte parametr wait_for_completion nastavený na true, dáte výstup podobný tomu, který je uveden níže:
"snapshot":
"snapshot": "snapshot_3",
"uuid": "tQUHyofIRnGMMtw0AGBACQ",
"version_id": 7100299,
"version": "7.10.2 ",
"indexy": [
".kibana_1 "
],
"data_streams": [],
"include_global_state": false,
"metadata":
"taken_by": "elasticadmin",
“Taken_because”: “Týdenní zálohování”
,
"state": "ÚSPĚCH",
"start_time": "2021-01-19T13: 36: 59.615Z ",
"start_time_in_millis": 1611063419615,
"end_time": "2021-01-19T13: 37: 00.433Z ",
"end_time_in_millis": 1611063420433,
"duration_in_millis": 818,
"selhání": [],
"střepy":
"celkem": 1,
"failed": 0,
"successful": 1
Jak zobrazit snímky
Rozhraní API GET snapshot zpracovává funkčnost snapshotů zobrazení.
K předání požadavku potřebujete pouze úložiště snímků a název snímku, který chcete zobrazit.
Snímek by měl reagovat podrobnostmi o zadaném snímku. Mezi tyto podrobnosti patří:
- Počáteční a koncový čas
- Verze Elasticsearch, která vytvořila snímek
- Seznam zahrnutých indexů
- Aktuální stav snímku
- Seznam poruch, ke kterým došlo během snímku
Chcete-li například zobrazit podrobnosti o snímku snapshot_3 vytvořeném výše, použijte níže uvedený požadavek:
ZÍSKAT / _snapshot / backup_repo / snapshot_3Chcete-li použít cURL, použijte následující příkaz:
[cc lang = "text" width = "100%" height = "100%" escaped = "true" theme = "blackboard" nowrap = "0"]
curl -XGET „http: // localhost: 9200 / _snapshot / backup_repo / snapshot_3“
Požadavek by měl vrátit odpověď s podrobnostmi o snímku jako:
"snapshots": [
"snapshot": "snapshot_3",
"uuid": "tQUHyofIRnGMMtw0AGBACQ",
"version_id": 7100299,
"version": "7.10.2 ",
"indexy": [
".kibana_1 "
],
"data_streams": [],
"include_global_state": false,
"metadata":
"taken_by": "elasticadmin",
“Taken_because”: “Týdenní zálohování”
,
"state": "ÚSPĚCH",
"start_time": "2021-01-19T13: 36: 59.615Z ",
"start_time_in_millis": 1611063419615,
"end_time": "2021-01-19T13: 37: 00.433Z ",
"end_time_in_millis": 1611063420433,
"duration_in_millis": 818,
"selhání": [],
"střepy":
"celkem": 1,
"failed": 0,
"successful": 1
]
Můžete také přizpůsobit tělo požadavku, abyste získali konkrétní podrobnosti o snímku. Na to se však zatím nebudeme zabývat.
Řekněme, že chcete zobrazit informace o všech snímcích v konkrétním úložišti snímků; v takovém případě můžete v požadavku předat zástupný znak hvězdičky jako:
ZÍSKAT / _snapshot / backup_repo / *Příkaz cURL je:
curl -XGET „http: // localhost: 9200 / _snapshot / backup_repo / *“Odpověď je podrobný výpis všech snímků v daném úložišti jako:
"snapshots": [
"snapshot": "snapshot_2021",
"uuid": "7CFigHzvRtyZW07c60d2iw",
"version_id": 7100299,
"version": "7.10.2 ",
"indexy": [
„můj_index“,
„single_index_with_body“,
„můj_index_2“,
"single_index",
".kibana_1 ",
"test"
],
"data_streams": [],
"include_global_state": true,
"state": "ÚSPĚCH",
"start_time": "2021-01-19T13: 28: 48.172Z ",
"start_time_in_millis": 1611062928172,
"end_time": "2021-01-19T13: 28: 50.831Z ",
"end_time_in_millis": 1611062930831,
"duration_in_millis": 2659,
"selhání": [],
"střepy":
"celkem": 7,
"failed": 0,
„successful“: 7
,
"snapshot": "snapshot_2",
"uuid": "w58IrYmORAub8VC7cg04Wg",
"version_id": 7100299,
"version": "7.10.2 ",
"indexy": [
".kibana_1 "
],
"data_streams": [],
"include_global_state": false,
"metadata":
"taken_by": "elasticadmin",
"taken_because": "Denní zálohování"
,
"state": "ÚSPĚCH",
"start_time": "2021-01-19T13: 33: 34.482Z ",
"start_time_in_millis": 1611063214482,
"end_time": "2021-01-19T13: 33: 35.921Z ",
"end_time_in_millis": 1611063215921,
"duration_in_millis": 1439,
"selhání": [],
"střepy":
"celkem": 1,
"failed": 0,
"successful": 1
,
"snapshot": "snapshot_3",
"uuid": "tQUHyofIRnGMMtw0AGBACQ",
"version_id": 7100299,
"version": "7.10.2 ",
"indexy": [
".kibana_1 "
],
"data_streams": [],
"include_global_state": false,
"metadata":
"taken_by": "elasticadmin",
“Taken_because”: “Týdenní zálohování”
,
"state": "ÚSPĚCH",
"start_time": "2021-01-19T13: 36: 59.615Z ",
"start_time_in_millis": 1611063419615,
"end_time": "2021-01-19T13: 37: 00.433Z ",
"end_time_in_millis": 1611063420433,
"duration_in_millis": 818,
"selhání": [],
"střepy":
"celkem": 1,
"failed": 0,
"successful": 1
]
Zástupné znaky jsou velmi užitečné pro filtrování konkrétních informací o snímcích.
Jak odstranit snímek
Odstranění snímku je velmi jednoduché: vše, co musíte udělat, je použít požadavek VYMAZAT jako:
ODSTRANIT / _snapshot / backup_repo / snapshot_2021 /Příkaz cURL je:
curl -XDELETE “http: // localhost: 9200 / _snapshot / backup_repo / snapshot_2021 /”Odpověď by měla být uznána: pravda
„Potvrzeno“: pravda
Pokud snímek neexistuje, zobrazí se stavový kód 404 a chyba chybějícího snímku jako:
"error":
"Příčina" : [
"type": "snapshot_missing_exception",
"reason": "[backup_repo: snapshot_2021] chybí"
],
"type": "snapshot_missing_exception",
"reason": "[backup_repo: snapshot_2021] chybí"
,
"status": 404
Závěr
V této příručce jsme diskutovali o tom, jak vytvořit snímky Elasticsearch pomocí Snapshot API. To, co jste se naučili, by mělo stačit k tomu, abyste mohli vytvořit úložiště snímků, prohlížet úložiště snímků, vytvářet, prohlížet a mazat snímky. I když existují přizpůsobení, která můžete provést pomocí API, znalosti v této příručce by měly stačit, abyste mohli začít.
Děkuji za přečtení.