Облачная платформаAdvanced

Восстановление данных с помощью Снапшотов

Язык статьи: Русский
Показать оригинал
Страница переведена автоматически и может содержать неточности. Рекомендуем сверяться с английской версией.

Во время рутинных O&M возможность быстро восстановить данные при их потере или повреждении имеет решающее значение для кластеров OpenSearch. Снапшот позволяет восстановить копию кластера в определённый момент времени в исходный кластер или в другой подходящий кластер. Этот процесс извлекает резервные данные индексов, метаданные и структуру шардов из OBS и восстанавливает их в выбранном целевом кластере, обеспечивая согласованность данных. Эта возможность необходима для таких операций, как откат данных, миграция кластера и восстановление после катастроф. С помощью снапшотов для кластеров CSS вы можете быстро и надёжно восстановить данные, обеспечивая непрерывность сервиса.

Ограничения

  • Создание снапшотов кластера увеличит нагрузку на CPU и disk I/O. Чтобы минимизировать влияние на производительность системы, рекомендуется планировать выполнение в непиковые часы.
  • Если исходный кластер недоступен, вы можете восстановить его снапшоты в назначенный целевой кластер.
  • При создании или восстановлении снапшота вы можете выполнять только определённые операции, включая доступ к OpenSearch Dashboards, просмотр метрик и удаление других снапшотов. Однако следующие операции недоступны: изменение конфигурации, перезапуск или удаление кластера, удаление снапшота, который создаётся или восстанавливается, а также создание или восстановление другого снапшота. Пока для кластера создаётся или восстанавливается снапшот, любая автоматическая задача создания снапшотов, инициированная для этого кластера, будет отменена.
  • При создании первого снапшота в кластере выполняется полное резервное копирование всех данных. Последующие снапшоты являются инкрементными и сохраняют только изменения с момента предыдущего снапшота. Поскольку каждый инкрементный снапшот опирается на свои предшественники, их необходимо восстанавливать в правильном порядке.
  • Пока восстановление снапшота не завершено, индексы, восстанавливаемые в целевой кластер, недоступны для запросов.
  • Если у двух кластеров есть индексы с одинаковыми именами, но разной структурой шардов, такие индексы нельзя восстановить.
  • Версия целевого кластера должна быть такой же (рекомендовано) или новее версии исходного кластера. В кластере OpenSearch 3.4.0 можно восстанавливать снапшоты, созданные в OpenSearch 2.x или 3.4.0. В кластере OpenSearch 2.19.0 можно восстанавливать снапшоты, созданные в Elasticsearch 7.x или OpenSearch 2.19.0. В кластере OpenSearch 1.3.6 можно восстанавливать снапшоты, созданные в Elasticsearch 6.x, Elasticsearch 7.x или OpenSearch 1.3.6.

Предварительные условия

В списке задач снапшотов исходного кластера есть снапшоты, у которых Snapshot Task Status равен Available. Статус целевого кластера также Available.

Восстановление данных

  1. Войдите в консоль управления CSS.
  2. В панели навигации слева выберите Clusters > OpenSearch.
  3. В списке кластеров нажмите имя исходного кластера. Отображается страница информации о кластере.
  4. Нажмите вкладку Cluster Snapshots.
  5. В списке задач снимков кластера выберите снимок и нажмите Restore в столбце Operation. В отображаемом диалоговом окне настройте необходимые параметры.
    Table 1 Настройки восстановления

    Параметр

    Описание

    Индекс

    Укажите имя индекса, который необходимо восстановить.

    • Значение представляет собой строку от 0 до 1024 символов, которая не может содержать заглавные буквы, пробелы или следующие специальные символы: "\\\u003c|\u003e/?.
    • При восстановлении индекса, имя которого начинается с .kibana, необходимо указать имя индекса.
    • Индекс .opendistro_security нельзя восстановить.
    • Можно использовать символ звёздочки (*) для сопоставления нескольких индексов. Например, index* указывает, что будут восстановлены все индексы с префиксом index. При использовании звёздочки (*) для сопоставления индексов, индекс .opendistro_security и любые системные индексы, имя которых начинается с .kibana, по умолчанию исключаются.
    • Можно восстановить индексы, указав их имена, например, index1,index2,index3.

    По умолчанию этот параметр оставляется пустым. То есть имя индекса не указано, и будут восстановлены все индексы.

    Шаблон переименования

    Index name matching rule. Введите регулярное выражение. Индексы, соответствующие регулярному выражению, будут восстановлены.

    Rename Pattern и Rename Replacement вступают в силу только когда они оба настроены одновременно. Для примера см. Index, Rename Pattern, and Rename Replacement: Parameters and Examples.

    Значение представляет собой строку от 0 до 1024 символов, которая не может содержать заглавные буквы, пробелы или следующие специальные символы: "\\\u003c|\u003e/?,

    For example, index_(.+) indicates that all indexes whose name starts with index_ will be renamed upon restoration.

    Rename Replacement

    Rule for index renaming. При восстановлении соответствующие индексы переименовываются согласно определенному правилу.

    Rename Pattern и Rename Replacement вступают в силу только когда они оба настроены одновременно. Для примера см. Index, Rename Pattern, and Rename Replacement: Parameters and Examples.

    Значение представляет собой строку от 0 до 1024 символов, которая не может содержать заглавные буквы, пробелы или следующие специальные символы: "\\\u003c|\u003e/?,

    Например, restored_index_$1 указывает, что restored_ будет добавлен в начало имени всех восстановленных индексов.

    Cluster

    Выберите кластер, в который вы хотите восстановить данные. Вы можете выбрать текущий кластер или другой.

    • Вы должны указать кластер со статусом Available. Если статус текущего кластера — Unavailable, вы не сможете восстановить снимок в текущий кластер.
    • После восстановления frozen index с помощью snapshot, индекс хранится на локальном узле и по умолчанию является только для чтения. Чтобы сделать его доступным для записи, выполните следующую команду для настройки индекса:
      PUT index_name/_settings
      {
      "index.blocks.write": null
      }

    Overwrite same-name indexes in destination cluster

    Определяет, следует ли перезаписывать индексы с одинаковыми именами в целевом кластере. По умолчанию эта опция не выбрана.

    Восстановление снапшота перезапишет существующие данные в целевом кластере. Если в целевом кластере есть индексы с одинаковыми именами, необходимо выбрать эту опцию, чтобы восстановить индексы с одинаковыми именами и одинаковой структурой шардов. Индексы с иной структурой шардов восстановить нельзя.

  6. Нажмите OK, чтобы начать восстановление снапшота.

    Если восстановление прошло успешно, Snapshot Task Status снапшота в списке задач снапшота изменится на Restoration succeeded, и данные индекса, захваченные в снапшоте, будут восстановлены.

