Еластичний пошук

Резервне копіювання та відновлення кластерів Elasticsearch за допомогою знімків

Резервне копіювання та відновлення кластерів Elasticsearch за допомогою знімків
Elasticsearch - це все про дані, і, як ви, напевно, вже знаєте, дані важливі для вас та Elasticsearch. Однак, якщо ви і Elasticsearch любите дані, можуть траплятися збої в даних, що призводить до втрати даних.

Для захисту від втрати даних Elasticsearch має різні функції, які дозволяють забезпечити доступність даних навіть у випадках відмови даних.

Деякі способи, які Elasticsearch використовує для надання вам доступності даних, включають:

Цей підручник показує вам, як створити знімки кластера, які допоможуть вам бути готовими у разі виникнення незворотної події збою даних.

Давайте розпочнемо.

Що таке знімок Elasticsearch?

Як уже згадувалося, еластичний знімок - це резервна копія запущеного кластера Elasticsearch. Цей знімок може містити цілий кластер або конкретні індекси та потоки даних у межах певного кластера.

Як ви скоро дізнаєтесь, плагін сховища управляє знімками Elasticsearch. Ці знімки можна зберігати в різних місцях зберігання, визначених плагіном. Сюди входять локальні системи та віддалені системи, такі як GCP Storage, Amazon EC2, Microsoft Azure та багато інших.

Як створити сховище знімків Elasticsearch

Перш ніж заглибитися у створення знімків Elasticsearch, нам потрібно створити сховище знімків, оскільки багато служб Elasticsearch використовують Snapshot API для виконання цих задач.

Деякі завдання, які виконуються за допомогою Snapshot API:

Для створення сховища знімків ми використовуємо кінцеву точку API _snapshot, а потім ім'я, яке ми хочемо призначити сховищу знімків. Розглянемо наведений нижче запит, який створює сховище з назвою backup_repo

PUT / _snapshot / backup_repo

"type": "fs",
"налаштування":
"location": "/ home / root / резервні копії",
"компрес": правда

Ось команда cURL для наведеного вище запиту:

curl -XPUT "http: // localhost: 9200 / _snapshot / backup_repo" -H 'Content-Type: application / json' -d '"type": "fs", "settings": "location": "/ додому / корінь / резервні копії "," стиснути ": true '

Щоб пройти шлях до сховища знімків, спочатку потрібно додати шлях до системи або батьківський каталог.запис репо в еластичному пошуку.yml

Шлях.запис репо повинен виглядати приблизно так:

шлях.репо: [“/ home / root / резервні копії”]

Ви можете знайти файл конфігурації Elasticsearch, який знаходиться в / etc / elasticsearch / elasticsearch.yml

ПРИМІТКА: Після додавання контуру.repo, можливо, вам доведеться перезапустити кластери Elasticsearch. Крім того, значення, що підтримуються для шляху.РЕПО може сильно відрізнятися залежно від платформи, на якій запущений Elasticsearch.

Як переглянути сховище знімків

Щоб підтвердити успішне створення сховища знімків, використовуйте запит GET із кінцевою точкою _snapshot як:

GET / _snapshot / backup_repo

Ви також можете використовувати таку команду cURL:

curl -XGET "http: // localhost: 9200 / _snapshot / backup_repo"

Це повинно відображати інформацію про сховище резервних копій, наприклад:


"backup_repo":
"type": "fs",
"налаштування":
"compress": "true",
"location": "" "/ home / root / резервні копії" ""


Якщо у вас є більше одного сховища знімків і ви не пам’ятаєте ім’я, ви можете пропустити ім’я репозиторію та зателефонувати до кінцевої точки _snapshot, щоб перерахувати всі існуючі сховища.

GET / _snapshot або curl curl -XGET http: // localhost: 9200 / _snapshot

Як створити знімок Elasticsearch

Створення знімка Elasticsearch для конкретного сховища знімків виконується API створення знімка. API вимагає імені сховища знімків та імені знімка.

ПРИМІТКА: Одне сховище знімків може мати більше одного знімка одних і тих же кластерів, якщо вони мають унікальні ідентичності / імена.

Розглянемо наступний запит на додавання знімка, який називається snapshot_2021, до сховища backup_repo.

PUT / _snapshot / backup_repo / snapshot_2021

Щоб використовувати cURL, використовуйте команду:

curl -XPUT “http: // localhost: 9200 / _snapshot / backup_repo / snapshot_2021”

