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

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

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

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

Ограничения

  • Создание снимков кластера увеличит нагрузку на CPU и disk I/O. Чтобы минимизировать влияние на производительность системы, рекомендуется планировать выполнение в непиковые часы.
  • Если исходный кластер недоступен, вы можете восстановить его snapshots в назначенный целевой кластер.
  • При создании или восстановлении snapshot вы можете выполнять только определённые операции, включая доступ к Kibana, просмотр метрик и удаление других snapshots. Однако вы не можете выполнять следующие операции: изменение конфигурации, перезапуск или удаление кластера, удаление snapshot, который создаётся или восстанавливается, а также создание или восстановление другого snapshot. Пока для кластера создаётся или восстанавливается snapshot, любая автоматическая задача создания snapshot, инициированная для этого кластера, будет отменена.
  • При создании первого snapshot в кластере выполняется полное резервное копирование всех данных. Последующие snapshots являются инкрементными и сохраняют только изменения с момента предыдущего snapshot. Поскольку каждый инкрементный snapshot зависит от своих предшественников, их необходимо восстанавливать в правильном порядке.
  • До завершения восстановления snapshot индексы, восстанавливаемые в целевой кластер, не могут быть запрошены.
  • Если в двух кластерах есть индексы с одинаковыми именами, но разной структурой шардов, такие индексы нельзя восстановить.
  • Версия целевого кластера должна быть такой же или более новой, чем версия исходного кластера.

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

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

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

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

    Параметр

    Описание

    Индекс

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

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

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

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

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

    Эти 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

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

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

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

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

    Cluster

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

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

    Overwrite same-name indexes in destination cluster

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

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

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

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

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

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

  1. Войдите в консоль управления CSS.
  2. В левой панели навигации выберите Clusters > Elasticsearch.
  3. В списке кластеров найдите целевой кластер и нажмите Kibana в столбце Operation, чтобы войти в консоль Kibana.
  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 сохраняется после восстановления.