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

Обновление модуля crud

Модуль crud используется вместе с vshard в шардированных кластерах. Обновление crud имеет ограничение совместимости, введённое в версии 1.7.0.

Ограничение совместимости при обновлении

Начиная с версии crud 1.7.0, модуль автоматически переводит кластер в безопасный режим при запуске ребалансировки vshard. Безопасный режим предотвращает запись данных в неправильный набор реплик во время ребалансировки.

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

  • Безопасный режим включается независимо на каждом экземпляре хранилища (storage), участвующем в ребалансировке;
  • Безопасный режим не отключается автоматически после завершения ребалансировки и требует явного отключения.

Проверить, включён ли безопасный режим на узле хранилища:

tarantool> _crud.rebalance_safe_mode_status()

или по метрике tnt_crud_storage_safe_mode_enabled.

Чтобы вернуться к обычному режиму после ребалансировки:

  1. Дождаться завершения миграции бакетов (ребалансировки vshard).
  2. На каждом роутере выполнить очистку кэша маршрутизации CRUD:
crud.rebalance.router_cache_clear()
  1. На каждом экземпляре хранилища выполнить отключение безопасного режима через Storage API _crud:
  • команду необходимо выполнить на всех storage, включая реплики:
    _crud.rebalance_safe_mode_disable()

Запросы к спейсам на движке vinyl всегда выполняются в безопасном режиме независимо от текущего статуса безопасного режима.

При обновлении с версии crud ниже 1.7.0 до версии 1.7.0 и выше действует следующее ограничение совместимости:

В версиях CRUD 1.7.0–1.7.4 хранилища требуют bucket_id. Поэтому операции get, update и delete, отправленные роутером с CRUD ниже 1.7.0, завершаются ошибкой. Остальные операции (insert, replace, upsert, select, count) работают в обычном режиме.

Начиная с CRUD 1.7.5 хранилища поддерживают работу с роутерами ниже 1.7.0 в режиме совместимости. Если bucket_id отсутствует, хранилище выполняет операцию без bucket ref, записывает предупреждение в журнал, а при наличии модуля metrics также увеличивают tnt_crud_storage_nil_bucket_id_compat_total.

На хранилищах (storage) с CRUD 1.7.5+, пока все роутеры не обновлены до CRUD 1.7.0 или выше, операции get, update и delete выполняются в режиме совместимости со сниженной безопасностью ребалансировки. Хранилища записывают предупреждение в журнал, а при наличии модуля metrics также увеличивают tnt_crud_storage_nil_bucket_id_compat_total.

Порядок обновления

При обновлении crud соблюдайте следующий порядок:

  • При обновлении crud до версий ниже 1.7.0 или до версии начиная с 1.7.5 используйте стандартный порядок обновления: сначала хранилища, затем роутеры:

    1. Обновление узлов-реплик хранилища
    2. Обновление мастер-узлов хранилища
    3. Обновление роутеров
  • При переходе через версии crud 1.7.0–1.7.4 обновляйте сначала роутеры, затем хранилища. Не выполняйте ребалансировку до завершения обновления:

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

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