Обновление схемы через миграции¶
В этом руководстве показано, как обновить схему Tarantool DB при выполнении миграции.
Пререквизиты¶
Для выполнения примера требуются:
установленные Docker-образы Tarantool DB, Prometheus и Grafana;
приложение Docker Compose;
исходные файлы примера
migrations_schema_upgrade.Примечание
Есть два способа получить исходные файлы примера:
Архив с полной документацией Tarantool DB, полученный по почте или скачанный в личном кабинете tarantool.io. Пример архива:
tarantooldb-documentation-3.0.0.tar.gz. Примерmigrations_schema_upgradeрасположен в таком архиве в директории./doc/examples/migrations_schema_upgrade/.Отдельный архив migrations_schema_upgrade.tar.gz, скачанный c сайта Tarantool.
Запуск стенда¶
Перейдите в директорию примера migrations_schema_upgrade:
cd ./doc/examples/migrations_schema_upgrade/
Запустите кластер Tarantool DB:
make start
Запущенный стенд состоит из:
кластера Tarantool DB:
2 роутера;
2 набора реплик по 3 хранилища;
1 Tarantool Cluster Manager (TCM);
кластера etcd из 3 узлов.
После запуска должны работать все контейнеры, кроме init_host. Также после запуска становится доступен веб-интерфейс TCM.
Для входа в TCM откройте в браузере адрес http://localhost:8081. Логин и пароль для входа:
Username:
adminPassword:
secret
В TCM откройте вкладку Stateboard.
В кластере появится предупреждение о необходимости обновить схему БД:

Обновление схемы¶
Один из надежных способов обновления схемы БД – применить соответствующую миграцию. Миграция при этом выглядит так:
local function apply()
box.snapshot()
box.schema.upgrade()
box.snapshot()
end
return {
apply = {
scenario = apply,
}
}
Выполнить миграцию можно с помощью утилиты tt CLI. Для этого:
В локальном терминале поместите файл из папки
migration_nextс кодом миграций003_test.luaв папку./cluster/migrations/scenario/:cp -a cluster/migration_next/* cluster/migrations/scenario/
Загрузите миграции в централизованное хранилище:
tt migrations publish http://admin:secret-cluster-cookie@localhost:2379/tdb/ migrations
Узнать больше о командах
tt migrationsможно в документации Tarantool.Примените миграции:
docker compose exec tarantool-router-msk tt migrations apply http://etcd1:2379/tdb --tarantool-username=admin --tarantool-password=secret-cluster-cookie cd ..
Предупреждение об устаревшей схеме БД пропадет после успешного обновления схемы.
Обновление схемы также будет отражено в логах:
tarantool-router-msk-1 | 2025-10-09 08:44:55.876 [1] main/104/interactive/box.upgrade upgrade.lua:1591 I> Recovering snapshot with schema version 3.1.0
tarantool-router-msk-1 | 2025-10-09 08:44:55.901 [1] main/104/interactive/box.load_cfg load_cfg.lua:1229 W> Your schema version is 3.1.0 while Tarantool 3.4.0-0-gea61d3a20 requires a more recent schema version. Please, consider using box.schema.upgrade().
tarantool-router-msk-1 | 2025-10-09 08:44:55.928 [1] main/104/interactive/tarantool.config log.lua:74 W> The schema version 3.1.0 is outdated, the latest version is 3.3.0. Please, consider using box.schema.upgrade().
tarantool-router-msk-1 | 2025-10-09 08:44:55.928 [1] main/129/box.watcher/tarantool.config log.lua:74 W> The schema version 3.1.0 is outdated, the latest version is 3.3.0. Please, consider using box.schema.upgrade().
tarantool-router-msk-1 | 2025-10-09 08:46:10.299 [1] main/180/tt_migrations.executor/box.upgrade upgrade.lua:1632 I> set schema version to 3.3.0
Проверить, что схема успешно обновлена, можно с помощью вызова box.info.schema_version. После обновления схемы значение schema_version увеличится.