Для захисту від втрати даних 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 зберігає поточний стан кластера, якщо це істина. Деякі збережені відомості про кластер включають:
- Постійні налаштування кластера
- Шаблони покажчиків
- Спадкові шаблони індексів
- Поглинати трубопроводи
- Політика життєвого циклу ILM
ПРИМІТКА: Можна вказати більше одного індексу, розділених комами.
Типовим аргументом, який використовується з кінцевою точкою _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 обробляє функціональність перегляду знімків.
Все, що вам потрібно передати у запиті, - це сховище знімків та ім’я знімка, для якого ви хочете переглянути деталі.
Знімок повинен відповідати деталями про вказаний знімок. Ці деталі включають:
- Значення часу початку та кінця
- Версія Elasticsearch, яка створила знімок
- Список включених індексів
- Поточний стан знімка
- Список помилок, які сталися під час знімка
Наприклад, щоб переглянути детальну інформацію про знімок_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, знань у цьому посібнику має бути достатньо, щоб розпочати.
Дякую за читання.