Проверка восстановления снапшота

После восстановления снапшота перейдите к целевому кластеру, чтобы проверить информацию о восстановленном индексе.

  1. Войдите в консоль управления CSS.
  2. В левой панели навигации выберите Clusters > OpenSearch.
  3. В списке кластеров найдите целевой кластер и нажмите Dashboards в столбце Operation, чтобы войти в OpenSearch Dashboards.
  4. В левой панели навигации выберите Dev Tools.

    Левая часть консоли представляет собой поле ввода команд, а треугольный значок в её правом верхнем углу является кнопкой выполнения. Правая часть отображает результат выполнения.

  5. Выполните следующую команду, чтобы проверить информацию об индексе.
    GET _cat/indices

Index, Rename Pattern и Rename Replacement: параметры и примеры

В этом разделе описываются параметры Index, Rename Pattern и Rename Replacement. Также приведены примеры настройки этих параметров.

  • Сохранение оригинального имени индекса при восстановлении индекса

    Укажите Index для заменяемого индекса.

  • Переименование индекса при восстановлении

    Чтобы переименовать индекс при восстановлении, укажите Index, Rename Pattern и Rename Replacement. Их значения приведены ниже:

    • Index: Указывает имя или шаблон (поддерживается подстановочный символ) индексов, которые вы хотите восстановить. Он должен включать индексы, подлежащие переименованию. Этот параметр определяет индексы, которые вы хотите восстановить с помощью снимков в указанный целевой кластер.
    • Rename Pattern: Использует регулярное выражение для указания индексов, которые вы хотите переименовать среди индексов, подлежащих восстановлению (указанных с помощью Index). Переименованы будут только индексы, имена которых точно соответствуют регулярному выражению.
    • Rename Replacement: Определяет правило именования восстановленных индексов, соответствующих Rename Pattern. Это правило представляет собой строку, использующую группу захвата (например, $1) для повторного использования текста, захваченного Rename Pattern.

Пример:

  • Index задаётся как index_*, old_index: index_* обозначает все индексы, имя которых начинается с index_, а old_index указывает отдельный индекс.
  • Rename Pattern задаётся как index_(.+): Это указывает, что индексы, имя которых начинается с index_, будут переименованы.
  • Rename Replacement задаётся как restored_index_$1: Это заменяет найденные имена индексов на restored_index_ плюс текст группы захвата.

Соответствующий запрос API выглядит следующим образом:

POST /_snapshot/{repo_name}/{snapshot_name}/_restore
{
"indices": "index_*, old_index",
"ignore_unavailable": true,
"include_global_state": true,
"rename_pattern": "index_(.+)", // This corresponds to the Rename Pattern parameter.
"rename_replacement": "restored_index_$1", // This corresponds to the Rename Replacement parameter.
}

Результаты восстановления для различных индексов:

  • Исходный индекс index_logs переименован в restored_index_logs.
  • Исходный индекс index_users переименован в restored_index_users.
  • Исходный индекс old_index не соответствует rename_pattern и поэтому не переименован. Исходное имя old_index сохраняется после восстановления.