Рейтинг@Mail.ru

Обновление

Замечание

Документация находится в процессе перевода и может отставать от английской версии.

Обновление

Обновление базы данных Tarantool

Если вы создали базу данных в старой версии Tarantool’а, а потом обновили Tarantool до более свежей версии, вызовите команду box.schema.upgrade(). Она обновляет системные спейсы Tarantool’а так, чтобы они совпадали с текущей установленной версией Tarantool’а.

Например, вот что происходит, если выполнить команду box.schema.upgrade() для базы данных, созданной в Tarantool версии 1.6.4 (показана лишь малая часть выводимых сообщений):

tarantool> box.schema.upgrade()
alter index primary on _space set options to {"unique":true}, parts to [[0,"unsigned"]]
alter space _schema set options to {}
create view _vindex...
grant read access to 'public' role for _vindex view
set schema version to 1.7.0
---
...

Обновление экземпляра Tarantool’а

Tarantool поддерживает обратную совместимость между двумя последовательными версиями. Например, обновление Tarantool 1.6 до 1.7 или Tarantool 1.7 до 1.8 не должно вызвать затруднений, тогда как миграции с Tarantool 1.6 прямиком на 1.8 могут препятствовать несовместимые изменения.

Как обновить Tarantool 1.6 до 1.7

Этот процесс предназначен для обновления индивидуальных экземпляров Tarantool’а с 1.6.х до 1.7.х на боевом сервере. Обратите внимание, что это всегда приводит к некоторому простою. Для обновления без простоев необходимо, чтобы несколько работающих Tarantool-серверов были объединены в репликационный кластер (см. ниже).

Tarantool 1.7 работает с несовместимыми форматами файлов - .snap и .xlog. Файлы Tarantool’а 1.6 поддерживаются при обновлении, но после непродолжительного использования Tarantool’а 1.7 вернуться к 1.6 уже нельзя. В Tarantool’е 1.7 также были переименованы некоторые конфигурационные параметры, но старые имена параметров еще поддерживаются. Список критических изменений доступен в Release notes для Tarantool’а 1.7.

  1. Уточните у разработчиков, необходимо ли обновлять файлы приложения из-за наличия несовместимых изменений (см. Release notes для Tarantool’а 1.7). Если да, то создайте резервные копии старых файлов приложения.
  2. Остановите Tarantool-сервер.
  3. Создайте копию всех данных (см. подразделы про горячее резервное копирование в разделе Резервное копирование) и пакета, из которого была установлена текущая (старая) версия (на случай отката).
  4. Обновите Tarantool-сервер. Инструкции по установке доступны на странице загрузок Tarantool’а.
  5. Обновите базу данных Tarantool. Выполните команду box.schema.upgrade(), поместив ее внутрь функции box.once() в файле инициализации Tarantool’а. В результате на этапе запуска Tarantool создаст новые системные спейсы, обновит названия типов данных (например, num -> unsigned, str -> string) и список доступных типов данных в системных спейсах.
  6. При необходимости обновите файлы приложения.
  7. Запустите обновленный Tarantool-сервер с помощью tarantoolctl или systemctl.

Обновление Tarantool’а в репликационном кластере

Tarantool 1.7 может служить репликой для Tarantool’а 1.6 - и наоборот. При установке соединения происходит обсуждение возможностей, и новый для 1.7 репликационный функционал не используется при работе с репликами версии 1.6. Такой подход позволяет обновлять кластерные конфигурации.

Этот процесс позволяет осуществить последовательное обновление без простоев и подходит для любой конфигурации кластера: master-master или master-replica.

  1. Обновите Tarantool на всех репликах (или на любом мастере в кластере master-master). Подробные инструкции доступны в подразделе Обновление экземпляра Tarantool’а.

  2. Проверьте работу реплик:

    1. Запустите Tarantool.
    2. Присоединитесь к мастеру и начните работать, как раньше.

    На мастере установлена старая версия Tarantool’а, которая всегда совместима со следующей мажорной версией.

  3. Обновите мастер. Процесс такой же, как и при обновлении реплики.

  4. Проверьте работу мастера:

    1. Запустите Tarantool в режиме реплики для получения последней версии данных.
    2. Переключитесь в режим мастера.
  5. Обновите базу данных на любом мастере в кластере. Выполните команду box.schema.upgrade(). Это обновит системные спейсы Tarantool’а так, чтобы они совпадали с текущей установленной версией Tarantool’а. Изменения распространятся на другие узлы кластера через обычный механизм репликации.