Команда повинна повернути відповідь від Elasticsearch із значенням 200 OK і прийнято: true


"прийнято": правда

Оскільки в ньому не вказано, які потоки даних та індекси ви хочете мати для резервної копії, виклик наведеного вище запиту створює резервні копії всіх даних та стану кластера. Щоб вказати, які потоки даних та індекси робити для резервної копії, додайте їх до тіла запиту.

Розглянемо наступний запит, який створює резервні копії .індекс kibana (системний індекс) і вказує, хто користувач авторизував знімок та причину.

PUT / _snapshot / backup_repo / snapshot_2

"індекси": ".кібана ",
"ignore_unavailable": істина,
"include_global_state": істина,
"метадані":
"taken_by": "еластичний адміністратор",
“Taken_because”: “Щоденне резервне копіювання”

Команда cURL для цього:

curl -XPUT "http: // localhost: 9200 / _snapshot / backup_repo / snapshot_2" -H 'Тип вмісту: application / json' -d '"індекси": ".kibana "," ignore_unavailable ": true," include_global_state ": true," metadata ": " taken_by ":" elasticadmin "," take_because ":" Щоденне резервне копіювання " '

Ignore_unavailable встановлює логічний стан, який повертає помилку, якщо будь-які потоки даних або індекси, вказані у знімку, відсутні або закриті.

Параметр include_global_state зберігає поточний стан кластера, якщо це істина. Деякі збережені відомості про кластер включають:

ПРИМІТКА: Можна вказати більше одного індексу, розділених комами.

Типовим аргументом, який використовується з кінцевою точкою _snapshot, є wait_for_completion, булеве значення, яке визначає, чи (true) чи ні (false) запит повинен повертатися відразу після ініціалізації знімка (за замовчуванням) або чекати завершення знімка.

Наприклад:

PUT / _snapshot / backup_repo / snapshot_3?wait_for_completion = true

"індекси": ".кібана ",
"ignore_unavailable": істина,
"include_global_state": хибне,
"метадані":
"taken_by": "еластичний адміністратор",
“Taken_because”: “Щотижнева резервна копія”

Команда cURL:

curl -XPUT "http: // localhost: 9200 / _snapshot / backup_repo / snapshot_3?wait_for_completion = true "-H 'Тип вмісту: application / json' -d '" індекси ":".kibana "," ignore_unavailable ": true," include_global_state ": false," metadata ": " taken_by ":" elasticadmin "," take_because ":" Щотижнева резервна копія " '

Коли для параметра wait_for_completion встановлено значення true, ви отримаєте результат, подібний до наведеного нижче:


"знімок":
"snapshot": "snapshot_3",
"uuid": "tQUHyofIRnGMMtw0AGBACQ",
"ідентифікатор_версії": 7100299,
"версія": "7.10.2 ",
"індекси": [
".kibana_1 "
],
"потоки даних": [],
"include_global_state": хибне,
"метадані":
"taken_by": "еластичний адміністратор",
“Taken_because”: “Щотижнева резервна копія”
,
"state": "УСПІХ",
"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,
"збої": [],
"осколки":
"всього": 1,
"не вдалося": 0,
"успішно": 1


Як переглянути знімки

API знімкового знімка GET обробляє функціональність перегляду знімків.

Все, що вам потрібно передати у запиті, - це сховище знімків та ім’я знімка, для якого ви хочете переглянути деталі.

Знімок повинен відповідати деталями про вказаний знімок. Ці деталі включають:

Наприклад, щоб переглянути детальну інформацію про знімок_3, створений вище, скористайтеся наведеним нижче запитом:

GET / _snapshot / backup_repo / snapshot_3
Щоб використовувати cURL, використовуйте команду нижче:
[cc lang = "text" width = "100%" height = "100%" escaped = "true" theme = "blackboard" nowrap = "0"]
curl -XGET “http: // localhost: 9200 / _snapshot / backup_repo / snapshot_3”

Запит повинен повернути відповідь із деталями знімка, як:


"знімки": [

"snapshot": "snapshot_3",
"uuid": "tQUHyofIRnGMMtw0AGBACQ",
"ідентифікатор_версії": 7100299,
"версія": "7.10.2 ",
"індекси": [
".kibana_1 "
],
"потоки даних": [],
"include_global_state": хибне,
"метадані":
"taken_by": "еластичний адміністратор",
“Taken_because”: “Щотижнева резервна копія”
,
"state": "УСПІХ",
"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,
"збої": [],
"осколки":
"всього": 1,
"не вдалося": 0,
"успішно": 1


]

