Tarantool CE/EE Documentation portal logo
Помощь
Обновлена 15 сентября 2026 г. в 08:55

Управление централизованными миграциями

$ tt migrations COMMAND [COMMAND_OPTION ...]

Команда tt migrations управляет централизованными миграциями в кластере Tarantool EE. Подробное руководство по использованию механизма централизованных миграций см. в разделе Централизованные миграции с помощью tt.

COMMAND может принимать одно из следующих значений:

publish

$ tt migrations publish ETCD_URI [MIGRATIONS_DIR | MIGRATION_FILE] [OPTION ...]

tt migrations publish отправляет файлы миграций в централизованное хранилище конфигурации кластера для последующего выполнения.

По умолчанию команда отправляет все файлы из каталога migrations/ в текущем каталоге.

$ tt migrations publish "https://user:pass@localhost:2379/myapp"

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

$ tt migrations publish "https://user:pass@localhost:2379/myapp" my_migrations

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

$ tt migrations publish "https://user:pass@localhost:2379/myapp" migrations/000001_create_space.lua

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

$ tt migrations publish "https://user:pass@localhost:2379/myapp" file.lua  \                        --key=000001_create_space.lua

При публикации миграций tt выполняет следующие проверки:

  • Синтаксические ошибки в файлах миграций. Чтобы пропустить проверку синтаксиса, добавьте параметр --skip-syntax-check.
  • Наличие миграций с теми же именами. Чтобы перезаписать существующую миграцию с тем же именем, добавьте параметр --overwrite.
  • Порядок следования имен миграций. По умолчанию tt migrations добавляет новые миграции только в конец списка миграций, упорядоченного лексикографически. Например, если уже опубликованы миграции 001.lua и 003.lua, попытка опубликовать 002.lua завершится ошибкой. Чтобы принудительно опубликовать миграции без учета порядка, добавьте параметр --ignore-order-violation.

apply

$ tt migrations apply ETCD_URI [OPTION ...]

Команда tt migrations apply применяет опубликованные миграции к кластеру. Команда выполняет все миграции из централизованного хранилища конфигурации кластера на всех экземплярах с доступом на чтение и запись (лидерах наборов реплик).

$ tt migrations apply "https://user:pass@localhost:2379/myapp"  \                    --tarantool-username=admin --tarantool-password=pass

Чтобы применить отдельную опубликованную миграцию, укажите ее имя в параметре --migration:

$ tt migrations apply "https://user:pass@localhost:2379/myapp"  \                    --tarantool-username=admin --tarantool-password=pass  \                    --migration=000001_create_space.lua

Чтобы применить миграции в отдельном наборе реплик, укажите параметр replicaset:

$ tt migrations apply "https://user:pass@localhost:2379/myapp"  \                    --tarantool-username=admin --tarantool-password=pass  \                    --replicaset=storage-001

Команда также предоставляет параметры для устранения проблем с миграциями: --ignore-order-violation, --force-reapply и --ignore-preceding-status. Подробнее об их использовании см. в разделе Устранение неполадок при миграциях.

status

$ tt migrations status ETCD_URI [OPTION ...]

Команда tt migrations status выводит список миграций, опубликованных в централизованное хранилище, и результаты их выполнения на экземплярах кластера.

Возможные статусы миграций:

  • APPLY_STARTED – выполнение миграции начато, но еще не завершено или прервано с помощью команды tt migrations stop;
  • APPLIED – миграция успешно применена на экземпляре;
  • FAILED – при выполнении миграции на экземпляре возникли ошибки.

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

$ tt migrations status "https://user:pass@localhost:2379/myapp"  \                       --tarantool-username=admin --tarantool-password=pass

Если в кластере используется SSL-шифрование, добавьте параметры SSL. Подробнее см. в разделе Аутентификация.

Используйте параметры --migration и --replicaset, чтобы получить информацию о конкретных миграциях или наборах реплик:

$ tt migrations status "https://user:pass@localhost:2379/myapp"  \                     --tarantool-username=admin --tarantool-password=pass \                     --replicaset=storage-001 --migration=000001_create_writers_space.lua

Параметр --display-mode позволяет настроить формат вывода команды:

  • При значении --display-mode config-storage команда выводит только список миграций, опубликованных в централизованное хранилище.
  • При значении --display-mode cluster команда выводит только статусы миграций на экземплярах кластера.

Чтобы узнать результаты выполнения миграции в конкретном наборе реплик кластера, выполните:

$ tt migrations status "https://user:pass@localhost:2379/myapp"  \                       --tarantool-username=admin --tarantool-password=pass  \                       --replicaset=storage-001 --display-mode=cluster

stop

$ tt migrations stop ETCD_URI [OPTION ...]

Команда tt migrations stop останавливает выполнение миграций в кластере.

Чтобы остановить выполнение миграции, запущенной в кластере в данный момент:

$ tt migrations stop "https://user:pass@localhost:2379/myapp"  \                     --tarantool-username=admin --tarantool-password=pass

Команда tt migrations stop прерывает выполнение одной миграции. Если вызвать команду для прерывания процесса, применяющего несколько миграций, те из них, которые были завершены до вызова, получат статус APPLIED. Миграция, прерванная вызовом, останется в статусе APPLY_STARTED.

remove

$ tt migrations remove ETCD_URI [OPTION ...]

Команда tt migrations remove удаляет опубликованные миграции из централизованного хранилища. С помощью дополнительных параметров можно также удалить информацию о выполнении миграций на экземплярах кластера.

Чтобы удалить все миграции из указанного централизованного хранилища:

$ tt migrations remove "https://user:pass@localhost:2379/myapp"  \                       --tarantool-username=admin --tarantool-password=pass

