Обновление модуля crud | Tarantool
Документация на русском языке
поддерживается сообществом
Администрирование Обновление Обновление модуля crud

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

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

Примечание

Требования к минимальному набору разрешений для работы CRUD см. в разделе Чтение и запись данных через модуль CRUD.

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

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

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

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

tarantool> _crud.rebalance_safe_mode_status()

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

Примечание

Метрика безопасного режима доступна только при установленном модуле metrics.

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

  1. Дождаться завершения миграции бакетов (ребалансировки vshard).

  2. На каждом роутере выполнить очистку кэша маршрутизации CRUD:

    crud.rebalance.router_cache_clear()
    
  3. На каждом экземпляре хранилища выполнить отключение безопасного режима через Storage API _crud. Команду необходимо выполнить на всех экземплярах хранилища, включая реплики:

    _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 были отозваны из‑за несовместимости Storage API с роутерами более старых версий. Обновляться на эти версии не рекомендуется. При обновлении с версии ниже 1.7.0 следует переходить сразу на 1.7.5+, не используя 1.7.0–1.7.4 как промежуточные версии.

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

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

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

Нашли ответ на свой вопрос?
Обратная связь