Обновление схемы через миграции | Tdb

Обновление схемы через миграции

В этом руководстве показано, как обновить схему 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:

  • кластера etcd из 3 узлов.

После запуска должны работать все контейнеры, кроме init_host. Также после запуска становится доступен веб-интерфейс TCM.

Для входа в TCM откройте в браузере адрес http://localhost:8081. Логин и пароль для входа:

  • Username: admin

  • Password: secret

В TCM откройте вкладку Stateboard.

В кластере появится предупреждение о необходимости обновить схему БД:

Обновление схемы

Один из надежных способов обновления схемы БД – применить соответствующую миграцию. Миграция при этом выглядит так:

local function apply()
    box.snapshot()
    box.schema.upgrade()
    box.snapshot()
end

return {
    apply = {
        scenario = apply,
    }
}

Выполнить миграцию можно с помощью утилиты tt CLI. Для этого:

  1. В локальном терминале поместите файл из папки migration_next с кодом миграций 003_test.lua в папку ./cluster/migrations/scenario/:

    cp -a cluster/migration_next/* cluster/migrations/scenario/ 
    
  2. Загрузите миграции в централизованное хранилище:

    tt migrations publish http://admin:secret-cluster-cookie@localhost:2379/tdb/ migrations
    

    Узнать больше о командах tt migrations можно в документации Tarantool.

  3. Примените миграции:

    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 увеличится.

Остановка стенда

Остановить стенд можно так:

make stop
Found what you were looking for?
Feedback