Ви також можете налаштувати тіло запиту, щоб отримати конкретні відомості про знімок. Однак ми поки що не будемо розглядати це.

Скажімо, ви хочете переглянути інформацію про всі знімки у певному сховищі знімків; у цьому випадку ви можете передати у запиті підстановку зірочки як:

GET / _snapshot / backup_repo / *

Команда cURL для цього:

curl -XGET “http: // localhost: 9200 / _snapshot / backup_repo / *”

Відповідь - це детальний дамп усіх знімків у цьому сховищі як:


"знімки": [

"snapshot": "snapshot_2021",
"uuid": "7CFigHzvRtyZW07c60d2iw",
"ідентифікатор_версії": 7100299,
"версія": "7.10.2 ",
"індекси": [
"мій_індекс",
"single_index_with_body",
"мій_індекс_2",
"single_index",
".kibana_1 ",
“Тест”
],
"потоки даних": [],
"include_global_state": істина,
"state": "УСПІХ",
"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,
"збої": [],
"осколки":
"всього": 7,
"не вдалося": 0,
"успішно": 7

,

"snapshot": "snapshot_2",
"uuid": "w58IrYmORAub8VC7cg04Wg",
"ідентифікатор_версії": 7100299,
"версія": "7.10.2 ",
"індекси": [
".kibana_1 "
],
"потоки даних": [],
"include_global_state": хибне,
"метадані":
"taken_by": "еластичний адміністратор",
"taken_because": "Щоденне резервне копіювання"
,
"state": "УСПІХ",
"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,
"збої": [],
"осколки":
"всього": 1,
"не вдалося": 0,
"успішно": 1

,

"snapshot": "snapshot_3",
"uuid": "tQUHyofIRnGMMtw0AGBACQ",
"ідентифікатор_версії": 7100299,
"версія": "7.10.2 ",
"індекси": [
".kibana_1 "
],
"data_streams": [],
"include_global_state": хибне,
"метадані":
"taken_by": "еластичний адміністратор",
“Taken_because”: “Щотижнева резервна копія”
,
"state": "УСПІХ",
"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,
"збої": [],
"осколки":
"всього": 1,
"не вдалося": 0,
"успішно": 1


]

Узагальнюючі символи дуже корисні для фільтрації конкретної інформації про знімки.

Як видалити знімок

Видалити знімок дуже просто: все, що вам потрібно зробити, це використати запит DELETE як:

ВИДАЛИТИ / _snapshot / backup_repo / snapshot_2021 /

Команда cURL:

curl -XDELETE “http: // localhost: 9200 / _snapshot / backup_repo / snapshot_2021 /”

Відповідь слід визнати: правдивою


“Визнаний”: правда

Якщо знімка не існує, ви отримаєте код стану 404 та помилку, в якій знімок відсутній, як:


"помилка":
"першопричина" : [

"type": "snapshot_missing_exception",
"причина": "[backup_repo: snapshot_2021] відсутній"

],
"type": "snapshot_missing_exception",
"причина": "[backup_repo: snapshot_2021] відсутній"
,
"статус": 404

Висновок

У цьому посібнику ми обговорили, як створити знімки Elasticsearch за допомогою API Snapshot. Те, чого ви дізналися, повинно бути достатнім, щоб дозволити вам створити сховище знімків, переглянути сховища знімків, створити, переглянути та видалити знімки. Незважаючи на те, що ви можете зробити налаштування за допомогою API, знань у цьому посібнику має бути достатньо, щоб розпочати.

Дякую за читання.

Битва за Веснот 1.13.6 Розробка випущена
Битва за Веснот 1.13.6, випущений минулого місяця, є шостим випуском розробки в 1.13.x, і це забезпечує низку вдосконалень, особливо до інтерфейсу кор...
Як встановити League of Legends на Ubuntu 14.04
Якщо ви шанувальник League of Legends, то це можливість для вас тестувати League of Legends. Зверніть увагу, що LOL підтримується на PlayOnLinux, якщо...
Встановіть останню стратегічну гру OpenRA на Ubuntu Linux
OpenRA - це ігровий движок Libre / Free Real Time Strategy, який відтворює ранні ігри Вествуда, такі як класичний Command & Conquer: Red Alert. Пошире...