Tarantool CE/EE Documentation portal logo
Помощь
Обновлена 15 сентября 2026 г. в 08:55

Аварийное восстановление

Минимальная отказоустойчивая конфигурация Tarantool - это набор реплик, состоящий из мастера и реплики или из двух мастераов. Стандартная практика - настроить все экземпляры Tarantool в наборе реплик на регулярное создание файлов снимков состояния.

Ниже приведены планы действий для типичных сценариев сбоя.

Мастер-реплика

Сбой мастера: ручное переключение

Конфигурация: мастер-реплика (ручное переключение).

Проблема: произошёл сбой мастера.

Действия:

  1. Убедитесь, что мастер остановлен. Например, войдите на машину мастера и выполните команду tt stop.
  2. Назначьте нового лидера набора реплик с помощью параметра <replicaset_name>.leader.
  3. Перезагрузите конфигурацию на всех экземплярах с помощью функции config:reload().
  4. Убедитесь, что новый лидер набора реплик является мастером, с помощью функции box.info.ro.
  5. На новом мастере удалите вышедший из строя экземпляр из спейса _cluster.
  6. Настройте замену вышедшему из строя мастеру на резервной машине.

См. также раздел Выполнение ручного переключения при сбое.

Сбой мастера: автоматическое переключение

Конфигурация: мастер-реплика (автоматическое переключение).

Проблема: произошёл сбой мастера.

Действия:

  1. Используйте функцию box.info.election, чтобы убедиться, что новый мастер выбран автоматически.
  2. На новом мастере удалите вышедший из строя экземпляр из спейса _cluster.
  3. Настройте замену вышедшему из строя мастеру на резервной машине.

См. также раздел Тестирование автоматического отказоустойчивого режима.

Потеря данных

Конфигурация: мастер-реплика.

Проблема: после сбоя мастера на реплике отсутствуют некоторые транзакции.

Действия:

Несколько транзакций из файла журнала упреждающей записи (write-ahead log, WAL) мастера могли не передаться на реплику до сбоя. Если удалось сохранить файл .xlog мастера, эти транзакции можно восстановить.

  1. Узнайте UUID экземпляра из файла xlog вышедшего из строя мастера:

    $ head -5 var/lib/instance001/*.xlog | grep InstanceInstance: 9bb111c2-3ff5-36a7-00f4-2b9a573ea660
  2. На новом мастере используйте UUID, чтобы определить позицию:

    app:instance002> box.info.vclock[box.space._cluster.index.uuid:select{'9bb111c2-3ff5-36a7-00f4-2b9a573ea660'}[1][1]]---- 999...
  3. Воспроизведите записи из файла .xlog вышедшего из строя мастера на новом мастере, начиная с позиции нового мастера:

    $ tt play 127.0.0.1:3302 var/lib/instance001/00000000000000000000.xlog \          --from 1000 \          --replica 1 \          --username admin --password secret

Мастер-мастер

Конфигурация: мастер-мастер.

Проблема: произошёл сбой одного мастера.

Действия:

  1. Обеспечьте обработку нагрузки оставшимся мастером.
  2. Удалите вышедший из строя мастер из набора реплик.
  3. Настройте замену вышедшему из строя мастеру на резервной машине. Подробнее см. добавление и удаление экземпляров.

Мастер-реплика/мастер-мастер: потеря данных

Конфигурация: мастер-реплика или мастер-мастер.

Проблема: данные были удалены на одном мастере, и потеря данных распространилась на другой узел (мастер или реплику).

Действия:

  1. Переведите все узлы в режим только для чтения. В зависимости от режима replication.failover, это можно сделать следующим образом:

    • В режиме manual: укажите null в качестве лидера набора реплик.
    • В режиме election: задайте значение voter или off для параметра replication.election_mode на уровне набора реплик.
    • В режиме off: задайте значение ro для параметра database.mode.

    Перезагрузите конфигурацию на всех экземплярах с помощью функции reload() из модуля config.

  2. Отключите удаление устаревших контрольных точек с помощью функции box.backup.start(). Это предотвратит удаление сборщиком мусора Tarantool файлов, созданных на старых контрольных точках, до вызова функции box.backup.stop().

  3. Получите последний корректный файл .snap и используйте команду tt cat для определения LSN, на котором произошла потеря данных.

  4. Запустите новый экземпляр и используйте команду tt play для воспроизведения на нем содержимого файлов .snap и .xlog до вычисленного LSN.

  5. Выполните начальную загрузку новой реплики с восстановленного мастера.