TDB Documentation portal logo
Помощь
Обновлена 30 июля 2026 г. в 16:49

Обновление Tarantool DataBase

Для обновления версии Tarantool DB 3.x рекомендуется использовать инсталлятор Ansible Tarantool Enterprise (ATE).

См. также: Установка через Ansible Tarantool Enterprise.

Обновление приложения через ATE с помощью Docker

Обновить Tarantool DB можно, используя один из способов ниже:

Для обновления Tarantool DB рекомендуется использовать первый способ — обновление приложения без простоя.

Обновление без простоя

Для обновления Tarantool DB без простоя (поплечевого обновления) используется стандартный порядок обновления узлов:

  1. Обновление узлов-реплик хранилища
  2. Обновление мастер-узлов хранилища
  3. Обновление роутеров

Обновление до версии 3.2.0 и выше

Для обновления Tarantool DB без простоя через инсталлятор ATE используется сценарий continuous_update.yml. Описание сценария приведено в разделе Tarantool 3.x: Обновление приложения без простоя документации ATE. При работе этого сценария обновление схемы БД через box.schema.upgrade() выполняется автоматически.

При обновлении Tarantool DB до версии 3.2.0 Tarantool Cluster Manager (TCM) обновляется до версии 1.10.0. В TCM 1.10.0 изменён формат хранения подписи объектов TCM. Если TCM 1.10.0 запускается на уже существующем хранилище конфигурации (etcd или TBCS), например при обновлении с TCM 1.9.1 или более ранней версии, после завершения сценария обновления TDB необходимо однократно выполнить переподписание данных (resign-data) в хранилище новым ключом. Без этого TCM не запустится из-за ошибки верификации подписи. При установке TCM 1.10.0 с нуля на новом хранилище выполнять resign-data не требуется.

Чтобы успешно обновить TCM до версии 1.10.0 через ATE, необходимо выполнить следующие шаги в указанном порядке:

  1. Остановите TСM, если он запущен. Выполните запуск сценария обновления TCM через ATE playbooks/tcm/install.yml. После запуска скрипта сервис TCM не запустится. Это нормальная реакция системы перед выполнением критических шагов безопасности.

  2. Выполните команду /app/tarantool/cluster-manager/tcm resign-data, указав параметры подключения к хранилищу TCM — etcd или TBCS (аналогично тому, как они передаются при запуске TCM):

    ./tarantool-cluster-manager resign-data

    Параметры могут быть переданы одним из способов ниже, в зависимости от вашей конфигурации:

    • через опцию -config с путем к YAML-файлу или строкой конфигурации. Пример: resign_data -config /path/to/config.yaml;
    • через переменные окружения.

    Если скрипт чтения конфигурации использует YAML-файл, убедитесь, что он доступен и корректен;

  3. После выполнения команды resign_data повторно запустите скрипт установки playbooks/tcm/install.yml или перезапустите службу TCM.

Обновление до версий 3.1.x

Инструкция по обновлению TDB до версий 3.1.x отличается от общей процедуры и требует выполнения дополнительных шагов. Все необходимые шаги описаны в инструкции ниже.

При обновлении до версий TDB 3.1.0 и 3.1.1:

  1. Перед началом обновления создайте с помощью миграции на всех экземплярах хранилища спейс _crud_settings_local, используя скрипт миграции ниже:

    local config = require('config')local fun = require('fun')local function is_storage()    return fun.index('roles.crud-storage', config:get('roles')) ~= nilendlocal function apply()    if is_storage() then        local settings_space = box.schema.space.create('_crud_settings_local', {            engine = 'memtx',            is_local = true,            if_not_exists = true,            format = {                { name = 'key', type = 'string' },                { name = 'value', type = 'any' },            },        })        settings_space:create_index('primary', { parts = { 'key' }, if_not_exists = true })    end    return trueendreturn {    apply = {        scenario = apply,    }}
  2. После завершения миграции выполните обновление версии Tarantool DB в обычном порядке через ATE. Для обновления используйте сценарий continuous_update.yml из документации ATE: Tarantool 3.x: Обновление приложения без простоя. При работе этого сценария обновление схемы БД через box.schema.upgrade() выполняется автоматически.

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

    box.schema.user.grant('db_user', 'execute', 'universe')box.schema.user.grant('db_user', 'read', 'space', '_bucket')box.schema.user.grant('db_user', 'read', 'space', '_ddl_sharding_key')

    Здесь:

    • execute на universe — выполнение служебных хранимых процедур на узлах хранилища;
    • read на _bucket — чтение карты сегментов для маршрутизации запросов;
    • read на _ddl_sharding_key — чтение метаданных шардирования для маршрутизации.

    Если в кластере используется функционал архивации данных через модуль cooler, дополнительно требуются права на чтение системного спейса _cooler:

    box.schema.user.grant('db_user', 'read', 'space', '_cooler')

    Соответствующая YAML-конфигурации кластера выглядит так:

    credentials:  users:    db_user:      password: 'secret'      privileges:        - permissions: [execute]          universe: true        - permissions: [read]          spaces: [_bucket, _cooler, _ddl_sharding_key]

    Узнать больше: Модель безопасности Tarantool DB.

Обновление приложения с простоем

Для обновления Tarantool DB с простоем используется сценарий install_3_0.yml. Описание сценария приведено в разделе Tarantool 3.x: Установка приложения документации по инсталлятору ATE. При работе этого сценария метод box.schema.upgrade() не выполняется автоматически. Метод нужно вызвать явно после выполнения сценария install_3_0.yml, используя команду tt replicaset upgrade.