TDB Documentation portal logo
Помощь

Миграция схемы данных

Миграция — это любое изменение схемы базы данных и данных в ней, возникающее во время разработки. Примеры миграций: добавление и удаление поля или индекса, изменение формата поля, добавление персистентной функции.

В коде миграций на языке Lua описываются:

  • спейсы для хранения данных;
  • хранимые функции для доступа к данным с пользовательской логикой.

Дополнительная функциональность, например по устареванию данных или оценке производительности, доступна пользователю через встроенные технологические роли.

Подробная информация о миграциях в Tarantool приведена в соответствующем разделе документации Tarantool.

Выполнение миграции

В Tarantool DB загрузить миграции можно двумя способами:

  • в веб-интерфейсе TCM на вкладке Migrations;
  • с помощью tt CLI.

Миграции выполняются в лексикографическом порядке, поэтому им рекомендуется давать нумерованные названия, например 0001_migration.lua или 2023_12_24_migr.lua.

Выполнить миграцию с помощью утилиты tt CLI можно следующим образом:

  1. В терминале поместить файлы миграции в папку /migrations/scenario/.

  2. Загрузить миграции в централизованное хранилище с помощью команды tt migrations publish, например:

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

    Здесь:

    • localhost:2379/tdb/ — адрес одного из узлов etcd вместе с префиксом;
    • migrations — папка, содержащая файлы миграций.

    В случае успеха вывод может выглядеть так:

    • 001_migration.lua: successfully published to key "001_migration.lua"

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

  1. Применить миграции с помощью команды tt migrations apply, например:

    tt migrations apply http://etcd1:2379/tdb --tarantool-username=admin --tarantool-password=secret-cluster-cookie

    В случае успеха вывод будет выглядеть так:

    • replicaset001:           •     001_migration.lua: successfully applied• rsrouter001:             •     001_migration.lua: successfully applied