Журнал изменений
В этом документе содержится хронологически упорядоченный список изменений, внесенных в Tarantool DB. Формат журнала изменений основан на документе Keep a Changelog, а версионирование следует правилам Semantic Versioning.
Списки версий и изменений во встроенных модулях и зависимых компонентах приведены в соответствующих GitHub-репозиториях и на сайте Tarantool: Tarantool, TCM, TCF, ATE, crud, expirationd, healthcheck-role, metrics-export-role, vshard, tt.
Список версий Tarantool DB:
- [3.3.0] - 2026-10-20
- [3.2.0] - 2026-07-30
- [3.1.1] - 2026-04-10
- [3.1.0] - 2026-02-09
- [3.0.0] - 2025-09-30
Релиз Tarantool Database 3.3.0 включает обновления платформы, модулей и документации, а также других продуктов на основе Tarantool. Ниже кратко описаны ключевые изменения и требования к обновлению. Подробная информация о наиболее заметных изменениях и новой функциональности в релизе приведена в разделе Tarantool Database 3.3.
Чтобы обновить Tarantool Database 3.2.0 до версии 3.3.0, выполните штатное обновление продукта до версии 3.3.0. При обновлении с простоем после завершения обновления необходимо вызвать команду tt replicaset upgrade для обновления системных спейсов.
-
SDK обновлён с версии gc64-3.7.1-0-r91 до gc64-3.8.1-0-r93.
-
Обновлены версии модулей:
- checks 3.4.0 → 3.4.1 (добавлены аннотации EmmyLua);
- crud 1.7.5 → 1.8.0;
- metrics-export-role 0.4.1 → 0.4.2;
- vshard 0.1.40 → 1.0.0.
-
tt CLI EE обновлён с версии 2.13.0 до 2.15.1.
-
TCM обновлён с версии 1.10.0 до 1.11.1.
-
TCF обновлён с версии 0.12.1 до 0.13.0.
-
ATE обновлён с версии 1.20.1 до 1.22.1.
-
Обновления документации:
- В GitHub-репозиторий
tarantool/tarantooldb-examplesдобавлены запускаемые Docker-примеры: - Добавлены разделы про резервное копирование и восстановление на момент времени (PITR):
- В справочник API модуля crud добавлены методы
crud.atomic_batch(),crud.storage_call()иcrud.storage_call_many(). - Уточнен минимальный набор разрешений в разделе Минимальный набор разрешений в типовых сценариях Tarantool DB.
- В GitHub-репозиторий
Tarantool Enterprise SDK с версии gc64-3.7.1-0-r91 до gc64-3.8.1-0-r93:
- TCM обновлен с версии 1.10.0 до 1.11.1 (см. изменения в Tarantool Cluster Manager (TCM) 1.10.0 → 1.11.1);
- Tarantool обновлен с версии 3.7.1 до 3.8.1 (см. изменения в Tarantool 3.7.1 → 3.8.1);
- tt CLI EE обновлён с версии 2.13.0 до 2.15.1 (см. изменения в tt CLI EE 2.13.0 → 2.15.1).
Исправлено:
- Работа CMake для использования предварительно собранных артефактов EE с gc64.
Этот релиз охватывает версии 3.8.0 и 3.8.1. В версии 3.8.0 в Community Edition (CE) внесено 33 улучшения и исправлено 24 ошибки, в Enterprise Edition (EE) — 7 улучшений и 10 исправлений. В версии 3.8.1 исправлены 2 проблемы в EE, а также внесено 1 улучшение и 15 исправлений в CE.
Добавлено:
-
(Core) Добавлено новое значение
box.cfg.read_only—'unless_bootstrap'. Экземпляр, настроенный таким образом, становится доступным для записи только в том случае, если он выполнил начальную загрузку набора реплик при текущем запуске, и остаётся в режиме только для чтения, если восстановился из локального снимка данных или присоединился к набору реплик, уже прошедшему начальную загрузку. Режим определяется атомарно во время начального вызоваbox.cfg(), поэтому экземпляр никогда не проходит через переходное состояние, доступное для записи. Значение может быть задано только во время начального вызоваbox.cfg(). -
(Core) Если Tarantool запускается без конфигурационного файла и
box.cfg.app_threadsзадаётся из кода приложения, модульexperimental.threadsинициализируется с группой потоков по умолчанию с именемapp. -
(Core) Идентификатор потока теперь можно использовать как цель для функций
callиevalмодуляexperimental.threads. -
(Core) Потоки приложения теперь именуются
<group><id>, где<group>— имя настроенной группы, а<id>— идентификатор потока внутри этой группы. Имена потоков используются в журналах, что упрощает определение потока, записавшего сообщение. Полеthread_id, возвращаемое функциейinfo()Lua-модуляexperimental.threads, теперь содержит идентификатор потока внутри группы, а не глобальный внутренний идентификатор. -
(Core) Добавлена поддержка спецификации XDG Base Directory для файла истории консоли. Поиск файла истории теперь идет в каталогах
$XDG_STATE_HOME/tarantoolи$HOME/.local/state/tarantool, при этом унаследованный путь$HOME/.tarantool_historyимеет приоритет, чтобы обеспечить бесшовную миграцию. При новой установке каталог состояния, соответствующий XDG, создаётся автоматически. -
(Core) Lua-модуль
triggerтеперь доступен в потоках приложения. -
(Core) Lua-модуль
experimental.threadsтеперь можно использовать для вызова потокаtx, когда группы потоков не настроены. -
(Core) Ошибки репликации и сообщения Raft теперь включают расширенное представление узлов (
name/uuid,idиaddr) как для локального, так и для удалённого узла. -
(Core) Метод
box.backup.start()теперь создаёт резервные копии WAL-файлов, которые ротируются в момент вызова. -
(Core) В
box.backup.start()добавлен параметрfrom_vclockдля создания инкрементальных резервных копий. -
(Core) В
box.backup.start()добавлен параметрttl, задающий срок хранения резервных копий. -
(Core) Добавлена опция совместимости
box_backup_default_ttl, управляющая сроком хранения резервных копий по умолчанию. -
(Core) Добавлен API
box.backup.info()для получения информации о выполняемом резервном копировании. -
(Core) Добавлен метод
box.backup.recovery_point.create()для создания точки восстановления. -
(Core) В результат
box.backup.info()добавлено полеrecovery_points, показывающее точки восстановления, находящиеся в резервных WAL-файлах. -
(Core) Добавлена опция конфигурации
session.users.<name>.idle_timeout, закрывающая неактивные IPROTO-соединения пользователя по истечении заданного времени ожидания. -
(Core) В
box.backup.recovery_pointдобавлен менеджер точек восстановления: методыmanager_create(),manager_drop()и таблицаmanagers. Менеджер периодически создаёт точки восстановления с помощью подключаемого бэкенда и доступен до вызоваbox.cfg(). -
(Core) Добавлено поле
box.info.healthс проверками активности (liveness) и готовности (readiness). Приложения могут регистрировать пробы активности с помощьюbox.ctl.liveness_probe(), а роли — предоставлять проверки готовности через метод ролиhealth_check(). Сбои проверок также отображаются вbox.info.config.alerts. -
(Config) В модуль
experimental.config.utils.schemaдобавлена поддержка типа схемыunion, позволяющего значению соответствовать одному из нескольких вариантов схемы. Устаревшие типыstring, numberиnumber, stringудалены — вместо них используйтеunion. -
(Config) Добавлен метод
config:cluster_config(), возвращающий «сырую» конфигурацию кластера после объединения всех источников конфигурации кластера. Значения по умолчанию не применяются, а переменные шаблонов не подставляются. -
(Config) Опции
metrics.includeиmetrics.excludeрасширены: теперь они принимают пользовательские селекторы метрик в дополнение к встроенным группам метрик. -
(Config) Расширен API оповещений: методы
set(),add(),unset()иclear()теперь возвращаютbool, указывающий, было ли внесено изменение. Например,set()возвращаетfalse, если оповещение с таким ключом и сообщением уже существует. Также добавлен методalerts_namespace:get(key)для поиска оповещения по ключу. -
(Config) Добавлена поддержка скалярных значений в
config.context: переменная шаблона теперь может быть задана напрямую строкой, числом или булевым значением. Переменные можно переопределять на любом уровне иерархии (глобальном, группе, наборе реплик, экземпляре). -
(Config) Добавлено журналирование собранной конфигурации экземпляра, когда запуск с декларативной конфигурацией завершается ошибкой после сбора конфигурации и установлен
TT_CONFIG_DEBUG=1. Чувствительные значения маскируются. -
(Config) Добавлена опция конфигурации
sharding.rebalancer_bucket_send_timeout. Поддерживается начиная с vshard 0.1.41. Значение по умолчанию — бесконечность. -
(Config) Опции конфигурации, связанные с памятью, теперь поддерживают человекочитаемые единицы размера:
B,KiB,MiB,GiB,TiBиPiB— как в конфигурационных файлах, так и черезbox.cfg{...}. -
(Config) Опции конфигурации, связанные с длительностью, теперь поддерживают человекочитаемые единицы времени:
ms,s,m,h,d,w,Mиy— как в конфигурационных файлах, так и черезbox.cfg{...}. -
(Config) Модуль
experimental.config.utils.schemaтеперь предоставляет метод:normalize(), преобразующий человекочитаемые значения размера и длительности (например,256MiBили30s) в числовые значения в соответствии с аннотациями схемы. -
(Config) Добавлен метод
config:is_metric_enabled()для проверки, включена ли группа или селектор метрик применённой конфигурациейmetrics.include/metrics.exclude. -
(Config) Добавлена встроенная роль
roles.recovery-point-manager, которая периодически создаёт точки восстановления по всему кластеру с помощью настраиваемого бэкенда (встроенный бэкендnet-replicasetсоздаёт точку на лидере удалённого набора реплик). -
(Metrics) Обновлён подмодуль
metricsдо версии 1.8.1: добавлена фильтрация пользовательских метрик на основе селекторов (metrics.namespace()иmetrics.set_filter(), опции include/exclude вmetrics.cfg()), а также исправленmetrics.cfg{exclude = {'all'}}для исключения пользовательских селекторов метрик. -
(EE, Audit) В события аудита добавлено новое поле
session_id, связанное с сессией. Событиеdisconnectтеперь сообщает в описании длительность сессии и была ли сессия закрыта из-за простоя (idle timeout). -
(EE, Audit) Добавлена группа событий
integrity_checkс событиямиintegrity_check_okиintegrity_check_fail. Событиеintegrity_check_okрегистрируется при успешной проверке целостности файла или буфера данных, аintegrity_check_fail— при неудачной проверке, с указанием имени файла или идентификатора буфера и возникшей ошибки (например, несовпадение хешей или невозможность открыть файл). Событиеintegrity_check_okимеет уровеньVERBOSE, аintegrity_check_fail—ALARM. -
(EE, Core) В «сырые» представления для чтения добавлен метод
count(). -
(EE, Memcs) Добавлена поддержка алгоритмов сжатия zstd и zlib для столбцов MemCS. Ранее был доступен только lz4.
-
(EE, Memcs) Индексы MemCS теперь поддерживают тривиальные изменения без перестроения (например, переименование).
-
(EE, Memcs) Атрибут
aggregatesиндекса MemCS теперь можно изменять. -
(EE, Memcs) Добавлена поддержка REE-кодированных столбцов в skip-индексах MemCS.
Исправлено:
-
(Application server) Ошибка, из-за которой Tarantool мог зависнуть при запуске, когда были настроены потоки приложения (application threads).
-
(Application server) Корневой каталог, из которого загружаются Lua-зависимости, теперь глобальный: задание его с помощью
package.setsearchroot()в tx или в любом из потоков приложения теперь влияет на все потоки приложения и tx. -
(Core) Падение при вызове
box.ctl.wal_sync()доbox.cfg{}. Теперь в этом случае возвращается ошибкаER_UNCONFIGURED. -
(Core) Падение при обновлении с удалением по JSON-пути с терминальным ключом, когда удаляемый ключ в кортеже имел неоптимальную кодировку.
-
(Vinyl) В некоторых случаях vinyl откладывал проверку ограничений полей UPSERT до чтения или сжатия. Нарушающий UPSERT при этом мог быть пропущен без возврата ошибки клиенту. Теперь ограничения проверяются во время UPSERT, когда операции обновления могут изменять столбцы с ограничениями, что соответствует поведению memtx.
-
(Replication) Ошибка упорядочивания при пакетной записи WAL (WAL batching), из-за которой присоединяющаяся реплика могла пропустить строки, записанные мастер-узлом.
-
(Lua) Ошибка в JSON-кодировщике, возникавшая, когда у кодируемого ключа в таблице (map) есть метаметод
__serialize. -
(Http client) Регрессия авторизации по алгоритму Basic на HTTP-прокси или на целевом HTTP(S)-хосте.
-
(SQL) Невозможность одновременно задать порядок сортировки и свойство AUTOINCREMENT для столбцов в табличном ограничении PRIMARY KEY.
-
(SQL) Ошибка, из-за которой идентификатор внешнего поля для внешнего ключа поля терялся после выполнения оператора
ALTER TABLE ADD COLUMN. -
(SQL) Добавлена проверка прав при удалении триггера в SQL. Теперь удалять триггеры для таблицы могут только пользователи с правами 'alter' на эту таблицу.
-
(Config) Ошибка, из-за которой экземпляр, заново прошедший начальную загрузку с пустым каталогом данных, мог запуститься в режиме RW вместе с уже назначенным лидером при
replication.failover = supervisedиreplication.bootstrap_strategy = auto, если у экземпляра было лексикографически минимальное имя в наборе реплик. Кандидат на роль bootstrap-лидера теперь запускается сbox.cfg.read_only = 'unless_bootstrap', поэтому заново присоединившийся экземпляр никогда не проходит через состояние, доступное для записи. -
(Config) Ложная ошибка валидации конфигурации
The vshard-ee/vshard module is not availableпри запуске, возникавшая, когда модульvshardустановлен в настроенныйprocess.work_dir, а процесс запущен из другого каталога, или когда экземпляр без роли шардирования наследует глобальную опцию шардирования, напримерsharding.bucket_count. Доступностьvshardи его минимальная версия теперь проверяются только на экземплярах с настроенной ролью шардирования. -
(Config) Модули, установленные в настроенный
process.work_dir(например, в его каталог.rocks), теперь разрешаются, а относительный путьapp.fileинтерпретируется относительно рабочего каталога даже до первого вызоваbox.cfg(). В частности, роли и приложение, отмеченные тегомearly_load, теперь могут загружаться из рабочего каталога, а значения конфигурации по умолчанию, зависящие от установленной версииvshard, применяются при первом запуске. -
(Config) Недоступный или устаревший модуль
vshardдля настроенной роли шардирования, а также настроенная опция шардирования, требующая более новой версииvshard, теперь сообщаются до первого вызоваbox.cfg(), поэтому некорректно настроенный экземпляр быстро завершается с ошибкой, а не после потенциально длительного восстановления базы данных. -
(Core) Ошибка двойного освобождения памяти при завершении работы, возникавшая при настроенных потоках приложения.
-
(Core) Падение при завершении работы, когда файбер ожидал переменную условия, созданную в потоке приложения.
-
(Core) Ошибка, из-за которой потоки приложения нельзя было вызывать из триггеров завершения работы.
-
(Core) Сбой утверждения в
fiber_signal_reset(), возникавший при инициализации потоков приложения в системах на базе CentOS 7. -
(Core) Ошибка использования памяти после освобождения, когда триггер
space.before_replaceделал yield при отключённом MVCC. -
(Core) Переполнение стека при проверке MsgPack-ввода с глубоко вложенными значениями, содержащими типы-расширения.
-
(Core) Ошибка, из-за которой нулевые значения некорректно отклонялись полями десятичных чисел с фиксированной точкой, когда масштаб был больше или равен точности.
-
(Memtx) Ошибка в изоляции MVCC
read-confirmed, из-за которой операцииdeleteиupdateмогли видеть некорректный кортеж. -
(Replication) Падение, которое могло произойти, когда источник репликации удалялся из
box.cfg.replicationодновременно с достижением узлом максимального размера очереди WAL (задаётсяbox.cfg.wal_queue_max_size). -
(Replication) Исправлена ошибка, из-за которой реплика сразу после переподключения отправляла мастеру устаревшее подтверждение, в результате чего в
box.info.replicationпрогресс vclock реплики на мастер-узле выглядел как движение назад. -
(Replication) Исправлена ошибка, из-за которой реплики сохраняли старое соединение с мастер-узлом и игнорировали изменения параметров репликации.
-
(Replication) Переработана внутренняя логика
election_mode='off'. Продвинутый узел в режимеoffтеперь отображается как'leader'вbox.info.election.state, а такие узлы могут голосовать за узлы с другим режимом выборов. -
(LuaJIT) Бэкпортированы исправления из основной ветки LuaJIT: исправлено некорректное JIT-поведение для FFI-функций с переменным числом аргументов на платформе macOS AArch64.
-
(LuaJIT) Исправлены различные проблемы ABI и соглашений о вызовах FFI для архитектур x64 и AArch64.
-
(LuaJIT) Функция
ipairs_aux()приведена в соответствие с поведением JIT-бэкенда на x86/x64. -
(LuaJIT) Исправлен возврат
-1функциейos.time(). -
(LuaJIT) Исправлены предупреждения UBSan для
table.new(). -
(SQL) Исправлены коллизии идентификаторов подготовленных операторов — новому подготовленному оператору теперь всегда назначается свободный идентификатор.
-
(SQL) Добавлена проверка прав при создании триггера в SQL: теперь создавать триггеры для таблицы могут только пользователи с правами 'alter' на эту таблицу.
-
(SQL) Теперь возникает ошибка, если столбец встречается более одного раза в подзапросе оператора SELECT.
-
(Config) Недоступная (слишком старая) или отсутствующая версия vshard, требуемая конфигурацией шардирования, теперь определяется на этапе валидации конфигурации, а не при применении. Это гарантирует отклонение некорректной конфигурации до применения каких-либо изменений.
-
(Lua, datetime) Исправлен разбор времени с десятичной дробной частью часа или минуты.
-
(Lua, datetime) Исправлено переполнение стека в функции
strptime()при разборе часовых поясов. -
(Lua, pickle) Исправлено аварийное завершение при вызове
pack()с пустой строкой формата или строковым значением для спецификатора формата'a'. -
(EE, Memcs) Ошибка, приводившая к срабатыванию утверждения (в отладочных сборках) или возврату некорректных данных (в релизных сборках) при вызове
ArrowArrayStream::get_next()во время сканирования столбца с использованием обратного итератора. -
(EE, Memcs) Отключено использование макета
null_rleпри включенном сжатии, так как их совместное использование работало некорректно. -
(EE, Replication) Ошибка, из-за которой экземпляры набора реплик не полностью переподключались после перезагрузки конфигурации с новыми параметрами безопасности.
-
(EE, Replication) Ошибка, из-за которой лидер не переподключался к реплике после перезагрузки конфигурации с изменёнными опциями SSL.
-
(EE, Memtx) Падение при включённом Memtx MVCC, когда
replace()завершался ошибкой во время выполняемого обновления спейса. -
(EE, Memcs) Падение и некорректные результаты при открытии Arrow-потока по индексу MemCS без спроецированных столбцов.
-
(EE, Memcs) Сбой восстановления, когда сжатие включено, а спейс пуст.
-
(EE, Memcs) Исправлено, что представления для чтения MemCS отдавали устаревшую длину словаря для dict-кодированных столбцов.
-
(EE, Memcs) Ухудшение коэффициента сжатия и избыточное потребление памяти для сжатых столбцов при вставке строк небольшими пакетами.
-
(EE, Memcs) Возможное повреждение кучи при распаковке LZ4-сжатых блоков столбцов MemCS.
-
(EE, Memcs) Падение при восстановлении спейсов MemCS, когда
compat.box_recovery_triggers_deprecationустановлен в'new'. -
(EE, Memcs) Возможное падение в
ArrowArrayStream::get_next()в отладочных сборках.
Этот релиз охватывает версии 1.7.6 и 1.8.0.
Добавлено:
- Метод
crud.atomic_batch(), который атомарно выполняет простые CRUD-операции (get,insert,replace,update,upsertиdelete) в одном сегменте. - Методы
crud.storage_call()иcrud.storage_call_many()для вызова персистентных хранимых функций на мастер-узле набора реплик, которому принадлежит сегмент.
Изменено:
- Обновлена зависимость
metricsдо версии 1.8.3. - Обновлена зависимость
migrationsдо версии 1.2.1. - Обновлена зависимость
vshardдо версии 0.1.42 (см. изменения в vshard 0.1.40 → 1.0.0).
Исправлено:
- Исправлена ошибка нарушения согласованности во время перебалансировки: запрос мог быть повторен на хранилище, которое еще не владело сегментом, поэтому чтение не возвращало данных, а данные при записи попадали в неправильный набор реплик.
- Исправлено повторное выполнение запросов: теперь запрос повторяется только в том случае, если роутер восстановился после ошибки, и повторная попытка никогда не превышает исходное время ожидания — раньше запрос мог занять в два раза больше времени, чем запрашивалось.
Исправлено:
- Ошибка, из-за которой цели экспорта не останавливались после их удаления из конфигурации роли.
- Ошибка, из-за которой экспортеры Graphite не останавливались после перезагрузки конфигурации, при которой секция
graphiteоставалась неизменной. - Ошибка, из-за которой для использования пустой секции
graphiteтребовалась версия metrics 1.7.0 или выше.
Этот релиз охватывает версии 0.1.41, 0.1.42 и 1.0.0.
Версия 1.0.0 полностью совместима с предыдущими версиями vshard.
Добавлено:
- Улучшена производительность сборки мусора сегментов, особенно для больших сегментов, хранящихся в движке vinyl.
- Бэкенд для менеджера точек восстановления Tarantool: бэкенд
vshard-router. Он позволяет менеджеру периодически создавать согласованные с кластером точки восстановления, которые впоследствии можно использовать для резервного копирования и восстановления всего кластера vshard на определенный момент времени. Новый публичный метод роутераvshard.router.create_cluster_recovery_point()создает точку восстановления на мастер-узле в каждом наборе реплик. - Опция конфигурации хранилища
rebalancer_bucket_send_timeout. Опция задает время ожидания в секундах для отправки одного сегмента во время перебалансировки. Это можно использовать для ограничения времени, в течение которого сегмент может быть недоступен для записи во время его отправки. - Улучшен выбор сегментов балансировщика: теперь балансировщик предпочитает сегменты, в которых нет активных запросов на чтение и запись (RW).
Исправлено:
- Ошибка, из-за которой неудачная инициализация хранилища могла оставить неполную схему и помешать повторным попыткам.
- Ошибка, из-за которой обновление схемы могло завершить Tarantool, если экземпляр переходил в режим только для чтения.
- Ошибка, из-за которой автоматическое повышение мастер-узла после изначально включённого режима только для чтения могло оставить хранилище без схемы vshard.
- Ошибка, из-за которой обратные вызовы
on_master_enableилиon_master_disable, выполняющие передачу управления, могли привести к рассинхронизации роли мастера с состоянием «только для чтения» у экземпляра. - Ошибка, из-за которой ошибки в обратных вызовах
on_master_enableилиon_master_disableмогли помешать фоновым сервисам запуститься или остановиться при смене роли. - Ошибка, из-за которой могли появляться дубли активных сегментов из-за задержки stray-пакетов TCP.
- Ошибка, из-за которой запросы на чтение и запись могли нарушить репликацию после переключения мастер-узла во время перебалансировки.
- Ошибка, при которой переключения мастер-узла во время перебалансировки могли привести к появлению дублей активных сегментов.
Этот релиз охватывает версии 2.14.0, 2.15.0 и 2.15.1.
Добавлено:
- В команде
tt restore planполеrestore_targets.instancesтеперь перечисляет всех участников набора реплик, зафиксированных в резервной копии, с их исходнымuuidэкземпляра. Мастер-узел указан в списке первым. Благодаря этому оркестратор запускаетtt restore applyдля каждого экземпляра отдельно. Все участники поднимаются в одной цепочке восстановления, а не присоединяются к пустому набору реплик, как требуется синхронному кворуму для разблокировки после восстановления. - В команде
tt backup startманифест теперь фиксирует полный состав набора реплик, а не только мастер-узел. Каждый участник указывается со своим числовым идентификатором в кластере. - Команда
tt backup-idдля вывода идентификатора новой резервной копии — текущего времени UTC в формате20060102T150405Z. Идентификатор передаётся как--backup-idв командыtt backup start,uploadиfinalize. Идентификаторы сортируются в порядке создания, поэтому два последовательных вызова никогда не выводят одинаковое значение. - Параметр
--instance-timeoutв командеstatus, ограничивающий время сбора статуса отдельного экземпляра. - Команда
tt restore applyтеперь восстанавливает данные в три отдельных каталога, настраиваемых Tarantool раздельно: параметры--snapshot-dir,--wal-dirи--vinyl-dirзадают по одному каталогу, а параметры-c/--configс--instanceсчитывают их из конфигурации кластера. - Параметр
--dirв командахtt backup startиtt backup finalize, задающий каталог локального архива и фрагмента манифеста вместо$TMPDIR/tt-backup/<backup-id>. - Параметры
--sslkeyfile,--sslcertfile,--sslcafileи--sslciphersв командахtt backup startиtt backup finalizeдля подключения к экземпляру с включённым iproto TLS. - Параметр
--replicasetsв командеtt restore plan, ограничивающий восстановление указанными наборами реплик по их именам из конфигурации кластера. - Команды
tt backup startиtt backup finalizeдля поддержки создания и финализации локальных артефактов резервного копирования. - Команда
tt cluster topologyдля определения топологии кластера из файла, etcd или TbCS с выводом данных в виде таблицы или JSON. - Поддержка вывода информации о последнем манифесте резервной копии из файла или хранилища S3 в команде
tt backup last. - Команда
tt backup verifyдля проверки целостности хранилища резервных копий (в режиме только для чтения): поиск отсутствующих и поврежденных архивов, разрывов в цепочке резервных копий и «сиротствующих» архивов. - Команда
tt backup gcдля очистки хранилища резервных копий на основе правил хранения (retention policy). - Команда планирования резервного копирования
tt backup plan, которая вычисляет последний валидный манифест для запуска процесса резервного копирования (tt backup start). - Команда
tt backup upload, формирующая манифест кластера на основе фрагментов от отдельных шардов и загружающая архивы и манифест в файловое хранилище или S3. - Параметры
--cluster-nameи--environmentдля командtt backup plan,upload,verify,gc,lastиtt restore plan. Параметры определяют поддерево хранилища вида<storage_root>/<cluster_name>/<environment>/, что позволяет размещать в одном хранилище несколько кластеров. - Команда
tt restore planдля планирования восстановления на хосте-менеджере. - Команда
tt restore applyдля подготовки рабочей директории экземпляра на основе цепочки резервных копий. - Команда
\historyвtt connectдля вывода списка последних выполненных команд в интерактивной консоли.
Изменено:
- В команде
tt restore planцелевое время между двумя резервными копиями, у которых изменился состав набора реплик (участник добавлен, удалён или заменён под тем же именем), теперь отклоняется по границе топологии. Предлагаются ближайшие точки восстановления по обе стороны от границы. - В команде
tt restore planполеrestore_targets.rejoinтеперь перечисляет только настроенные экземпляры, для которых в резервной копии нет участника. - В команде
statusдля запросов статуса установлено время ожидания по умолчанию 5 секунд. - В команде
statusзапросы статуса распараллелены для более быстрого сбора. - В команде
tt restore applyпараметр--work-dirбольше не обязателен. - В командах
tt backupиtt restore applyфайл сортировки данных memtx (<signature>.sortdata, Tarantool 3.8+) учитывается как снимок. - В командах
tt log -fиtt tcm log --followвыводятся только завершённые строки. - Команды, работающие с приложением Tarantool 3 (
tt start,tt statusи другие), читают его конфигурацию кластера один раз вместо одного раза на каждый экземпляр. - В
tt stopпредварительная остановка теперь прерывает процессы для обеспечения параллельного завершения работы. - В
tt create vshard_clusterв сгенерированном rockspec теперь зафиксирована версия vshard 0.1.42 вместо 0.1.25. - В
tt backupиз манифеста кластера удалено полеcreation_duration— оно не использовалось и больше не сериализуется.
Исправлено:
- Команда
tt restore applyтеперь отклоняет--patch-uuid, которого нет в восстановленном_clusterна точке восстановления, вместо того чтобы подтвердить восстановление, из которого узел не сможет загрузиться. - Команда
tt restore applyтеперь отклоняет цепочку архивов с пропуском между журналами. Раньше такой пропуск применялся с незаметным разрывом в данных. - В командах
tt connect,tt replicaset,tt cluster topologyиtt backupдобавлены параметры--sslpasswordи--sslpasswordfileдля расшифровки закрытых SSL-ключей, защищённых паролем. - В командах
tt connect,tt replicaset,tt cluster topologyиtt backupдобавлен параметр--connect-timeoutдля ограничения времени установки соединения. Значение по умолчанию: 1 секунда. - В команде
statusисправлено игнорирование ошибок репликации. - В команде
tt backup startзапись архива теперь именуется относительно каталога данных, в котором хранятся файлы соответствующего типа. - В командах
tt cluster publishиtt cluster showисправлено зависание при подключении кhttps://-точке Tarantool Config Storage или etcd с включённым SSL без настроенного клиентского сертификата. - В командах
tt log -fиtt tcm log --followисправлена возможность дублирования строки сразу после ротации журнала и зависание слежения. - В команде
tt log -fисправлено сообщение о недоступном файле журнала: вместо имени файла выводилось%!q(MISSING). - В команде
tt cleanисправлен показ файлов к удалению перед подтверждением; добавлена опция подробного вывода (verbose). - Ошибка, при которой команда
tt migrations applyприменяла миграции к каждому набору реплик независимо. - Ошибка, при которой команда
tt migrations publishмогла опубликовать директорию со сценариями, даже если некоторые файлы в ней были некорректными. - Ошибка в
tt log -f, которая вызывала следующие проблемы:- возможную потерю или дублирование строк при переименовании файла;
- зависание после удаления отслеживаемого каталога логов;
- строки, записанные в момент достижения конца файла, не отображались до следующей операции записи.
Этот релиз охватывает версии 1.11.0 и 1.11.1.
Добавлено:
- (bootstrap) Возможность создавать пользователя с несколькими секретами через поле
initial-settingsв конфигурации, а также задавать описание секрета флагом--secret-descriptionCLI или полемsecret-descriptionвinitial-settings. - (bootstrap) Возможность создавать пользователя с секретом типа
tokenчерез CLI или полеinitial-settingsв конфигурации. - (cli) Команда экспорта конфигурации со скрытыми паролями пользователей (
tcm config exportс флагом--output/-o). - (storage) Настройки кластера
integrity-checkиsignature-private-key-file— проверка подписи и её ключ настраиваются отдельно для каждого кластера или отключаются. - (web) API-конечная точка экспорта конфигурации
/api/config/export. - (web) Страница «Конфигурация TCM» в разделе Tools с возможностью экспорта конфигурации TCM через веб-интерфейс.
- (stateboard) Значок ребалансировщика (rebalancer) и поиск в веб-интерфейсе — узлы-ребалансировщики в больших кластерах можно находить с помощью фильтра
is:rebalancer. - (tqe) Поддержка новой роли TQE (
roles.tqe-storage). - (config) Поддержка создания файлов конфигурации кластера по вложенным путям (например,
cluster/config/creds). - (export) К экспортированной конфигурации добавляется комментарий-предупреждение со списком удалённых учётных данных и полей, которые нужно заполнить перед использованием конфигурации.
- (cluster) Конфигурация статического провайдера, позволяющая создавать кластер TCM из переданной YAML-конфигурации (с ограниченными возможностями).
- (acl) Возможность ограничивать доступ к отдельным файлам конфигурации кластера (Key ACL) для каждого пользователя; права на чтение и запись настраиваются отдельно для каждого файла.
- (bootstrap) Поддержка создания записей Key ACL из
initial-settings.key-aclи экспорта существующих записей Key ACL в эту секцию. - (web) В мастере создания и редактирования кластера добавлен вариант провайдера «from configuration» с редактором кода.
- (bootstrap) Поддержка экспорта кластеров со статическим провайдером, начальной загрузки их конфигураций и создания кластера со статическим провайдером через CLI-команду.
- (cluster) Возможность создания кластера TbCS на втором шаге формы создания кластера после успешной проверки подключения к провайдеру Tarantool.
Изменено:
- (addons) Поддержка аддонов прекращена — инициализация аддонов больше ничего не выполняет.
- (config)
initial-settingsдополнен обязательными ID для пользователей, ролей и записей ACL. - (audit) Протокол журнала аудита теперь выдаёт записи в формате RFC 5424 (поддерживаются datagram- и stream-транспорты).
- (log) Вывод
syslogтеперь выдаёт записи в формате RFC 5424 вместо JSON-полезной нагрузки с префиксом CEE. - (auth) Управление методами аутентификации перенесено из настроек пользователя в отдельный интерфейс администратора Settings → Authentication Methods.
- (export) Расширен список скрываемых полей — имена пользователей хранилища и кластера,
security.bootstrap-password,security.bootstrap-api-tokenиtest.login-credentialsзаменяются заглушками, аsecurity.encryption-key,security.encryption-key-fileиsecurity.signature-private-key-fileне попадают в экспортируемый файл. - (cluster) Для статического кластера удалена кнопка запуска проверки подключения (Connection test).
Исправлено:
- (config) Исправлен разбор YAML-объектов во flow-стиле в
iproto.listen,failover.http.listenиfailover.metrics.exporters. - (auditlog) При нулевом времени ожидания попытки подключения к syslog ограничены двумя секундами — аудируемые запросы больше не ждут системного времени ожидания TCP.
- (cli) При отсутствии параметров команды больше не выводится ошибка — вместо неё показывается справка по команде.
- (config) Ошибки валидации конфигурации теперь выводятся явно, без указания дополнительных путей.
- (stateboard) Для устаревшего (stale) экземпляра больше не показываются проблемы несоответствия версии Tarantool.
- (stateboard) Несоответствие версии Tarantool теперь сообщается по всему кластеру.
- (tqe) Улучшено сообщение об ошибке, возникающее, когда кластер не применил конфигурацию.
- (config) Исправлено сообщение об ошибке проверки целостности конфигурации кластера — теперь в нём указываются имя кластера и причина сбоя проверки.
- (acl) При удалении кластера удаляются связанные с ним записи ACL и Key ACL.
- (acl) При удалении пользователя удаляются связанные с ним записи Key ACL.
- (config) Теперь скрываются поля
ssl-passwordиssl-password-file; SSL-поля в статической конфигурации кластера также скрываются, а в комментарий к экспортированной конфигурации добавлено предупреждение. - (cluster) Статическая конфигурация кластера теперь валидируется — проверяются и формат YAML-файла, и сама конфигурация Tarantool.
- (security) Конфигурации объединяются так же, как в Tarantool, перед отображением в разделе безопасности.
- (explorer) Кнопки записи кортежей и операций над спейсами больше не отображаются, когда правило ACL для спейса даёт доступ только на чтение.
- (tqe) Исправлена проблема на странице метрик TQE, из-за которой выбор метрики не отображал график.
- (metrics) Исправлена ошибка получения метрик кластера, если какая-либо конфигурация находилась в состоянии черновика.
- (cluster) Исправлена проблема, из-за которой конфигурации кластера могли выдаваться в разном порядке.
- (migrations) Исправлена проблема, из-за которой список миграций не обновлялся при переключении на отключённый кластер.
- (workers) Исправлены предупреждения при включённой аутентификации etcd.
- (bootstrap) Исправлена ошибка валидации пароля пользователя при начальной загрузке, вызванная тем, что парольная политика применялась после создания пользователя.
- (migrations) Исправлена проблема, из-за которой показывалось уведомление об успехе, когда одна миграция завершилась успешно, а другая — с ошибкой.
- (stateboard) Исправлена ошибка, из-за которой системные спейсы попадали в статистику сегментов; добавлена сортировка экземпляров и спейсов.
- (stateboard) Исправлено определение версий модулей HTTP и queue.
- (stateboard) Исправлено определение несоответствия версий модулей по всему кластеру, а не внутри каждого набора реплик отдельно.
- (storage) Исправлена ошибка подключения к TLS-кластеру с паролем в файле.
- (storage) Исправлены предупреждения после нажатия кнопки Start All Tarantool.
- (storage) Исправлен мониторинг целостности всех защищённых хранилищ данных.
- (notification) Исправлена ошибка, из-за которой панель ответа исчезала при многократном открытии.
- (cli) Исправлена ошибка использования команды
delete-clusterс коротким флагом-c; флаг для указания ID кластера переименован в-i. - (acl) Улучшено сообщение об ошибке ключа ACL.
- (acl) Исправлена ошибка, из-за которой записи ACL разных типов перезаписывались при добавлении.
- (secret) Исправлена валидация парольной политики.
Добавлено:
- Межкластерные репликаторы поддерживают репликацию спейсов, использующих движок vinyl.
Изменено:
- Репликаторы собраны с использованием OpenSSL 3.5.5.
- Убраны избыточные операции удаления и создания блокировок в хранилище состояния.
- Обновление блокировок репликаторов в хранилище состояния теперь выполняется через механизм keepalive, а не через выдачу новой аренды (lease).
Исправлено:
- При конвертации номера полей операций
updateиupsertи позиции вставки (splice) приводятся к отсчёту с 1. - Исправлен возможный сбой типа split-brain в репликации внутри кластера, вызванный смешиванием синхронных DML с асинхронными обновлениями состояния CDC из событий heartbeat.
- Устранена уязвимость библиотеки gRPC GHSA-HRXH-6V49-42GF.
Узнать больше можно в документации TCF, в разделе TCF 0.13.x.
Этот релиз охватывает версии 1.21.0, 1.21.1, 1.21.2, 1.22.0 и 1.22.1.
Добавлено:
- Поддержка новой роли
tdb_redis_sentinelв ATE. - Поддержка нового способа резервного копирования Tarantool 3.x с поддержкой PITR, включая восстановление PITR для Tarantool 3 с помощью
tt restore. - Сценарии резервного копирования и восстановления для TCS.
- Поддержка статических кластеров TbCS (Tarantool-based Configuration Storage) для TCM 1.11.
- Ожидание завершения репликации перед сменой лидера.
- Поддержка стандартного
logrotateдля координатора аварийного переключения. - Новый тип изменения
relocate_instancesи сценарийplaybooks/relocate_instances.ymlдля миграции экземпляров между серверами. - Проверка для пропуска перераспределения (rebalancing) в плейбуке
playbooks/remove_instances.ymlпри удалении экземпляров. - Новые переменные и начальные настройки для TCM.
- Дополнительные сценарии (
playbooks/tqe/health.ymlи другие) для TQE, гарантирующие корректное обновление и проверку здоровья (health-checks). - Unit- и integration-тесты для генерации инвентаря.
- В CI добавлено сканирование уязвимостей Trivy.
- Поддержка
tt migrationsдля кластеров с TLS-защищённымiproto. - TLS-параметры для подключения TCF к Tarantool.
- В модуле
ttдобавлено определение лидера TbCS черезbox.info.election.leader. - Поддержка параметра
add_replicas, который даёт возможность добавлять и удалять компоненты TCF Gateway и Destination при генерации инвентаря. - Доработано и автоматизировано удаление наборов реплик и экземпляров из кластера через новый сценарий
playbooks/remove_instances.yml. - Параметр
change_componentsв секцииchanges, который добавляет наборы реплик и экземпляры. - Обновление до TQE 3.6.0.
Изменено:
- Коллекция переведена на Ansible 13.8.0 (ansible-core 2.20.7) вместо Ansible 9.7; обновлён поставляемый Docker-образ.
- Базовый образ обновлён до RedOS 8 (используется в сборке и CI) из-за требований новой версии Ansible к Python.
- Минимальная версия Python для работы с коллекцией — 3.12 (ранее 3.11).
Исправлено:
- PITR-восстановление теперь выполняется для каждого экземпляра, записанного в манифесте резервной копии, а не только
для мастер-узла набора реплик. Сценарий
playbooks/restore_pitr.ymlзапускаетtt restore applyс флагом--instance <имя>и сохраняет UUID экземпляра с помощью--patch-uuid, поэтому после восстановления у каждого экземпляра остается прежний идентификатор. Раздельные каталоги данных (snapshot.dir,wal.dir,vinyl.dir) утилитаttтеперь считывает из конфигурации кластера в централизованном хранилище. Отдельно передавать их сценарию больше не требуется. - Перед созданием полной резервной копии через механизм PITR сценарий
playbooks/backup_pitr.ymlтеперь делает свежий снимок данных (tt backup start --snapshot). Благодаря этому базовый снимок полной копии содержит все экземпляры кластера, а не только тот, с которого кластер был запущен изначально. Такой снимок нужен для поэкземплярного восстановления. Поведение управляется новой переменнойtarantool_pitr_backup_snapshot(по умолчаниюtrue) и действует только для полных резервных копий (tarantool_pitr_backup_type: full). - Пропуск раздела с шардированием по умолчанию, если в инвентаре нет шардирования.
- Пропуск пустого значения
security.encryption-keyв конфигурации TCM. - Безопасная схема обновления.
- Доработан плагин для инвентарей TCS.
- Управляющий экземпляр теперь выбирается перед конфигурированием, чтобы избежать сбоя при рендеринге имени.
- Теперь при любой ошибке в кластере (отсутствует активный координатор, ошибка etcd CAS «Compare failed», превышено время ожидания при повышении (promote) экземпляра, и т.д.) делается повторная попытка назначения лидера (
force_leaders). - Доработан инвентарь для CDC: в инвентарь добавлена автогенерация
replication.id, реализована динамическая генерация обработчиков CDC (переменныеshard_per_workerиshards_per_instance). - Доработаны настройки безопасности для TCM.
- Устранено падение
tcf installпри повторном вызовеinstall. - Устранены ошибки в генерации инвентаря для TCF.
- Исправлена обработка Jinja-шаблонов в секции
serversгенератора инвентаря. - Обновлено требование к новой версии Python для дистрибутива Мос.ОС.
- Чтение конфигурации ролей из файла
config.group.roles_cfg(ранее настройки ролей могли применяться некорректно). - Функция редактирования топологии
edit_topology. - Процесс создания резервных копий миграций TDB из хранилища etcd.
- Генератор инвентаря для TCF при работе с etcd и хранилищем на основе Tarantool.
- Проблема с наследованием
replicaset_aliasпри удалении экземпляров (теперь псевдоним передаётся корректно). - Удалённые экземпляры больше не возвращаются в etcd во время процесса очистки.
- Скрипт
postrotateутилитыlogrotateдля приложений Tarantool версии 3. - Логика по умолчанию (
default()) в переменныхtt_config_storage(исправлена инверсия условий). - Шаг подготовки (
prepare) в дистрибутивах RedOS и MosOS для корректной работы сpip3. - Обработка
TT_CONFIG_ETCD_SSL_CA_PATHв systemd роли. - Файл юнита systemd для корректного развёртывания на CentOS 7.
- Добавлены настраиваемые лимиты ресурсов в systemd как альтернатива PAM.
- Добавлена проверка наличия
tarantool_etcd_hostпри отправке конфигурации в etcd. - Резервное копирование префиксов etcd для TCF.
- Определение
cluster_nameиcartridge_app_nameв генераторе инвентаря. - Удаление последнего сервера из зоны.
- Добавлен параметр
resolve_jinjaвtcm_helpersдля корректного разрешения ссылок на константы вinitial_clusters. - TLS-настройки etcd для
initial_clustersтеперь выводятся из схемы; добавлена переменнаяtcm_etcd_schema. - В генератор инвентаря добавлены параметры
tcm_cluster_display_nameиtcm_cluster_id. - Генератор корректно выставляет порты.
- Флаги
username/passwordвtt. - Параметр
restart_instanceдляinstall_3_0на работающем кластере. cdc_java_extra_argumentsтеперь корректно размещается перед-jar.
Узнать больше можно в документации ATE, в разделе ATE 1.22.
Релиз Tarantool Database 3.2.0 включает обновления платформы, модулей и документации, а также других продуктов на основе Tarantool. Ниже кратко описаны ключевые изменения и требования к обновлению. Подробная информация о наиболее заметных изменениях и новой функциональности в релизе приведена в разделе Tarantool Database 3.2.
Чтобы обновить Tarantool Database 3.1.1 до версии 3.2.0, выполните штатное обновление продукта до версии 3.2.0. При обновлении с простоем после завершения обновления необходимо вызвать команду tt replicaset upgrade для обновления системных спейсов.
При обновлении Tarantool DB до версии 3.2.0 Tarantool Cluster Manager (TCM) обновляется до версии 1.10.0. Переход на эту версию требует дополнительных шагов при обновлении Tarantool DB. Соответствующая инструкция по обновлению Tarantool DB вместе с TCM приведена в разделе Обновление Tarantool Database.
-
SDK обновлён до версии gc64-3.7.1-0-r91:
- tt CLI обновлён до версии EE 2.13.0. Исправлена ошибка парсинга CSV-файлов, при которой возникало сообщение
"can't parse any to map or array", если данные не соответствовали ожидаемому формату.
- tt CLI обновлён до версии EE 2.13.0. Исправлена ошибка парсинга CSV-файлов, при которой возникало сообщение
-
TCM обновлён до версии 1.10.0.
-
TCF обновлён до версии 0.12.1.
-
Обновлены модули:
- cooler 0.1.3;
- crud 1.7.5;
- metrics-export-role 0.4.1.
-
ATE обновлён до версии 1.20.1.
-
Обновления документации:
- В GitHub-репозиторий
tarantool/tarantooldb-examplesдобавлен запускаемый пример Нагрев и охлаждение данных: использование кэша кортежей vinyl, который демонстрирует работу кэша кортежей vinyl и его влияние на производительность чтения. - Добавлены рекомендации по настройке охлаждения и нагрева данных на vinyl и новый пример.
- Добавлен справочник методов CRUD. В частности, в справочнике описан метод
crud.locate(), доступный с 3.2.0. - Добавлен раздел документации про модель безопасности TDB и минимальные разрешения для типовых сценариев работы с TDB.
- Вынесены в отдельные разделы рекомендации и требования к работе с TDB, а также известные ограничения в продукте. Описанные ограничения распространяются на всю линейку версий TDB 3.x.
- В GitHub-репозиторий
Tarantool Enterprise SDK обновлён до версии gc64-3.7.1-0-r91:
vshardобновлён до 0.1.33. Повышена отказоустойчивость vshard:routerиstorageтеперь могут выбрать новый мастер-узел, даже если прежний мастер-узел перестал отвечать.tt-eeобновлён до 2.13.0. Исправлен импорт из CSV —importбольше не приводит к ошибке при разборе типаanyвmap/array.
Добавлено:
-
restore: добавлен псевдонимetcd-restore. -
bootstrap: поддержка полной настройки в YAML-конфигурации при первичной инициализации (bootstrap), включая кластеры, политики безопасности и права пользователей (в том числе конфигурацию LDAP, парольные политики, списки управления доступом ACL) вinitial-settings. При создании Default Cluster запрещено использовать ID00000000-0000-0000-0000-000000000000вinitial-settings.clusters. Если этот ID необходим — укажитеdefault-cluster: false, иначе кластер не будет распознан TCM. -
stateboard: кольцевая диаграмма статусов здоровья узлов-обработчиков Tarantool DB (healthy/degraded/unhealthy/stale). -
config: валидация YAML-конфигурации TCM, ошибки содержат путь до проблемного поля. -
auth: принудительная смена пароля администратора при первом входе после первичной инициализации. Опцию можно включить тремя способами: через переменную окруженияTCM_SECURITY_REQUIRE_BOOTSTRAP_PASSWORD_CHANGE=true, через параметр командной строки--security.require-bootstrap-password-change, либо в YAML-конфигурации TCM:security:require-bootstrap-password-change: true -
user: создание пользователя с заданным ID вinitial-settings.
Изменено:
-
config: синхронизированыtcm.example.ymlи выводtcm generate-config. В генерируемую конфигурацию добавлен разделinitial-settingsс примерами параметров кластеров, пользователей, ролей и журнала аудита. -
stateboard: улучшена обработка состояния stale: теперь stale-статусы приоритетнее ошибок, они отображаются какwarningsи не влияют на счётчики ошибок и предупреждений на родительских элементах. -
stateboard: при статусеrunningцвет наличия ошибок изменён с красного на оранжевый, ошибки перенесены во вкладку Warnings. -
user: при удалении пользователя удаляются права, связанные с ACL (Access Control List). -
storage: изменён формат хранения подписи объектов TCM. Если вы обновляетесь с предыдущих версий на 1.10.0, необходимо один раз выполнить переподписание данных в хранилище на основе Tarantool (или etcd) новым ключом, иначе TCM не запустится из‑за ошибки верификации подписи:./tarantool-cluster-manager resign-data -
addon: полеaddonстало опциональным. -
backup/restore: командыbackup/restoreсняты с поддержки. Для резервного копирования используйтеexport config, затем запускайте TCM с экспортированной конфигурацией.
Исправлено:
explorer: исправлена ошибка“cluster not found”при открытии спейса без индекса.stateboard: диаграмма миграций использует только последнюю сохранённую миграцию и корректно окрашивается по её статусу.cluster: исправлено обнаружение кластера после старта на другом узле хранилища и перезапуска.cluster: исправлена ошибка при отключении кластера.bootstrap: исправлена валидация при создании сущностей в секции конфигурацииinitial-settings.cluster: скорректировано поведение с ключомdraftпри выполненииresign-data.config: исправлена ошибка при наличии пустых полей в конфигурации.storage: исправлен фильтр прав при редактировании.storage: добавлена защита целостности — при несанкционированных изменениях на узле хранилища TCM блокируется и показывает ошибку.storage: добавлен декодер паролей для безопасной аутентификации при операциях с кластером.
Исправлено:
- Ошибка в модуле миграций, при которой статус миграции не записывался или не отображался корректно после неудачной попытки. Исправление обеспечивает точное отслеживание состояния и надежность рабочего процесса.
- Отсутствие статуса миграции, примененной после ошибки в процессе миграции.
Добавлено:
- Возможность подключения к экземплярам кластера через
iproto.listen.uri. - Создание пользователей и ролей при первом запуске TCM через поле
initial-settingsв конфигурации (роли могут создаваться с ID и без). - Добавление индикаторов роутера для ошибок vshard во вкладке Stateboard.
Исправлено:
- Ошибка подключения к хранилищу миграций, если конфигурации кластера и TCM находятся в разных хранилищах.
- Некорректное применение пароля при тестировании подключения (Test connection) при создании или обновлении кластера.
Добавлено:
bucket_map_cache_ttl— поле в конфигурации Destination, позволяющее настраивать время жизни кэша карты сегментов (bucket map) в роутере.router_quorumиstorage_quorum_per_replicaset— новые параметры в конфигурации TCF-координатора, позволяющие настраивать кворумы для маршрутизации и хранения.
Исправлено:
- Исправлен запуск шардированной группы с несколькими экземплярами
gateway: ранее группа экземпляров не стартовала без префикса хранилища состояния (state provider). - В конфигурации etcd для репликаторов больше не требуется указывать схему в адресе хоста (например,
http://илиhttps://). - Кеширование карты сегментов в роутере. По умолчанию время жизни кэша — 10 секунд.
- Возможный бесконечный цикл при обработке пользовательских ограничений.
- Ложные предупреждения при захвате флага
/coordinator/lock. Предупреждения стали более информативными и не вводят в заблуждение. - Избыточный запрос на получение UUID набора реплик при подключении репликаторов к хранилищу конфигурации на основе Tarantool.
Узнать больше можно в документации TCF, в разделе TCF 0.12.0.
Добавлено:
- Метод cooler.locate() — определяет текущее местоположение данных по первичному ключу (memtx или vinyl).
- Сводные метрики для спейсов под архивацию данных (memtx/vinyl):
cooler_memtx_bytes_total,cooler_vinyl_bytes_total,cooler_memtx_tuples_totalиcooler_vinyl_tuples_total. - Поле
memtx_bytes_count— размер memtx-спейса в байтах в выводе cooler.info().
Исправлено:
- Проблема со спейсом
_cool_for_delete, который теперь создается как временный. Это предотвращает возникновение проблем типа split-brain при охлаждении синхронных спейсов. Термин split-brain в контексте распределенных систем означает ситуацию, когда узлы системы теряют согласованность и начинают работать с разными данными. В этом случае временный спейс решает эту проблему. - Некорректная регистрация шардированного ключа для спейсов vinyl в шардированных окружениях.
Добавлено:
- В системные спейсы
crud.schemaдобавлен спейс_recovery_point, представленный в предстоящей версии Tarantool 3.8. - Метод crud.locate() — позволяет определить, в каком движке (
memtxилиvinyl) находится кортеж по первичному ключу. Работает только при использовании модуляcooler. - Поддержка опций
mode,balance,prefer_replicaиrequest_timeoutв методеcrud.len().
Исправлено:
- Операции чтения (
get,select,pairs,count,min,max) теперь могут выполняться через работоспособные реплики, когда все мастер-узлы кластера недоступны. - Добавлена метрика
tnt_crud_storage_nil_bucket_id_compat_totalдля отслеживания операций, выполненных безbucket_refв режиме совместимости со старыми роутерами. - Обеспечена совместимость с роутерами версий ниже 1.7.0, когда в запросах
get,updateиdeleteнулевойbucket_id. Теперь хранилище пропускает обращение к сегментам и регистрирует предупреждение об ограничении скорости обработки данных, указывающее на снижение безопасности перебалансировки при обновлении без простоя.
Добавлено:
- Реализована возможность экспорта метрик в формате Graphite.
- Добавлена поддержка протокола Graphite.
Исправлено:
- Убрана строгая зависимость от
metrics1.7.0, даже если Graphite не используется. Актуально для версий Tarantool до 3.7.0, где модульmetricsещё не полностью поддерживает Graphite.
SDK обновлён до версии gc64-3.6.2-0-r89:
- tt CLI обновлён до версии EE 2.12.0. TCM обновлён до версии 1.8.0. TCF обновлён до версии 0.11.3.
- Обновлены модули:
- crud 1.7.4;
- vshard 0.1.40.
- Изменена документация:
- Исправлена ошибка в примере
dictionary_example.md: удалена дублирующаяся запись с ID=2. - В конфигурационные файлы TCM во всех примерах добавлена поддержка параметра
tuples.
- Исправлена ошибка в примере
SDK обновлён до версии 3.6.1-0-r86:
- tt CLI обновлён до версии EE 2.11.1. TCM обновлён до версии 1.6.0. TCF обновлён до версии 0.11.0.
- Добавлены модули:
- healthcheck-role 0.1.1.
- Обновлены модули:
- crud 1.7.3;
- dictionary 2.3.5;
- metrics-export-role 0.3.2;
- vshard 0.1.39.
- Доработана документация:
- Добавлен раздел про обновление схемы БД в кластере.
- Добавлен раздел про понижение версии схемы БД в кластере.
- Добавлен пример по обновлению схемы через tt CLI.
- Добавлен пример работы со словарями через пользователя с ограниченными правами
и использованием команд
tt exportиtt import. - Добавлен пример реализации узлов-обработчиков (workers) на языке Go.
- Обновлен дашборд для Grafana:
- Добавлена панель
Tarantool schema needs upgrade status. - Добавлены панели
Safe mode statusиRouter cache last clearedдля CRUD.
- Добавлена панель
- Добавлены модули:
- cooler 0.1.1.
- Обновлены модули:
- crud 1.6.1;
- expirationd 1.7.0;
- vshard 0.1.36.
- SDK обновлен до версии 3.4.1-0-r70:
- tt CLI обновлён до версии EE 2.10.1.
- TCM обновлен до версии 1.5.0.
- TCF обновлен до версии 0.9.1.
- Доработана документация:
- Добавлен пример использования спейсов
vinyl. - Добавлен пример по охлаждению данных с помощью библиотеки
cooler. - Добавлены практические рекомендации по настройке параметров движка
vinyl. - Пример
vinylобновлён под новыйcrudAPI с заполнениемbucket_id. - Обновлены дашборды и примеры мониторинга (Grafana, Prometheus).
- Уточнена документация и исправлены примеры конфигурации для роли метрик (
metrics-export). - Добавлена документация по мониторингу.
- Добавлены рекомендации по работе с
space upgrade. - Добавлены рекомендации по дедупликации неидемпотентных запросов.
- Добавлен справочник для модуля
cooler. - Добавлено руководство по обновлению с Tarantool DB 2.x на версию 3.0.
- Добавлен пример использования спейсов