Обновление
Если вы создали базу данных в старой версии 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 1.6 до 1.7 или Tarantool 1.7 до 1.8 не должно вызвать затруднений, тогда как миграции с Tarantool 1.6 прямиком на 1.8 могут препятствовать несовместимые изменения.
Этот процесс предназначен для обновления индивидуальных экземпляров Tarantool’а с 1.6.х до 1.7.х (или до 1.10.x) на боевом сервере. Обратите внимание, что это всегда приводит к некоторому простою. Для обновления без простоев необходимо, чтобы несколько работающих Tarantool-серверов были объединены в репликационный кластер (см. ниже).
Tarantool 1.7 работает с несовместимыми форматами файлов – .snap и .xlog. Файлы Tarantool’а 1.6 поддерживаются при обновлении, но после непродолжительного использования Tarantool’а 1.7 вернуться к 1.6 уже нельзя. Также были переименованы некоторые конфигурационные параметры, но старые параметры еще поддерживаются. Список критических изменений доступен в Примечаниях к версиям Tarantool’а 1.7 / 1.9 / 1.10.
Чтобы обновить Tarantool 1.6 до 1.7 (или до 1.10.x):
- Уточните у разработчиков, необходимо ли обновлять файлы приложения из-за наличия несовместимых изменений (см. Примечания к версиям Tarantool’а 1.7 / 1.9 / 1.10). Если да, то создайте резервные копии старых файлов приложения.
- Остановите Tarantool-сервер.
- Создайте копию всех данных (см. подразделы про горячее резервное копирование в разделе Резервное копирование) и пакета, из которого была установлена текущая (старая) версия (на случай отката).
- Обновите Tarantool-сервер. Инструкции по установке доступны на странице загрузок Tarantool’а.
- Обновите базу данных Tarantool. Выполните команду
box.schema.upgrade()
, поместив ее внутрь функции box.once() в файле инициализации Tarantool’а. В результате на этапе запуска Tarantool создаст новые системные спейсы, обновит названия типов данных (например, num -> unsigned, str -> string) и список доступных типов данных в системных спейсах. - При необходимости обновите файлы приложения.
- Запустите обновленный Tarantool-сервер с помощью
tarantoolctl
илиsystemctl
.
Tarantool 1.7 (а также Tarantool 1.9 и 1.10) может служить репликой для Tarantool’а 1.6 – и наоборот. При установке соединения происходит обсуждение возможностей, и новые для 1.7 репликационные функции не используются при работе с репликами версии 1.6. Такой подход позволяет обновлять кластерные конфигурации.
Этот процесс позволяет осуществить последовательное обновление без простоев и подходит для любой конфигурации кластера: master-master или мастер-реплика.
Обновите Tarantool на всех репликах (или на любом мастере в кластере мастер-мастер). Подробные инструкции доступны в подразделе Обновление экземпляра Tarantool’а.
Проверьте работу реплик:
- Запустите Tarantool.
- Присоединитесь к мастеру и начните работать, как раньше.
На мастере установлена старая версия Tarantool’а, которая всегда совместима со следующей мажорной версией.
Обновите мастер. Процесс такой же, как и при обновлении реплики.
Проверьте работу мастера:
- Запустите Tarantool в режиме реплики для получения последней версии данных.
- Переключитесь в режим мастера.
Обновите базу данных на любом мастере в кластере. Выполните команду
box.schema.upgrade()
. Это обновит системные спейсы Tarantool’а так, чтобы они совпадали с текущей установленной версией Tarantool’а. Изменения распространятся на другие узлы кластера через обычный механизм репликации.