Чтобы удалить конкретную миграцию, укажите её имя в параметре --migration:

$ tt migrations remove "https://user:pass@localhost:2379/myapp"  \                       --tarantool-username=admin --tarantool-password=pass  \                       --migration=000001_create_writers_space.lua

Перед удалением миграций команда проверяет их статус в кластере. Чтобы игнорировать статус и удалить миграции в любом случае, добавьте параметр --force-remove-on=config-storage:

$ tt migrations remove "https://user:pass@localhost:2379/myapp"  \                        --force-remove-on=config-storage

Чтобы удалить информацию о выполнении миграций из кластера (очистить статус миграций), используйте параметр --force-remove-on=cluster:

$ tt migrations remove "https://user:pass@localhost:2379/myapp"  \                       --tarantool-username=admin --tarantool-password=pass  \                       --force-remove-on=cluster

Чтобы очистить всю информацию о миграциях из централизованного хранилища и кластера, используйте параметр --force-remove-on=all:

$ tt migrations remove "https://user:pass@localhost:2379/myapp"  \                       --tarantool-username=admin --tarantool-password=pass  \                       --force-remove-on=all

Аутентификация

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

  • Через параметры командной строки --config-storage-username и --config-storage-password;
  • Через URI etcd, например, https://user:pass@localhost:2379/myapp.

Учетные данные, указанные в URI, имеют более высокий приоритет.

Для команд, подключающихся к кластеру (то есть для всех, кроме publish), также требуются учетные данные Tarantool. Они передаются в параметрах --tarantool-username и --tarantool-password.

Если в кластере используется SSL-шифрование трафика, укажите необходимые параметры подключения в параметрах --tarantool-ssl*: --tarantool-sslcertfile, --tarantool-sslkeyfile и других. Полный список параметров см. в разделе Параметры.

Параметры

--acquire-lock-timeout INT

Применимо к: apply

Время ожидания получения блокировки файбера миграций в секундах. Значение по умолчанию: 60. Блокировка файбера используется для предотвращения параллельного выполнения миграций.

--config-storage-password STRING

Пароль для подключения к централизованному хранилищу миграций (etcd).

См. также раздел Аутентификация.

--config-storage-username STRING

Имя пользователя для подключения к централизованному хранилищу миграций (etcd).

См. также раздел Аутентификация.

--display-mode STRING

Применимо к: status

Вывод только определенной информации. Возможные значения:

  • config-storage – информация о миграциях, опубликованных в централизованное хранилище.
  • cluster – информация о миграциях, примененных в кластере.

См. также описание status.

--execution-timeout INT

Применимо к: apply, remove, status, stop

Время ожидания выполнения операции на отдельном экземпляре Tarantool в секундах. Значения по умолчанию:

  • 3 для remove, status и stop;
  • 3600 для apply.

--force-reapply

Применимо к: apply

Применить миграции без учета их предыдущего статуса.

--force-remove-on STRING

Применимо к: remove

Удаление миграций без учета их статуса. Возможные значения:

  • config-storage: удалить миграции в централизованном хранилище etcd, игнорируя статус применения в кластере.
  • cluster: удалить информацию о статусе миграций только в кластере Tarantool.
  • all: выполнить принудительное удаление как в config-storage, так и в cluster.

--ignore-order-violation

Применимо к: apply, publish

Пропустить проверку порядка сценариев миграций перед публикацией.

--ignore-preceding-status

Применимо к: apply

Пропустить проверку статуса предшествующих миграций при применении.

--key STRING

Применимо к: publish

Записать сценарий в ключ etcd /<prefix>/migrations/scenario/<key>. Только для публикации отдельного файла.

--migration STRING

Применимо к: apply, remove, status

Миграция, которую нужно применить, удалить или проверить статус.

--overwrite

Применимо к: publish

Перезаписать существующие ключи миграций в хранилище.

--replicaset STRING

Применимо к: apply, remove, status, stop

Выполнить операцию только в указанном наборе реплик.

--skip-syntax-check

Применимо к: publish

Пропустить проверку синтаксиса перед публикацией.

--tarantool-auth STRING

Применимо к: apply, remove, status, stop

Тип аутентификации, используемый для подключения к экземплярам кластера.

--tarantool-connect-timeout INT

Применимо к: apply, remove, status, stop

Время ожидания подключения к экземплярам кластера Tarantool в секундах. Значение по умолчанию: 3.

--tarantool-password STRING

Применимо к: apply, remove, status, stop

Пароль для подключения к экземплярам кластера.

--tarantool-sslcafile STRING

Применимо к: apply, remove, status, stop

Файл SSL CA для подключения к экземплярам кластера.

--tarantool-sslcertfile STRING

Применимо к: apply, remove, status, stop

Файл SSL-сертификата для подключения к экземплярам кластера.

--tarantool-sslciphers STRING

Применимо к: apply, remove, status, stop

Разделенный двоеточиями список SSL-шифров для подключения к экземплярам кластера.

--tarantool-sslkeyfile STRING

Применимо к: apply, remove, status, stop

Файл SSL-ключа для подключения к экземплярам кластера.

--tarantool-sslpassword STRING

Применимо к: apply, remove, status, stop

Пароль к файлу SSL-ключа для подключения к экземплярам кластера.

--tarantool-sslpasswordfile STRING

Применимо к: apply, remove, status, stop

Файл со списком паролей к файлу SSL-ключа для подключения к экземплярам кластера.

--tarantool-use-ssl

Применимо к: apply, remove, status, stop

Использовать ли SSL для подключения к экземплярам кластера.

--tarantool-username STRING

Применимо к: apply, remove, status, stop

Имя пользователя для подключения к экземплярам кластера Tarantool.